Anyone tried to use LMMS with Tidal?

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 $ ...
1 Like

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 addMIDI.


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. :slight_smile:

1 Like