I am trying to build a live performing set up, and I was looking at ways to implement Midi and loops into my workflow. Ableton is probably the most used DAW as far as I have noticed, but wanted to check if anyone has tried out LMMS to do the same thing?
Haven't used LMMS myself, but I do use REAPER for VST plugins through MIDI, mixing and recording with Tidal, it's a really powerful and flexible cross-platform DAW, and even though it's commercial you can use it for free without limits (it only has a nag screen at start). It's cheap to buy though, compared to others.
Sorry for the late reply. I have used Reaper, it's pretty good too. I am stuck in sending the midi signals to Tidal from the DAW. Can you share your steps for Reaper? Maybe I can replicate it on LMMS and give it a shot
On Linux, ALSA registers a virtual MIDI device called "Midi Through", so I usually add a single MIDI out on SuperDirt for that device, and use plugins/instruments on different MIDI channels (you can only refer to 16 different instruments/VSTs, if you need more maybe you can use add more virtual devices in ALSA or use JACK MIDI devices I guess):
// Setup a single MIDI synth, because we'll setup different instruments by channels ~midiOut = MIDIOut.newByName("Midi Through", "Midi Through Port-0"); ~dirt.soundLibrary.addMIDI(\midi, ~midiOut); ~midiOut.latency = 0;
Then on Tidal I have a few helper functions for defining multiple streams for each instrument. If I know my "pad" synth is on channel 0 and my "bass" synth is on channel 1:
let m name num chan = p (name ++ show num) . (|< s "midi") . (|< midichan chan) mpad n = m "pad" n 0 mbass n = m "bass" n 1 mpad 1 $ n "[[c, e, g, b] [d, fs, a, cs]]/4" -- change CC 8 on pad mpad 2 $ ccv (segment 32 $ slow 2 $ range 0 127 tri) # ccn 8 mbass 1 $ ...
hey @munshkr, have you had any luck using multiple MIDI devices? i’m trying to get around the 16 channel limitation of a single bus / device. (also posting this on discord. )
I haven't really tried it, but my guess is that you can define as many as you want, like this:
// MIDI device A ~midiOutA = MIDIOut.newByName("Midi Through", "Midi Through Port-0"); ~dirt.soundLibrary.addMIDI(\midiA, ~midiOutA); ~midiOutA.latency = 0; // MIDI device B ~midiOutB = MIDIOut.newByName("Midi Through", "Midi Through Port-1"); ~dirt.soundLibrary.addMIDI(\midiB, ~midiOutB); ~midiOutB.latency = 0;
Then on Tidal, you use
s "midiA" and
s "midiB". The name of the synth in SuperDirt must match the first argument of
It is working great. Thanks for the help.
I was able to add another MIDI bus to my IAC sound card, use the SuperDirt code you shared, and control 32 MIDI channels in my DAW. Thanks.