-
Notifications
You must be signed in to change notification settings - Fork 16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Somehow read note velocity? #124
Comments
ATM we don't read / store the note velocity from the MIDI messages in any way and since sointu is essentially 4klang at its core, there is no concept of note velocity in the song data in the compiled player. However, you can "fake" this to certain extent: you can make another instrument that doesn't produce any actual sound, but loads the pitch using LOADNOTE and modulates another instrument. These "effect" instruments are quite common in 4klang tracks. That's why sointu has the "hex" mode to edit track notes, so the hex values can be used e.g. to set volume of individual notes. LOADNOTE converts the hex integer values with (value/64.-1.0) but only hex values 0x02 onwards can be used, because 0x00 and 0x01 represent note release and note hold in the note data. The conversion means that 0x80 = 128 = 1.0, and 0x40 = 64 = 0.0, and 0x02 = -0.98. The highest MIDI note is 0x7F, but from the track editor, values up to 0xFF can be entered, corresponding to 1.99. Adding support for true note velocity data is not impossible, but quite some work, so won't happen very quickly. |
I'll just close this, because this explanation is better than implementing something complicated |
I'll reopen this because I actually think it would a worthwhile addition. We would not necessarily need any extra code from player side: we could just generate two instruments for every MIDI channel, first with tracks defining the notes and second with "notes" actually corresponding to note velocities. The hardness comes mainly from the tracker side, to trigger the correct instruments when MIDI event arrives and then to record the MIDI events with notes & velocities as two tracks during recording. |
Let's talk about this a bit before jumping into implementations. For me, the most important support for MIDI velocity would not be to get it from the user during MIDI inputting of notes, but to get the velocity from DAW while recording the notes. So, that means that for every instrument, we might create just one track (only note data) or two tracks (note data + velocity data). Where should the units that process the velocity data be? If the "velocity instrument" and "note instrument" that get triggered by the tracks are completely different instruments, how do we keep these associated with each other? I think the user easily gets them dissociated when moving around the instruments, if the association is e.g. based on "the velocity instrument is always to the right of note instrument". Therefore, purely from this perspective, how about this: every Instrument has "Units" and "VelUnits" (or whatever we call them), i.e. the VelUnits is the units for processing the velocity values? It's not clear how radical change this would be without trying to implement it. |
Hey everybody,
not sure whether I'm just not capable or that feature is not implemented, but especially for variation in drums, I was looking for a way to have note-dependent velocity. Can it be accessed somehow already, or faked, or is there no current implementation?
best,
qm
The text was updated successfully, but these errors were encountered: