File: EVOLUTION

package info (click to toggle)
freewheeling 0.5.2a-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 1,928 kB
  • ctags: 2,218
  • sloc: cpp: 17,507; sh: 6,505; makefile: 70
file content (183 lines) | stat: -rwxr-xr-x 5,814 bytes parent folder | download
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