Orac 2.0 for the Raspberry PI

  1. Yeah it’s a trade off , as you need it to return if you decide to not select a new module.
    Once you know the modules it’s doesn’t seem so quick any more :slight_smile:
    Btw if your moving it’s timer is being reset :wink:

  2. You can change this in the router options under main control see my 2.0 overview video

  3. Remove the module being modulated and it will reset, but the targets are not.
    Agreed it’s takes a while to get used to remembering to turn mod learn off ;

  4. You mean you just want to target a different pair of outputs?
    I’d so this is easy, just edit mother.pd
    I’d you mean you want > 2 outputs then this is a matter of creating a specific router which is very easy to do - the trick here is you will probably want different chains to go to different outputs.

I think one of the strengths of Orac is because all the modules are PD it’s easy for users to create new modules to extend it , and hopefully share with community to help others.

1 Like
  1. I’m not sure how this works without the Organelle.

  2. So the K-Mix has 4 outputs: Master / Aux1 / Aux2 / Aux3
    As you say ideally chain A would go out Aux1, Chain B out Aux 2 etc…
    Something like [dac~ 3 4 5 6 7 8]
    I’d already have started fiddling with this but I’m not familiar with the Linux filesystem and am not sure where mother.pd or the router modules are located?

look in PD’s Preferences -> Path… if the path library is listed… sometimes, even if you installed the library via deken is possible that you have to add it to list manually

Good call @SYS2064 - it was a subdirectory of the externals path but adding it as a new path got it going!
Cheers!

2 Likes

the same as organelle, now you have it going, you should see that the organelle screen basically is the same as what your seeing.
(except PD shows both the parameters and menu at the same time)

so as detailed in the overview video
you need to go to Router module (s1)
(just click thru modules at top, or use left/right arrow)
then click thru pages to get to Main Ctrl (or use page up/down)

then you will find Dest, change it to 1 , if you want input to to a1 , rather than active module

as with many things in orac, there are many times when the current behaviour is more desirable,
and also different ways to achieve what you want.
e.g. what I tend to do is:
I use midi channel 16 for the ‘active module’ (also on main ctl page on router)
then I turn on midi input on the particular chains.
e.g. I have midi ch1 = chain 1, ch2 = chain 2

so now, from my midi controller I can target the active module from ch16, and chain 1 and 2 with channel 1 and 2 respectively.

Note: the router settings are saved in the preset, so you can change the behaviour depending upon ‘the patch’.

ok, if thats what you want Id not change mother.pd!

you can create your own specialised router.

everything is located in /usr/local/orac

so what you would do is

mkdir -p ~/media/orac/usermodules/router
cp -R /usr/local/orac/modules/router/parallel ~/media/orac/usermodules/router/kmixrouter

(warning: I did not actually type this on a pi, so might be a typo, but looks ok :wink: )

you now have a new router module called kmixrouter, which is identical to the parallel router.
but you can edit it.

~/media/orac/usermodules/router/kmixrouter now contains a module definition and pd file which does all the routing - open module.pd, you’ll see its pretty straightforward, just a bunch of modules, connected - then sending to a final output. (you’ll want to replace the final output with a [dac~])

using this technique you can not only change where the outputs go, but also change the topology eg. create 3 or 4 chains with different outputs.

I spent quite a bit of time for Orac 2.0 simplifying this process, as its a really powerful way for users to tailor it to their environments… whats the beauty of PD, its easy to modify - so in Orac I try to leverage that as much as possible.

3 Likes

ok, next release this will be user configurable, by changing /usr/local/MEC/osckontrol.json
and adding the ‘menu timeout’ option, as shown below
(default will remain the same)

{
    "mec"  :  {
        "oscdisplay"  :  {
            "listen port" : 6100,
            "menu timeout" : 350
        },

        "kontrol"  :  {
            "listen port" : 6000
        }
    },

    "mec-app"  :  {
        "outputs" : {
            "midi" : {
                "virtual" : 0,
                "voices" : 15,
                "mpe":false,
                "pitchbend range" : 48.0,
                "device" : "Pure Data:0"
            },
            "_console" : {
                "throttle" : 0
            }
        }
    }
}
3 Likes

Awesome! I’ll have a go at it tomorrow. I presume I could feasibly create a selector for multiple inputs as well?

1 Like

