Midi Problems on Linux

Hey there,

first post here :slight_smile: I just started fooling around with Tidal and really love it! So I'm trying to hook up my synths via Miad but I'm getting the following Error from SC if I send Midi from Tidal:

CALL STACK:
	Exception:reportError
		arg this = <instance of DirtPartTimeError>
	DirtPartTimeError:reportError
		arg this = <instance of DirtPartTimeError>
		var now = 15509.685475849
	Nil:handleError
		arg this = nil
		arg error = <instance of DirtPartTimeError>
	Thread:handleError
		arg this = <instance of Thread>
		arg error = <instance of DirtPartTimeError>
	Object:throw
		arg this = <instance of DirtPartTimeError>
	Function:protect
		arg this = <instance of Function>
		arg handler = <instance of Function>
		var result = <instance of DirtPartTimeError>
	Environment:use
		arg this = <instance of Event>
		arg function = <instance of Function>
		var result = nil
		var saveEnvir = <instance of Environment>
	DirtEvent:play
		arg this = <instance of DirtEvent>
	OSCFuncBothMessageMatcher:value
		arg this = <instance of OSCFuncBothMessageMatcher>
		arg msg = [*15]
		arg time = 15509.790253288
		arg testAddr = <instance of NetAddr>
		arg testRecvPort = 57120
	< FunctionDef in Method Collection:collectInPlace >
		arg item = <instance of OSCFuncBothMessageMatcher>
		arg i = 0
	ArrayedCollection:do
		arg this = [*2]
		arg function = <instance of Function>
		var i = 0
	Collection:collectInPlace
		arg this = [*2]
		arg function = <instance of Function>
	FunctionList:value
		arg this = <instance of FunctionList>
		arg args = [*4]
		var res = nil
	OSCMessageDispatcher:value
		arg this = <instance of OSCMessageDispatcher>
		arg msg = [*15]
		arg time = 15509.790253288
		arg addr = <instance of NetAddr>
		arg recvPort = 57120
	Main:recvOSCmessage
		arg this = <instance of Main>
		arg time = 15509.790253288
		arg replyAddr = <instance of NetAddr>
		arg recvPort = 57120
		arg msg = [*15]
^^ The preceding error dump is for ERROR: midi device is nil.

I already tried sending midi directly from SC via:

~midiOut.noteOn(14, 55, 64); 

And it works so the problem must be on tidals side? I'm using tidal on arch linux with tidalvim as the editor! Help is much appreciated!

Thank you!

Can you post your sc startup.scd and/or the sc/superdirt code you are using to connect your midi devices?

Did you follow this guide in the manual?
https://tidalcycles.org/docs/configuration/MIDIOSC/midi/#superdirt-midi

On a personal note, I like to create multiple virtual midi interfaces in JACK, map those in SC/SD as permanent connections, then I can route them on the fly in JACK to whatever midi device I want, instead of having to reconfigure SC/SD whenever I want to make a change.

Hey

i tried like you said with the Midi Through Ports created by snd-seq-dummy and can confirm that it works. Probably the problem was with directly accessing the midi interface of the synth (Behringer Neutron).

Only thing that keeps me puzzled is that superCollider keeps throwing me this error:

no synth or sample named 'midi' could be found.
module 'sound': instrument not found: midi

This is my sc code for midi:

(
~midiOut = MIDIOut.newByName("Midi Through", "Midi Through Port-0");

~midiOut.latency = 0;
~dirt.soundLibrary.addMIDI(\midi, ~midiOut);
)

Looking at my code, you seem to be missing the MIDICLIENT.init; section - here's my section from startup.scd (you can see the whole file here for reference):

...
s.waitForBoot {
...
       // midi
        (
            MIDIClient.init;

            ~midithroughport0 = MIDIOut.newByName("Midi Through", "Midi Through Port-0");
            ~midithroughport0.latency = 0;
            ~dirt.soundLibrary.addMIDI(\midi0, ~midithroughport0);
        );
...
};

Cool thanks a lot! Now it works like it should with the boot from sc!

1 Like