"midi-daw"
it's a small C-level program that can repurpose your existing midi keyboard;
i made it to interface with my akai mpk mini :)
i made it when had just switched over to linux
i used ableton on windows, but couldn't find an alternative i liked,
so i decided to make my own daw
and not only that,
i decided to make it where
the midi keyboard was the only thing i really needed to interface with;
i am certain that making music production as visceral as possible
leads to better more resonant music
how the logic works:
loop:
keys ← alsa.sequencer() # note on / note off / cc / program change
active_plugin.handle_note(channel, note, velocity)
out ← active_plugin.process(128 frames) # interleaved stereo float, written in place
out ← reverb(out) # 4 combs, 2 allpasses
out ← resample(out, 2^(semitones/12)) # mod wheel, 1024-sample history
alsa.write(int16(out)) # the blocking write paces everything
if recording: wav.append(out) # one stereo take off the master bus
some figures, each with where it comes from;
| the block the audio runs in (read from the source; the milliseconds are arithmetic) | 128 frames · 48 khz · 2.67 ms |
| source | about 3,024 lines of c, plus 534 lines of python for the tooling |
| instruments that exist as shared objects | 3, beside 2 control mappings |
| instruments loaded when it boots | 2, chosen by me in the source |
| one wav into one instrument (measured) | 4,800 samples → 69.4 kb of c → 37.9 kb plugin |
| the same ratio at three minutes (extrapolated) | ≈ 125 mb of c when compiled |
it's a keyboard synth and a sampler
and as you're using it can record one stereo file of what you played;
starts with two instruments but you can add more
and the experience is as close to analogue music production as i could get (i will try more lol)
the source is public on gitlab
if you want help fitting it to a different keyboard,
or to your own sample library, or to a room,
message me on x @ tebillusassort