Mark, I’m enjoying orac a lot; some observations/questions:

  1. What is the better way to emulate the aux button of the organelle with a normal MIDI controller? I tried with my edirol keyboard by assigning controller 69 to the slider and it sort of works but I feel is not optimal…

  2. Tried your suggestion of enabling a different midi channel per chain and it works beautifully for notes but the aux button is not “forwarded” so to say, I suppose it’s a global setting that works only in the selected module?

  3. Would it be possible to have the remote control on the pisound app? Or alternatively, how can I use android to remote control orac?

  4. Would it make sense to make the remote functions like selecting modules, chains, pages and so on midi controllable? From what I see on the videos on the organelle you have easy navigation with the wooden keyboard and the encoder but on pisound the navigation requires remote control (or I’m missing something?)

I’m looking forward to your getting started video, which I’m sure will be great like the last ones
Thanks for all this and keep up the great work!

4 Likes

yup, everything goes thru the router.

yeah, some controllers allow you to send CC as a toggle/ momentary.
the best solution is a pedal, as its fits quite nicely into how the AUX button actually gets used.
(e.g with my ‘controller’, i can use the sustain pedal to send a CC)

I considered using a ‘note_on’ but that was really clumsy,
if its in normal keyboard range, its gets in the way if you octave shift,
but if it’s not, then is not easily accessible.

so CC was better was it doesn’t interfere with playing …

yeah, thats currently by design…
the issue is , many modules use it, and for different things…

so you might have seq using it for play/recording, but further down the chain overloop which uses it for recording…

its something worth discussing in the community about how we want to handle this going forward,
… Im not a huge fan of the Aux button, but its was in all the patches when I moved them to Orac.

pisound app, thats really a question for blokas,

for me, … and perhaps going forward, the question is also… can the Orac remote app control the PiSound patches… theoretically yes, because its also mec,

as for android support for the Orac,
absolutely it’d be a great idea. the issue is I don’t have one , so I cannot develop one, and frankly I dont know what apps are available on Android

BUT…
partly the reason I made the pure data patch, was to demonstrate how easy it Orac is to control via OSC. (in this so called ‘osc display’ mode)

really the patch is VERY dumb, as the rendering is all done on the rPI,
so you’ll see in the PD patch, it just sends a few messages like ‘cursor up/down’ and display lines that its told to…

so if there is a OSC UI app for android it should be relatively easy to make it work.
but as I say, i just dont know the android world, so cannot suggest one…

but it’d be great to get it working, and if you (or someone else) does, then I’ll happily chuck it in with the other clients if you wish.

yeah, its not midi control thats the difference, its more fundamental …

the Organelle works like this because it has a screen, pots and a keyboard… so its a complete unit.

I want the PI (and eurorack modules) to also be standalone units, that you control via a midi controller - and not to be reliant on a screen.
so in this sense, the idea is to construct the ‘instruments’ , with your phone/computer, then save as presets (switching via program change) - so you can use on standalone without a screen.

of course, Im sure there will be some users (perhaps most , who knows?), that will alway have the phone/computer connected , but thats kind of not the aim.

(Ive seen some requests for a GUI app for Orac, but again, for the moment that concept is not really that interesting to me… if I want to interact with a computer, I’d use my laptop to run Reaktor or VSTs :wink: )

besides, midi mapping a controller is not going to work really well, unless its something like a launchpad/push where the buttons have some kind of logical order. (up/down/left/right)

all that said…
MEC is extendible, so if there was a good case (with enough users to support) for another UI, it could be done like Ive done the Push2 - where it gets UI.

lets see, its early days… perhaps others will have ideas, and its open source, so anyone can contribute.
Ive had a couple of people in the past approach me about writing a ‘web app’, but as yet nothing has happened - but it might do :slight_smile:

1 Like

ok, so got a chance to test this :slight_smile:

yes, I get the same error - but its still worked… well sometimes :wink:

I noticed a few things:
a) the rPI didn’t seem to connect to push on power up, I had to unplug it, and plug it back it before it was listed (aconnect -l)

b) sometimes it appears like its not getting any midi messages
despite mec saying its connected fine, and alsa saying its connected
but restart mec, and then it’ll work ok.

I wanted to get a midi dump to see what was going on, but found it cannot grab the midi port because its always in use (even if mec is stopped)
which brings me to one thing thats always been a bid odd with patchbox (at least i don’t understand)
everything seems to be connected to 129:0 , what is this? its not listed in aconnect -l

client 0: 'System' [type=kernel]
    0 'Timer           '
    1 'Announce        '
	Connecting To: 129:0
client 14: 'Midi Through' [type=kernel]
    0 'Midi Through Port-0'
	Connecting To: 129:0[real:0]
	Connected From: 129:0
client 20: 'pisound' [type=kernel,card=1]
    0 'pisound MIDI PS-39YDPH2'
	Connecting To: 129:0[real:0], 133:0
	Connected From: 129:0, 133:1
