if(PathName("/dev/fw1").isFile, { // if(("which ffado-test").systemCmd == 0, { // ~ffadoDevice = ("ffado-test ListDevices |tail -1").unixCmdGetStdOut; // ~ffadoDevice.asArray.postln; // }); ~audioInterfaceOptions = Dictionary.with(*[ \name->'RME Fireface 800', \numInputs->28, \numOutputs->28, \inputs->Dictionary.with(*[ \adat1->Array.series(8, 12, 1), \adat2->Array.series(8, 20, 1), \analog->Array.series(10, 0, 1), \spdif->Array.series(2, 8, 1) ]), \outputs->Dictionary.with(*[ \adat1->Array.series(8, 12, 1), \adat2->Array.series(8, 20, 1), \analog->Array.series(8, 0, 1), \headphones1->Array.series(2, 8, 1), \spdif->Array.series(2, 10, 1) ]) ]); "SC_JACK_DEFAULT_INPUTS".setenv("firewire_pcm"); "SC_JACK_DEFAULT_OUTPUTS".setenv("firewire_pcm"); },{ if(("which aplay > /dev/null").systemCmd == 0, { ~alsaDevices = ("aplay -l").unixCmdGetStdOut; // case defining name, number of input and output channels and a Dictionary // holding Symbols for accessing groups of inputs and outputs by name ~audioInterfaceOptions = case { ~alsaDevices.contains("PCH") }{ Dictionary.with(*[ \name->'Internal', \numInputs->2, \numOutputs->2 ]) } { ~alsaDevices.contains("Babyface") }{ Dictionary.with(*[ \name->'RME Babyface', \numInputs->10, \numOutputs->12 ]) } { ~alsaDevices.contains("XUSB") }{ Dictionary.with(*[ \name->'Behringer XUSB', \numInputs->32, \numOutputs->32 ]) } { ~alsaDevices.contains("Scarlett 18i20") }{ Dictionary.with(*[ \name->'Focusrite Scarlett 18i20', \numInputs->18, \numOutputs->20 ]) } { ~alsaDevices.contains("Fireface UFX ") }{ Dictionary.with(*[ \name->'RME Fireface UFX', \numInputs->22, \numOutputs->22, \inputs->Dictionary.with(*[ \adat1->Array.series(8, 14, 1), \adat2->Array.series(8, 0, 1), \analog->Array.series(12, 0, 1), \spdif->Array.series(2, 12, 1) ]), \outputs->Dictionary.with(*[ \adat1->Array.series(8, 14, 1), \adat2->Array.series(8, 0, 1), \analog->Array.series(8, 0, 1), \headphones1->Array.series(2, 8, 1), \headphones2->Array.series(2, 10, 1), \spdif->Array.series(2, 12, 1) ]) ]) }; }); }); Server.local.options.numInputBusChannels = ~audioInterfaceOptions.at(\numInputs); Server.local.options.numOutputBusChannels = ~audioInterfaceOptions.at(\numOutputs); postln("Loaded settings for: "++~audioInterfaceOptions.at(\name)); postln("Initializing and connecting MIDI devices."); MIDIClient.init; MIDIIn.connectAll; //TODO: use Quarks interface to install/update needed Quarks instead of symlinking.