-
Notifications
You must be signed in to change notification settings - Fork 4
/
TODO
233 lines (180 loc) · 9.13 KB
/
TODO
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
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
[ ] Fix trigger offset bug!
I think that will involve adding "adjust_offset" stuff back to move_selected_triggers_to()
See seq24 sequence.cpp and seq42 track.cpp
Then moving a trigger should adjust the offset (while it currently doesn't).
May need to add back other offset adjusting stuff from seq24 too....
[ ] Add Randomize function to seqedit
Has options:
+/- 1
+/- 2
...
+/- 16
Adds a random value from the specified range to the velocity or CC value of all selected events.
[ ] Add new song function to create triggers between the left and right markers for the patterns that currently have their play flag on.
[ ] Add to track popup menu in song editor:
insert row
delete row (if row isn't empty, deletes the track too)
[ ] In trigger popup menu, if the trigger has a pattern, add an option to set the pattern's play flag (if it's off) or unset it (if on). Only show the option if not in song mode.
[ ] Get rid of configurable keys in Options dialog... hard code the few
that are currently configurable.
F1 play (if already playing, stop and restart)
F2 stop
F3 bpm down
F4 bpm up
F5 song mode
F6 live mode
F7 loop on
F8 loop off
[ ] Change bpm from int to float... and allow one decimal place in UI (134.5 for example)
[ ] Show midi bus and channel in sequence list.
[ ] Clean up is_pattern_playing stuff and consolidate global key (start, stop, loop, bpm, etc) handling.
[ ] Add to Edit menu a new action "Delete all untriggered sequences"
[ ] Add to Edit menu a new action "Pack track list" (shifts all active tracks
to the top of the track list). After this change, change the file save
format such that each active track in the file includes an index int.
Loading a file should put each track back in the same slot (allowing for
empty slots b/w tracks).
[ ] Enhance perform-level undo/redo such that all perform/track level changes
can be undone/redone: adding a track, cutting/copying/pasting a track, editing a track.
This would require a more sophisticated approach.
Current approach pushes state of all triggers for all active tracks onto an undo stack.
Instead would need to create some sort of "action memento" objects that contain enough
infomation to be able to call the appropriate methods to undo the last change.
[ ] Get rid of all the "dirty" stuff. Instead make perform keep track
of the open windows. It can then notify them whenever a specific track
or sequence has changed. Perform could also maintain a pointer to the
background sequence (for seqedit and seqroll), and be sure to set it to
null if the sequence is deleted.
[ ] Add m_modified bool to perform (and possibly also sequence and track).
Set to True as soon as anything is modified.
Add an is_modified() method that returns m_modified.
Update mainwnd is_modified() to take perform's is_modified() into account.
Alternatively (if undo/redo is made more robust).... ditch all the modified stuff and look at the size of the
undo stack to determine whether or not save dialog is needed.
[ ] Add option to Load dialog and method that appends the tracks of a file to the current
performance. Handy for copying sequences from another song. You could even have a
file that contains re-usable sequences (like various drum rolls or CC patterns).
[X] Don't switch song/live mode automatically anymore. Show mode in main window (with a toggle button).
[x] Add a transpose flag to track (True by default) and a global transpose value to the song/perf. When playing, use the global transpose value for tracks that enable transposition. Add some UI (a dropdown in the main window... and maybe keyboard shortcuts).
[x] Add a song level function to apply the current transpose value...
Iterates thru all transposable tracks and changes the pitch values for all patterns... finally sets global transpose value to 0.
[x] Add swing functionality? See swing-ideas.txt
[x] Add to Select menu (along with All Notes and Inverse Notes):
Even 1/4 Notes
Odd 1/4 Notes
Even 1/8 Notes
Odd 1/8 Notes
Even 1/16 Notes
Odd 1/16 Notes
<0.0.1>
[x] Refactor top-level window (mainwnd) so that it contains the song
(aka "performance") editor (perfedit) instead of the pattern grid (mainwid).
[x] Removed a lot of live looping stuff (like mute groups, queuing, etc)
[x] Added loop toggle kb shortcut
[x] Refactor data structures and UI such that a performance has a list
of "tracks". Split some of the seq24 sequence class out into track.
Track should have a midi port and channel, name, mute status, and a list of
sequences. Sequence should no longer have midi port and channel; instead
it should send midi data to its track's port and channel.
Will also need to update file saving and loading.
[x] Change seqedit such that there is a button (use midi.xpm) that opens the
track edit window
[x] Add function to trigger menu to copy an existing sequence (from any track)
[x] Add function to mute all tracks, unmute all tracks, and toggle/invert
the mute status of all tracks. (see existing perform::mute_all_tracks)
[x] Add to Edit menu a new action "View sequence list" which opens a new window
with a TreeView widget of all tracks. Each track can be expanded to list
all of the sequences. Right-clicking a sequence pops up a menu with
options to Edit and Delete. When Delete is selected, check if the sequence
is assigned to at least one trigger... if so, ask the user if they're sure.
[x] Add a "New sequence" option to track menu. Creates a new sequence and pops up edit window. Doesn't deal with triggers at all.
[x] Add a Copy item to the seqlist popup menu (copies the seq and opens it in the seqeditor)
[x] change window title
from: "seq42 - NAME (TYPE)"
to: "seq42 TYPE - NAME"
example: "seq42 - untitled (track)" -> "seq42 track - untitled"
Seq24 stuff below......
<0.9.0>
[sequence editor]
[X] Ctrl Z undo seq + perf
[x] Ctrl + select = adds to selection (roll + event) m_seq->unselect
[X] Window Raise on Edit
[x] Static clipboard share
[X] Do not use selected for internal stuff
[X] Midi items are not de-selected after actions are taken (copy too)
[x] Paste buffer shouldn't clear
[x] paint notes
[x] paint events
[x] Port Names and number specd in rc file
[x] Controllers Speced in rc file eg. (Wavestation MIDI 1) (SuperNova Filter)
[ ] Notes Speced in rc file eg. Bass Drum (no black/white)
[ ] sorting of events placed into event list
0) Program Changes
1) CC's
2) Notes
3) MSB? LSB?
[ ] If Data Entries are placed on same tick, Make Course First ??
[ ] If NRPN or RPN are on same tick, Make Course First ??
[ ] Shuffle Quantize (percent and note from tool options)
[x] Keyboard start/stop
[ ] Midi start/stop
[ ] More scales!
[X] Make the sequence editor grow tool stretch over the length.
[x] Bump default song length way up.
[X] Stretch Notes ( Rubber Band)
[ ] Listen to notes as you draw / move?
[X] Vertical Lines at grid snap ?
[ ] exclusive groups (only one item in row or column can be active)
[x] copy and paste between sequences (make clipboard static)
[ ] Mouse move on piano roll/key roll, change background a bit ( check with scales on)
[ ] Scroll on dragging ?
[ ] Event mute ?
[x] Stretch w/ Ctrl (Federico)
[ ] Change background sequence color
[x] Test Maxim Patches w/ wheel mouse
Make sure data entry still does its thing w/ wheel
1) when clicking on an event only one (the "topmost") event is selected.
useful to decouple two events that are eventually stocked on top one another
2) if there are any events selected, data editor only changes controller.
values for these events; if there are no events selected it acts as usual.
3) data editor slope line can be dragged outside of data editor window;
controller values are adjusted to fit (0,127).
makes it easier setting all controllers to min/max value.
4) mouse wheel scrolls the grid up/down in sequence editor and song editor.
MAxim Krikun[+
5) Scrolling draw
[ ] Quantize Button
[tools]
[ ] Insert data runs. (Using Snap) CC
[ ] Randomize CC
[ ] Smooth CC
[ ] Sharpen CC
[ ] Thin. CC
[ ] Thick. CC
[ ] Reverse. NOTES CC
[ ] Delete doubles (Start) NOTES CC
[x] Quantize Start NOTES CC
[ ] Quantize Length > Big Menu. NOTES
[ ] Set Note Lengthi > Big Menu. NOTES
[x] Transpose. NOTES
[x] Harmonic transpose. NOTES
[ ] Multiple Manual Inputs. Selectable from editor.
[ ] One mouse button operation (buttons now chose mode)
Old buttons still work.
Add keyboard shortcuts for Select Draw Erase Grow
[ ] options for priority
[ ] nologo flag ??
[sysex]
[ ] add data buffers to event.cpp
[ ] midi files must read/save sysex.
[ ] .seq24rc defines known sysex patters
[ ] editor has new menu for known sysex and unknown sysex.
[ ] known sysex patterns can be changed with data graph
[ ] unknown sysex patterns can be edited raw
[ ] Implement raw hex editor.
[hexeditor]
Design for sysex and normal midi data.
Edit whole sequence list. Filters? Super flexable
<< Other >>
[ ] Midi file export (render mode)
[ ] Song Cue Points Based on Keys or Midi Input