-
Notifications
You must be signed in to change notification settings - Fork 1
/
todo.txt
339 lines (240 loc) · 9.95 KB
/
todo.txt
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
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
* Use the `indent` eslint rule even for .ts files.
eslint can fix indentation.
tslint can't.
* Fix error `Error parsing bundle asset "C:\code\Zynthinator\app.js": no such file`
when doing `yarn analyze`.
* deleteAllNodesReducer blev
revertToInitialStateReducer.
* implement UNDO.
* Init <selects> in ConnectNodesButton.jsx (and other buttons as well).
* I have no VALIDATION on my MODALS.
* getConnectionsInReadableFormat
should be split up.
getConnectionInReadableFormat should do it,
then getConnectionsInReadableFormat just calls that one.
* Should not be able to connect a node to itself !!!
* Bug when minimizing Visualizers.
* TODO:
- One should be able to disable some top-right icons in SimpleWindow.
* Allow the deepFreezing to be enabled and disabled in a DEBUG file.
* Upload the files to fredrikhjarner.se
automatically on 'npm run build'
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* [
{
action,
timestamp,
}
]
rename timestamp to deltaTime.
* Gör fler semantic++ komponenter.
- T ex en select ska inte synas om den inte har några options.
* Implementera "Spectogram".
* När jag tar bort en node, så ska också de grupper den ingår i tas bort.
* Efter en memoized reselect så ska det inte finnas någon .map
osv, för då är memoizeringen onödig eftersom det skapas
nya object hela tiden ändå.
* FrequencyDomainVisualizersRedux shit:
node.webAudioNode = nodeModels.nodes[node.id]; // todo there is no guarantee that the node exists yet!!!
Lös detta genom att ha en state.webAudioNodes
som håller koll på vilka webAudioNodes som skapats
När en webAudioNodes skapas så ska den dispatcha en action!!!!!!
* CreateConnectionsRedux
& CreateGroupRedux
are unoptimized because it does map after memoizedStateQueries.
* Viss kod anropar .webAudioNode direkt, vilket suger eftersom den inte
ska kallas på direkt.
* "inputs"
till noder kanske ska kunna ha typer.
de vanligaste är float
men t ex en "play" input ska kunna vara BOOLEAN.
* Edit Knob.
* highestNodeIdYet: 1,
highestConnectionIdYet: 0,
highestGroupIdYet: 0,
highestKnobIdYet: 1,
highestTriggerIdYet: 0,
looks like shit.
Should be only one: 'highestIdYet'
No should be uuid.
* AudioSystem borde vara uppdelat i delar som var för sig lyssnar
på den del av state som de är intresserade av.
Delarna ska vara t ex:
- nodes
- connections
- triggeredTriggers
- knobs?
* DeleteTriggerRedux &
DeleteKnobRedux
är identiska.
* One should be able to disable/enable removing duplicates/unnecessary
stuff from the action history file.
* History (and history files) should be dynamically compressed.
* the knobs don't get their position from state
which could be a problem for example when saving and
loading history, the knobs will always show 0 (zero).
* The history should be able to be filtered as it is added to
the state. Now only the downloaded file is filtered.
* this.timeDomainCanvasId
should be
this.state.timeDomainCanvasId
* bitsToRecord is a bad name. it's not bits.
* Minimizing oscilloscope stops all visualization and can't be resumed... :/
* When it crashes I should have the ability to download the ACTION HISTORY.
* When I replay a history I should be able to manually go forward
action by action!
* The "multiple selection dropdowns"
should have their "value prop" set
and now it is not.
* For better testing:
Record a session. Record all the actions and the state afterwards.
After refactorings, play the session and see if the actions
produce exact the same outputs :)
* _updateScaleAndOffset
can probably be refactored into some Util.js.
* Refactoring possibility.
I might split all the inputs up!
So that I have a
- SelectNodeInput
- SelectNodeWithInputsInput
- SelectConnectionInput
- etc.
* Use redux-forms!
* Top menu is not wholly visible on low-res.
Do something with menu in low-res.
* Layout is not a fucking reusable component,
so it should not be under /components.
* ESLint should force me to make PropTypes!
Or maybe I should use Flow and NOT PropTypes.
* getConnectionInReadableFormat is right generates "semantic options"
which is not ideal, and not as reusble.
* // wtf is this function?!
getNodeByIdInReadableFormat =
R.compose(
this.getNodeInReadableFormat,
R.flip(R.prop)
)
* Add pink noise. rename noise to white noise.
* All nodes should have a gain!!!!
* Implement Redux Ducks.
* Web Audio API square waves look like crap!!!!!!!!1
So make my own one with audiobuffer or Triangle + WaveShaper
* "bounds" for parameters in nodeTypeDefinitons.js
i.e max and min values so the user doesn't fuck up.
* Have an option for each node (or node param) in nodeTypeDefinitons
that indicates whether the whole Node should be recreated
upon a change in value of a parameter.
It is the easiest way to change the value of a parameter,
simply recreate the Node with the updated parameter value!
* When an Analyser is created a UI component is added to the state.
THAT SUCKS!
I should be like this:
1. An Analyser is added to the state
2. Something listens to Analysers and if one has been added,
3. then add a UI component to the state.
4. Then the UI listens to that state and draws it.
* Disable/enable connections.
By clicking an arrow symbol in a displayed connection
I toggle enabled/disabled, so I can test to connect/disconnect
parts of the tree on the fly in real-time.
* ConnectionArrow component should get the connection or
connectionId as a prop.
Should be possible to trigger a disableConnection(id)
action by clicking on a ConnectionArrow.
* Create a CrashModal that shows
at window.onerror
and allows to
- save history
- reset localStorage
* Don't always split up into Dumb, Smart and Redux Components.
Only do so if a file exceeds 100 lines of code.
* Every example should make a Modal pop up with information
about the example.
* When creating example I need functionality to clean up all
extra fluff in the action history.
* When a node is displayed in a form-input, it should
get the color from the node-type just as when
nodes are displayed in node-tree.
* Eject node problems:
Now I can only choose the node and not the specific
connection, which means that the node is ejected
from ALL connections.
* Model:s built-in gain-nodes have a problem:
When I connect a node that the gain-node,
a gain of 1 is added to the input,
but the gain should really be zero + input.
* As I did with 'addGain' I should make a 'addChangeRange'.
* AudioBufferSourceNode has a
'playbackRate' prop
make use of it.
* Bug where "knobbing" playbackRate adds to 1
Should add with zero when a knob is connected.
* I can do what I am doing in ChangeRange and have
- defaults
- params
- willConnectToMe
- willDisconnectToMe
and use that for ALL nodes i.e. generalize.
* Dont use CDN:s because they can go down.
for jQuery.
* All actions should have uuid:s so it is easier to
find a specific action in history.
* use 'safeDisconnect' everywhere.
* Remake ADSR so that 'stop' is triggered on falling edge, maybe.
- Or no. It should have a 'stop' input and the 'play' input !!!!!
* PWM glitches because ChangeRange glitches because of AudioWorklet.
* user @withGain decorators.
* In UI there should be a function to ADD NODES TOGETHER i.e. PLUS THEM.
What this does it that it creates a UnityGaiNode and
connects all those nodes to that UnityGaiNode etc.
* Zoom-in zoom-out on scroll when oscillator is focused!
* ValueAnalyser node. Simply displays the value of a signal as a float.
* Ugly: CanvasContainer exists in three places. One place is enough.
* history-custom-analyser does not work correctly until refresh.
* array-types like this fuck up @unknownKeysThrowsExceptions
oscillatorType: {
type: [
'sawtooth',
'sine',
'square',
'triangle',
],
defaultValue: 'sine',
}
* Sometimes I have an alert which just displays a stupid 'Error'
it is extremely unhelpful.
* Exception: The smoothing value provided (80) is outside the range [0, 1].
* Make use of my new MessageModal component.
* All creations of Web API nodes should be recorded in an array,
that is creation methods should all be wrapped,
so that I know exactly what Web Audio API nodes exist and
what their properties are.
* Add a SlowNoise node.
* Add a Meld node
that works like TwoWaySwitch but does not switch
it melds the two instead.
* All 'params' in nodeTypeDefinitons should have a description property.
* Rervert the ChangeRange so that it uses a GAIN and a CONSTANT_SOURCE,
and AudioWorklet only where it's needed.
* @byPass
More nodes should use it.
* Temporarily just show the connections that are INJECTABLE
in INJECT NODE maybe... ?
* Knob-groups
So that I can have a group called 'Equalizer' for example.
* Splash screen should have address 'index.html'
and synth should have 'synth.html'
* There is a bug with Crash alert showing up twice
even though one chose to go to Splash screen.
* Connecting a knob to Oscillator.frequency adds to the original frequency :'(
it should use willConnectToMe / willDisconnectFromMe.
* Be sure to destruct 'model decorators' correctly.
because I had a bug in 'bypass' because it had no
destruct method.
* Be explicit about arguments in redux-ACTIONS and component-PROPS.
It is a mess as it is now.
* Delete DeleteNodeModal as soon as I can delete a node via ContextMenu!
* CustomAnalyser.trigger does not seem to work correctly (with Knob for example).
Is there a way to disable the trigger?
* Fix resizing for CustomAnalyser and FrequencyDomainVisualizer.
* Sometimes I have reducers calling/using other reducers. This could be handled with redux-observables instead.