client 24: 'Ableton Push 2' [type=kernel,card=2]
    0 'Ableton Push 2 MIDI 1'
	Connecting To: 129:0[real:0], 130:0
	Connected From: 129:0, 131:0[real:0]
    1 'Ableton Push 2 MIDI 2'
	Connecting To: 129:0[real:0]
	Connected From: 129:0

this is with nothing really running - I even stopped amidiauto so its not that…
its if there is some virtual connection lurking around ,
which Id love to stop to ‘remove it from my enquiries’ :wink: )
(Ive not seen this on other pi distros including raspbian)

so not quite sure… as I said, initially its seemed ok…
but a bit concerned, that I could get into a state where midi messages were going missing.

1 Like

Thanks Mark for your hard work. I have configured everything apparently fine on two occasions, but for whatever reason it doesn´t sound. MEC and Jack are running correctly, and I connect well with the Pd client. Any ideas?

Thanks in advance

the rack is pretty ‘empty’ for its init patch , you will need to select a synth module in a1

see this post

I had done it too. I have even looked the gain in the serial module. Everything seems fine, is strange. I have connected a usb and midi controller I have been able to assign parameters with the midi learn. Thanks and regards

if you have got midi learn working, then midi is coming in.

which midi channel are you sending in notes on? (use ch 1)
have you got the synth as the active module?

you could try to put the Euclid seq before the synth to see if you have sound.

1 Like

Had some issues with file permissions - had to specifically chmod the json and pd files - which strikes me as weird for a “home” directory. Having to do this for every user module…?
But anyway… let’s see if this works.

EDIT: OK next step is how do I get the user modules to show up in the remote client?
Maybe this will be answered in your next video? :v:

1 Like

Well I have sound when I put euclidean in the first module but when I put the synth in the first module doesn’t sound. The midi controller is on channel 1. How can I know if the module is active?

If you get sound with the euclidean model in the first module and a synth in the second module then that is all working.
If you get no sound then with a synth by itself using a midi controller then something is not working with the midi controller.
What is it? How does it connect to the rPi?

Thanks for The answer. I have connected a midi usb controller and a Korg sq1 sequencer for both midi din and usb and nothing. I have tested them with Pianoteq trial and they work correctly. I do not know what may be happening.

you do not have to (and should) not do a chmod if you placed them where i said to, in /home/patch/media/orac/usersmodules

ok, but Ive found a small bug… which means this is not working, so far now,
place the modules in the above directory as directed then enter the following

sudo ln -s /home/patch/media/orac/usermodules /usr/local/orac/usermodules

the reason to do this, is later when I fix the above issue, then your modules will be in the correct place.

I did this, and tested putting a new router module in place and it worked fine.
it can be seen in remote client, and loads
(note: you will need to restart orac for new modules to be picked up)

we use alsa, so aconnect -l will tell you if your midi controller is properly connected.

does midi learn work? (that will indicate if midi is getting thru)
if it does, then its probably just your routing…

so by default what Id recommend to get started is
(assuming you have not altered any settings)
a) send on midi channel 1
b) make sure the synth module is active (i.e. shown on the remote) client
then pressing a note should play

as above really, the module is active if its shown on the remote client.

if your not using the remote client - then as such ‘active’ doesn’t make any real ‘sense’
so what you should be doing is setting up the chain.
so assuming the default setup.

go to S1:serial
go to page Chain 1 Midi, set “In Midi” = 1 , “In Midi Ch” = 1

also in serial, what I personally do is set Main Ctrl 1 : “Main Midi Ch.” = 16
(so for active module I use channel 16, to avoid confusion with the chain midi)


I recognise this is all a bit of a ‘learning’ curve,
honestly, it didn’t really occur to me, as Im so used to users who have been using the Organelle version, so know much of this stuff.

what Im currently doing is, fixing issues as people are raising them - and Im then going to release a new beta to fix those issues.
as the same time, what Im going to do, is make a couple of the defaults a little better,
and also rather than orac starting with the Init patch, Im going to start it with a ‘demo’ patch,
which will mean it will play a sound, as soon you plug in a controller.
(I’ll probably also have some drums auto start, so that you know if sound is working)

apologies for it being a bit more complex than expected, but the issue with developing on multiple platforms its quite easy make incorrect assumptions across them.

2 Likes

Thanks Mark.
Just to check - the path you suggest originally (that I have) is:

I presume the ~ puts it in /home/patch?
Just wondering if I should move the kmixrouter dir to be a subdir of usermodules, not router?

EDIT: It’s showing up now - so where do I load this module in the remote script
under a3, b4 and c3 or at the end of the chain in s1?
Neither have worked for me yet.
cheers for the help!
Lloyd