tebillus · projects

 

"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
sourceabout 3,024 lines of c, plus 534 lines of python for the tooling
instruments that exist as shared objects3, beside 2 control mappings
instruments loaded when it boots2, 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