1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183
|
Focus
-----
-- Expand scene functionality
- Multiple loaded scenes
- Triggering scenes, fading between scenes, managing several pulses
- Consider how this will work once Elastin is implemented
- Drag loops from browser to triggers
-- Store which patches were active in creating a loop
Then we can go back to the right patch if we want to replace the
loop with our own live content-- that could be a function, to mute a
loop and activate the loop's patch & input settings
** Add patchbank- patchbanks in reverse order
-- Loop volume adjust ( clickdrag on bar )
-- Last *touched* loop faders ( not just last rec loop faders)
-- Audio input 'humanized' guidance of flock dynamics
'flock of loops'...
for ex match loop amp envelope to audio input envelope and cause those
loops to flock louder.
* Integrating community needs
* Web-based collaboration-- simple fileshare for now
* WHS Apps- Dynamics control (safe space)-- mute..
Undo layers in overdub? (Copy loop function)...
tricky-- has to wait for FadeOut_Input then copy then reenable
FadeIn- would need to be coordinated by nonRT events
RT adjustable feedback for overdub
Auto grab loops
Trigger/grab from dance mat
* Open Inputs- a place to engage community?
To-Do
-----
* Loop deleted while renaming- segfault
* Disable erase while saving?
* No instances available for loading large scenes-- perhaps not enough
time given to allocate free instances
* Possible issue with race condition when changing name pointer- if vid uses
pointer while name is in flux
Expansions
----------
* Better video tutorials
* Multiple audio outputs with routing (cue mixes, etc)
* Muting input monitors
* Networked FreeWheeling
* Better patch, loop & scene browsing with associative Memory
- Multiple scenes of playing loops in memory/disk
- Better encapsulation of scenes so multiple can coexist
with same loopids in one session.. so loop commands will now take
sceneid and loopid?
- better browsing (OK)
- paging thru browse
- keyrepeat thru browse
- clickable menus to replace help
- loop tray design
- Possibility to remap scene loops to a fixed range
- Implement shot functionality (shot will stop Play/Rec after one shot)--
This may need a new event- EndShotEvent.. no, we should keep the processor
going, only it is stopped
- FWEELIN INTRO - Four corners colored circle four directions pies
seasons spinning, in the center a spirit improviser.
Testing
-------
- Test old & new loops save/load/overdub with new Jump() and PulseSync methods
Fixes
-----
- Round corners of tray
- Shrink stack fix
- Wraparound stripe bug-- markers either need to be deleted in the
fixedlen recordprocessor for audio input, or we need to skip to the right
marker when starting a record late, because the timing is off
- Rapid changes with preprocess() calls can cause crackles-- suspect it is
because dopreprocess() runs in nonRT and gets interrupted by RT.
Fix so dopreprocess() is queued and always runs in RT.
- Auto video refresh on-time with critical events
Different refresh rate for when window is out-of-focus
- Segfault- when exiting during scene loading
- Race conditions in RootProcessor when adding/removing children-- change layout to fixed array
with swappable pointer
- In config if range var declared but only lower bound given, no warning or
error.
** Threading Areas of Weakness
- Mutex for LoopManager- to prevent concurrent accesses to loops
* Segfaults/exits:
if Jack server stopped midsession
No free time markers- try making 9 meters
SYNCREC: Previous markers in mem unknown
Sometimes on memmgr exit
More graceful error handling on PREALLOCATED: No instances available
Code Cleanup
------------
- Move StripeBlockManager functionality to an Event
- Move RP cleanup thread to event functionality?
BroadcastEvent RemoveProcessorEvent perhaps
Other Possible Directions
-------------------------
- ** Add suspend for BlockManagers (save/load)
- ** Bug- autosave can interfere with saving scenes
- ** Bug- segfault on overdub? with blocksize < 64- need to adjust smoothlen
- ** No way to assign loaded loop to a pulse if it isn't already
- OGG based undo of multiple overdubs
- Slide-trigger-volume (fading)
- Trigger-loop "retrigger" & "position"
or
Retrigger-loop "position"
- Retrigger-pulse "position"
- Nudge-position
* Pattern match for finding loops in playing- perhaps pattern match to
find loops based on pulse tap- perhaps use labio to extract onsets/
features and then pattern match from that
* Extract velocity stats from MIDI- std deviation
* New smarter RT system that isolates RT processes with 'states'
* Event sequencer for giving timedelayed commands
(Way to queue events and have a way to fire off a whole queue)
* Generic ramp function? for sliding variables and calling events
* Events
SetRecord
SetSelection, AddToSelection- then make commands work w/ selections
* Config
better configurability of multiple inputs, recording from different ins
colors- configure mid, optional calc shadow, hilight and bright
* CoreDSP
redesign RootProcessor with clearer signal chain support-
needed for LADSPA routing
move limiter into its own processor
* Debug
* Mem
replace sprintf with snprintf to avoid mem overwrite on big tmp strings
* Timing
* High latency reproduction of loop timing seems to be off-
because loop endpts can occur only at fragment boundary?
* Time Markers don't know about multiple meters
* Threads
-RTInterrupt active event dispatch (large fragmentsize) (FIXED?)
-Possible glitch when emptying event queue- non-atomic
also with Preallocated queues
|