xybrid/notes

60 lines
2.2 KiB
Plaintext
Raw Normal View History

2018-11-20 14:03:21 -05:00
pattern editor {
iosevka works perfectly for tracker patterns
C-4 01 vFF
can freely embed it too (SIL OFL allows bundling)
probably Iosevka Term (Light?)
}
project data {
samples are held in memory as {
QString name, QUuid id (used as dictionary key) (?)
sample rate, channel count (1 or 2), length
probably QSharedPointer to raw float array (size=length*channels, non-interleaved)
}
pattern {
name, id
length in rows (duh)
time signature, in beats per measure and rows per beat (can default to project global)
per-pattern channels; note continuity is defined by name
- send note-off on entering a pattern without a channel of that name? maybe project setting
2018-11-20 14:03:21 -05:00
command format
01 C-5 v7F ... ... ...
instrument (port) number first; note-sharp-octave notation same as most trackers, but arbitrary number of a single type of parameter
[plugins receive commands more or less exactly as written; meaning is by convention more than anything, but there is a "standard" way of handling notes, handled by a library on the lua side]
- leave pitch bends to automation? or build them as per-tick messages from host? also, stepped by tick or smoothed per sample?
x note-on events send the actual note as a float value
- nope, separate event for cents (bcd? that would futz with interpolation though... signed byte, -100..100)
2018-11-20 14:03:21 -05:00
}
}
resampler object {
one used internally for each note
reference to sample
wrap mode (flat, loop, pingpong)
double position (number of samples with fractional part)
}
lv2 support: lilv (duh) for actual plugin loading, suil for UI embedding
keybinds {
pattern editor {
note column {
( a-z, []\ ;' ,./ ) - "flat piano" in three octaves a la openMPT (maybe minus /)
shift - hold to transpose up one or two octaves while playing
1234567890 - assign octave
note off, hard cut?
}
param column {
symbol {
anything printable - set symbol and move to value
}
value {
minus - negate current value
}
}
}
}