Fixed sustain behavior.
[epichord.git] / TODO
blob18d1828a9cf641a1f6ef474998c8e6447039cf14
1 short list of features not yet implemented
3 keyboard input
4   allow remapping
5 the rest of the mouse commands
6   select many notes/patterns
7   delete all selected
8   move all selected
9   copy all selected
10   split/join
11   no overlapping patterns
12 the event editor
13   mouse commands
14   display
15   menu
16 import midi file
17 record midi input
18 undo and redo
19 graphical upgrades
20   horizontal rule
21   allow disconnected noteon, noteoffs
22   pattern xray
23 trackselect in piano roll
24   toggle tracks shown
25   switch edited track
26 jack transport
27 lash
31 big list of features
34 create seqpat (with new blank pattern)
35 create note
36 create event
37 delete seqpat
38 delete note
39 delete event
40 move note
41 move seqpat
42 resize seqpat
43 resize note
44 select seqpat
45 select note
46 select event
47 shift select seqpat
48 shift select note
49 shift select event
50 box select seqpat
51 box select note
52 box select event
53 change event value
54 add track
55 remove track
57 copy selected notes
58 copy selected events
59 soft copy selected seqpats
60 hard copy selected seqpats
61 uniquify seqpat
62 split seqpat in half
63 join two seqpats
65 save textfile
66 load textfile
67 save type 1 standard midi file
68 import type 0/1 standard midi file
70 set loop start
71 set loop end
72 set song position
74 play notes on virtual keyboard
75 play notes on real keyboard
77 x zoom in pattern editor or song editor
79 options
80 bpm
81 beats per measure
82 measures per phrase
83 metronome lead in
84 always hard copy
85 record pass thru
86 play note insertion
87 play note selection
88 follow playback
89 quantize note off
90 record modes
91 merge - insert notes into current track
92 overwrite - erase all notes before inserting into current track
93 layer - on each loop create new track (muted)
94 new - merge into new track created at time of recording
96 toggle display of tracks on piano roll
98 keyboard shortcuts
99 ctrl-c copy
100 ctrl-v paste
101 ctrl-z undo
102 ctrl-y redo
103 ctrl-a select all
104 ctrl-s save
105 ctrl-o load
107 graphics
109 change pattern color
110 timeline shows correct indicator
111 trackmodule has updated info
112 toggle buttons show correct state
113 piano keyboard highlights keys
117 save records the following
118 track name
119 track vol
120 track pan
121 track mute
122 track solo
123 track port
124 track chan
125 track prog
126 loop positions
127 loop flag
128 keyboard flag
129 song title
130 song author
131 song info
132 seqpats
133 patterns
134 arranger scroll positions
135 seqpat event editor controller
136 beats per measure
137 measures per phrase
139 metronome lead-in
140 always hard copy
141 auto track name
142 record pass through
143 play note insertion
144 play note selection
145 follow playback
146 play note selection
147 quantize note off
148 record mode
154 immediate features to be implemented
157 volume and pan controls dont work
158 change time signature and bars per measure
160 select many patterns
161 select many notes
164 what i did instead (changes since last)
166 saveload restores/clears title/author/info
167 vol pan mute solo widgets work
168 mute and solo works
169 autohell
172 BUGS
174 if events are dispatched out of order, they are put in order by playing the
175 rest of the notes after the first-out-of-order at the end of the buffer, causing
176 an error on the order of 1024/48000 = 21 ms. to fix it, the events must be
177 dispatched in time order. solution is to enqueue and sort before dispatch.
178 the above workaround was done because if you try to dispatch them out of order
179 jack crashes. this occurs when events occur near each other but not exactly
180 at the same time, or at high bpm.
182 the pattern drag sound bug is that when a pattern is moved, note offs do not
183 occur. to fix it, when dragging a pattern you must dispatch note offs in one
184 way or another.
186 the hand doesnt point directly at notches 1 and 3 if they are numbered 0 1 2 3
187 for each beat.
189 there is a 1 frame error caused by a kludge in the sequencer mechanism.
190 there are cases where a midi event is to be dispatched on the first 
191 frame of the buffer, but also on the frame right after the last, i.e. 
192 index 1024 in a frame buffer of 1024 frames. When a event appears to be
193 destined for 1024, i dispatch at 1023 rather than waiting until next 
194 process. a real solution would check the sequencer play mechanism and 
195 its interation with the backend's real time to see why its considering 
196 playing these notes.