Orac 2.0 with MPE support!

current release: Beta 2 (18 Apr 2019)

so this is what Ive been up to lately :slight_smile:

why’s its relevant here?

well a couple of reasons - underlying Orac is my project MEC ,
MEC is designed for ‘small pocket computers’ , and started off (and still is) a way for me to interface with expressive controllers - particularly the Eigenharp and Madrona Labs Soundplane.

and of course, this is carried thru to Orac, so Orac 2.0, not only supports MPE, but underneath we still have MEC providing support for the Soundplane (with updated code) and the Eigenharp…
I also plan to add t3d support (simple additional module) for Orac 2.0 :slight_smile:

so my goal, which Im pretty close to now, was to have a platform for expressive controllers that you could ‘carry around’, but one that is truly flexible … and was free, and completely open source.
Orac 2.0 is nearly there, expressive support, and a way to control the sound engine - and it can easily be extended by anyone, as all modules are written in pure data.

I hope with more platforms, I can build a small community around it , creating presets, and new modules.

finally, Im pretty excited by the Qubit Nebulae, and Eurorack support…
as Ive stated elsewhere, I don’t really want (nor can afford) a polyphonic eurorack module, but what I can do with Orac/Mec in Eurorack is have it multi touch polyphonic within the ‘nebulae voice’, with CV control for the engine, and then feed it out for effects and resonators (or I guess a filter in a ‘paraphonic style’)

anyway, busy time … but fun times ahead !

14 Likes

I picked up an Organelle at Synthplex, mostly to play with Orac, and I’ve been slowly converting my max skills to pd.

I have a raspi/pisound box sitting next to it, which is currently doing the Modep thing, but I’ll probably shift that to Orac as well.

I do not have Bela Salt or the QuBit Nebulae, but it’s interesting that you’re using Eurorack for external processing. I tend to think in the other direction. E.g., using CV for external control of your poly synth’s parameters. There’s a lot of fun to be had with that, if you’re tapping into the CV inputs.

(Along those lines, I’m very curious what it would take to get this running on Percussa SSP. And it kills me even more now, that the mSSP Kickstarter didn’t go through.)

Yepp, a setup-and-forget Eigenharp in, sound out module sounds like a dream come true! This is like christmas :slight_smile:

Edit: Organelles seem to be high in demand - out of stock. Some fun can be had with a Raspberry Pi+PiSound, too I hope. Still having a Pi2. Slightly slower than Pi3, but also less power hungry - might be good for going mobile by bus powering it? Will definitely try… :slight_smile:

2 Likes

New video is up - thanks, looks awesome, full OSC control of the router and plugins looks like a really great way to fit this into different work-styles!
Will need a second pass through that video later today. Even if it is “as simple as that”, there is still quite some info to digest - it’s a fully modular system of course, so that is to be expected :slight_smile:

2 Likes

Just wanted to acknowledge, this functionality is very much confirmed in the latest video.

1 Like

Watched the Raspberry Pi video - cool! Didn’t have the audio low latency distribution on the radar.
Installing Orac 2 now on Bela and Patchbox+MEC on the Pi2 (as I haven’t a sound card for that one - yet). Finally still found an old sd-card writer, now patiently waiting until the image is finally copied on the sd-card :slight_smile:

1 Like

Got MEC and Orac compiled on Bela, doesn’t start yet. Waiting for tomorrow’s video, perhaps the SALT stuff contains some hints :slight_smile:

root@bela:~# systemctl status mec
● mec.service - Run MEC at boot
Loaded: loaded (/lib/systemd/system/mec.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Thu 2019-04-11 22:45:59 UTC; 11min ago
Process: 525 ExecStart=/root/MEC/mec-app osckontrol.json (code=exited, status=127)
Main PID: 525 (code=exited, status=127)

Apr 11 22:45:59 bela systemd[1]: mec.service: Service hold-off time over, scheduling restart.
Apr 11 22:45:59 bela systemd[1]: Stopped Run MEC at boot.
Apr 11 22:45:59 bela systemd[1]: mec.service: Start request repeated too quickly.
Apr 11 22:45:59 bela systemd[1]: Failed to start Run MEC at boot.
Apr 11 22:45:59 bela systemd[1]: mec.service: Unit entered failed state.
Apr 11 22:45:59 bela systemd[1]: mec.service: Failed with result ‘exit-code’.

1 Like

I look forward to install and explore on my Raspberry PI. The Easter Holidays coming up will be the perfect time to dive in. I don’t have a clue what to expect, but considering who made this I know it will be cool. :slight_smile:

EDIT: Well, I have watched the videos, obviously, so I do have a clue, I guess. But still a lot of stuff I don’t understand and look forward to investigate. :slight_smile:

Released for Eurorack :slight_smile: (and bela)

@NothanUmber not sure, what your issues is, I’d recommend you just install as per the video.
also make sure your on a recent build of bela if you have had it ‘in a box’ for a while, they have made a lot of changes.

also see my caveats on the bela.io forum…
I’d really like to get some help from bela.io guys at getting better performance, generally PD is pretty hight cpu on the Bela compared to bother rPI and the Organelle.
(its one thing for bela to list great specs, but you need to be able to use them :wink: )


I think whats going to be interesting from here is seeing, if the rPI and Eurorack version are popular or not. Orac 1.0 is really popular on the Organelle, but its self contained - once you start having to have a ‘remote editor’ - does the appear diminish? we wlll see :slight_smile:


(and for completeness here are organelle and PI videos)


1 Like

Thanks, will try the binary distribution once home. Have updated the Bela image to the latest one yesterday, so should be up to date in that regard. Will report how it goes.
For me the appeal with Orac is to have a setup-and-forget data-in-music out box for Eigenharp and Morph. So I’ll probably set up 1-5 sounds and that’s it. So I think I won’t need a display for actual playing. (For fiddling around I will use the Vinpok split monitor I recently got - this can be run either via HDMI+USB or a single USB-C input and supports touch - pretty neat!). Could imagine that some prepared images with good default sounds could be a nice thing for several MPE instrument and Eigenharp enthusiasts that want to “just play”. For mass adoption it might be worth a try how good the default audio out of the Pi3 is (as far as I read much better than pi2?). Pisound is nice (ordered one) but also about 3 times the price of a Pi3 alone by now. If the Pi3 audio out isn’t up to standards then perhaps Hifiberry would be more realistic for a low-cost playing module for the masses? As long as the instrument supports MIDI-over-usb…
Will see what I can come up with sound wise once I get stuff up and running.

1 Like

not what I read…afaik, it’s still PWM thru a low pass filter.
and iirc, its also tends to load the cpu quite badly - ok, the rPI3 has more resources, so not as much of an issue but its not hi-fi :wink:

that said there are quite a few DAC available for the rPI, so anyone can use those… many are pretty cheap ($30?) - but I can’t vouch for something I dont have :wink:

I do have a hifi-berry - but its uses RCA jacks, and doesn’t have audio input which I think really is useful.

PiSound is not perfect , in particular …
a) availability, takes a while to ship to US etc.
b) price, yeah its not cheap - but you get what you pay for , and blokas support is second to none.
c) uses a lot of GPIO pins, and does not break out remaining ones - this means you cannot use with many other HATs, which is a real shame esp. when it comes to a display (I use a hdmi one out of necessity)

anyway, as I said, none of this is Orac specific really - Orac will use whatever audio card you have, and I don’t really have the time, to start helping people setup audio cards … that has to be down to the manufactures.

thats why I recommended PiSound, just because they actually support users, they have a goal to get rPI working as musical instruments , rather than just shipping a bit of hardware.

most others, just give you some install instructions if your lucky… and usually their main focus is on audio playback - e.g. hifiberry is primarily about creating a MP3 player or streamer - they have (last time I looked) little / no interest in low latency audio.
(perhaps Orac on Zythian might make sense, and its using hifiberry - but its also not cheap)

I don’t know… I think its more about getting a ‘cheap musical instrument’,
so perhaps comparing it more to things like the pricing of volcas, organelle, monome norns, rather than trying to ship out for $50.
(note: im not comparing to these as products, just highlighting pricing of instruments starts a tad higher)

I’ve even a slight concern that if the price of entry is too low, then ‘user commitment’ will similarly be low.
eg. I’ll just get a ton of support issues from people that just want to try it ‘because they can’, and it doesn’t cost anything… but then have no real intention of using it

its a tricky thing, for a non-commercial project, I obviously want to focus on the users with a real need, and some commitment esp. if they can help others as well.

2 Likes

Ok, think I got it running! The problem was probably that I didn’t have all the runtime dependencies installed when building it from sources.
Cannot get the OSC connectivity to work though.
Did the following:

  • On Bela:
    • route add default gateway 192.168.6.1 (can now ping stuff in the internet, so it should go to the host)
  • On PC:
    • set 192.168.6.2 in the main.pd patch
    • enabled DSP in Pd
      Pd writes:
      LISTEN:: listen 6101
      connecting to port 6100
      SEND:: connect 192.168.6.2 6100
      LISTEN:: listen 6101

But clicking any buttons in the patch has no effect

netstat -npl | grep mec gives me:
udp 0 0 0.0.0.0:6000 0.0.0.0:* 9182/mec-app
udp 0 0 0.0.0.0:6100 0.0.0.0:* 9182/mec-app

Have tried to change the port in Pd from 6101 to 6100, 6001 and 6000 - didn’t help.

Have only connected the USB cable, using IP over that from Windows (thus 192.168.6.* which works for Win without drivers)

Using: Pd version 0.49.0 on PC

Any idea what might be wrong?

Did you try the release build?
That should have all that’s needed and work as is with the usb connection, as long as you can ping from your pc

Also make sure that the mec service is started, as per video.

yepp, used the pre-built release build. Can ping and ssh to the Bela.
can telnet to 22 (ssh) but not 6000, 6001, 61000 nor 6101 from windows.
The netstat above doesn’t show the mec-app ports 6xxx in state LISTEN

The only related listened-to port is this (tried to set 5432 in Pd - also didn’t work):
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 9196/orac

This is the mec status:

root@bela:~# systemctl status mec
● mec.service - Run MEC at boot
Loaded: loaded (/etc/systemd/system/mec.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2019-04-12 21:00:00 UTC; 50min ago
Main PID: 9182 (mec-app)
Tasks: 7 (limit: 4915)
CGroup: /system.slice/mec.service
└─9182 /root/MEC/mec-app osckontrol.json

Apr 12 21:00:01 bela mec-app[9182]: [f_midi:f_midi 16:0]
Apr 12 21:00:01 bela mec-app[9182]: MecMidiProcessor not open, so invalid forPure Data:Pure Data Midi-In 1 128:0
Apr 12 21:00:01 bela mec-app[9182]: MecApi_Impl::init
Apr 12 21:00:01 bela mec-app[9182]: oscdisplay initialise
Apr 12 21:00:01 bela mec-app[9182]: listening for clients on 6100
Apr 12 21:00:01 bela mec-app[9182]: KontrolDevice initialise
Apr 12 21:00:01 bela mec-app[9182]: KontrolDevice::init
Apr 12 21:00:01 bela mec-app[9182]: kontrol device : listening on 6000
Apr 12 21:00:01 bela mec-app[9182]: KontrolDevice::init - complete
Apr 12 21:00:01 bela mec-app[9182]: KontrolDevice::new client 127.0.0.1 : 6001 KA = 5

Some problem with MIDI - but OSC should work on first sight?

Here the firewall settings and full netstat logs - 6100 is not established:
root@bela:~# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
root@bela:~# netstat -atunp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 505/sshd
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 9196/orac
tcp 0 0 192.168.6.2:22 192.168.6.1:57901 ESTABLISHED 24166/sshd: root@no
tcp 0 0 192.168.6.2:22 192.168.6.1:57900 ESTABLISHED 24162/sshd: root@pt
tcp6 0 0 :::80 :::* LISTEN 230/node
tcp6 0 0 :::22 :::* LISTEN 505/sshd
udp 0 0 0.0.0.0:67 0.0.0.0:* 537/dhcpd
udp 0 0 0.0.0.0:68 0.0.0.0:* 795/dhclient
udp 0 0 0.0.0.0:6000 0.0.0.0:* 9182/mec-app
udp 0 0 0.0.0.0:6001 0.0.0.0:* 9196/orac
udp 0 0 0.0.0.0:24729 0.0.0.0:* 537/dhcpd
udp 0 0 127.0.0.1:37804 127.0.0.1:6000 ESTABLISHED 9196/orac
udp 0 0 127.0.0.1:40372 127.0.0.1:6001 ESTABLISHED 9182/mec-app
udp 0 0 0.0.0.0:6100 0.0.0.0:* 9182/mec-app
udp 0 0 0.0.0.0:43222 0.0.0.0:* 260/avahi-daemon: r
udp 0 0 0.0.0.0:5353 0.0.0.0:* 260/avahi-daemon: r
udp6 0 0 :::17951 :::* 537/dhcpd
udp6 0 0 :::41877 :::* 260/avahi-daemon: r
udp6 0 0 :::5353 :::* 260/avahi-daemon: r

Also checked the Windows firewall, Pd shouldn’t be blocked.

Ok, probably something wrong with my Pd:
routeOSC /$1Desc
… couldn’t create
routeOSC /$1Value
… couldn’t create
routeOSC /$1Ctrl
… couldn’t create
routeOSC /$1Desc
… couldn’t create
routeOSC /$1Value
… couldn’t create
routeOSC /$1Ctrl
… couldn’t create
routeOSC /$1Desc
… couldn’t create
routeOSC /$1Value
… couldn’t create
routeOSC /$1Ctrl
… couldn’t create
routeOSC /$1Desc
… couldn’t create
routeOSC /$1Value
… couldn’t create
routeOSC /$1Ctrl
… couldn’t create
routeOSC /$1Desc
… couldn’t create
routeOSC /$1Value
… couldn’t create
routeOSC /$1Ctrl
… couldn’t create
routeOSC /$1Desc
… couldn’t create
routeOSC /$1Value
… couldn’t create
routeOSC /$1Ctrl
… couldn’t create
routeOSC /$1Desc
… couldn’t create
routeOSC /$1Value
… couldn’t create
routeOSC /$1Ctrl
… couldn’t create
routeOSC /$1Desc
… couldn’t create
routeOSC /$1Value
… couldn’t create
routeOSC /$1Ctrl
… couldn’t create
routeOSC /module
… couldn’t create
routeOSC /page
… couldn’t create
unpackOSC
… couldn’t create
packOSC
… couldn’t create
routeOSC /clearText
… couldn’t create
routeOSC /text
… couldn’t create
routeOSC /selectText
… couldn’t create

Will reinstall the latest stable release

These seem to be externals?
https://puredata.info/downloads/osc/#refrouteOSC

Cannot find this precompiled for Windows (64 bit) on first sight - is it a Mac-only thing?

Edit: Also doesn’t work with Purr Data on Windows, will try on Mac tomorrow.

Edit2: Yay, got it to work on Windows with the 32 bit version of Pure Data: Add package osc-v0.2-git20151117-(Windows-i386-32)-externals.zip and make sure to check “add new libraries to search path” in the Deken config.

Now I can navigate in the menu (scrolling up and down and checking “Midi Learn” and “Mod Learn”. Cannot change any modules nor the “serial” setting at the top - but that might just be a lack of understanding what to do :slight_smile:

It’s in deken

All demos of Pd remote app in my video are on my Windows 10 laptop :slight_smile:

1 Like

Sorry for potential naiveness, don’t really understand how the software is supposed to work :blush:

Is this how it should look like? (Now with the OSC modules loaded I can scroll in the menu at least - so I assume some connection to the Bela is established?)


Or would I have to copy or compile modules first to be able to select some or should the release come with some modules included?

This is what netstat tells me - so it seems to communicate on the 6101 port:
root@bela:~# netstat -atunp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 496/sshd
tcp 0 0 192.168.6.2:22 192.168.6.1:59219 ESTABLISHED 585/sshd: root@nott
tcp 0 0 192.168.6.2:22 192.168.6.1:59218 ESTABLISHED 583/sshd: root@pts/
tcp6 0 0 :::80 :::* LISTEN 225/node
tcp6 0 0 :::22 :::* LISTEN 496/sshd
udp 0 0 0.0.0.0:56096 0.0.0.0:* 228/avahi-daemon: r
udp 0 0 0.0.0.0:67 0.0.0.0:* 526/dhcpd
udp 0 0 0.0.0.0:68 0.0.0.0:* 550/dhclient
udp 0 0 0.0.0.0:6000 0.0.0.0:* 480/mec-app
udp 0 0 0.0.0.0:11979 0.0.0.0:* 526/dhcpd
udp 0 0 0.0.0.0:6100 0.0.0.0:* 480/mec-app
udp 0 0 0.0.0.0:5353 0.0.0.0:* 228/avahi-daemon: r
udp 0 0 192.168.6.2:42755 192.168.6.1:6101 ESTABLISHED 480/mec-app
udp6 0 0 :::60093 :::* 228/avahi-daemon: r
udp6 0 0 :::5353 :::* 228/avahi-daemon: r
udp6 0 0 :::5119 :::* 526/dhcpd

ok, thats means you are connected to MEC,
and I would say MEC is connected to orac
(which is easy as its on the same machine, and your previous log showed it was connected)

but it looks like you don’t have the Orac environment setup correctly,

as it appears Orac doesn’t have the Init preset loaded, nor the modules.

you should be be able to see some warnings in the Orac log as it starts up, if it doesnt list a whole load of modules its loading, you have something wrong :wink:
(note: the bela GUI tends not to print all messages, so you might want to start Orac from the command line, (start_project.sh iirc )

did you install this via the release?
as this would have created a link from /usr/local/orac to /root/Bela/projects/orac

Im a bit confused at how you’re getting into these states, as Ive been doing clean installs on my Salt without issue - and the Bela should just work the same way.
if the install is not working properly, then let me know and I’ll fire up a ‘blank bela’ and test it, and fix it,
its important that its easy for everyone to install.

if your not running the release, then your best bet is to look at how I create the debian package, in particular the post install step - Bela/packaging/orac_pkg/postinst

really you want to run the release, because that way, when I update the release, all you will need to do is apt remove mec orac; apt install ./mec.deb ./orac.deb

yepp, running the release version.

Have this:
root@bela:~# cd /usr/local/orac/
root@bela:/usr/local/orac# ls
README_Bela.md bela.pd data main.pd modules mother.pd orac.json settings.json
_main.pd build externals media modules.exp orac presets subpatches
root@bela:/usr/local/orac# cd /root/Bela/projects/orac
root@bela:~/Bela/projects/orac# ls
README_Bela.md bela.pd data main.pd modules mother.pd orac.json settings.json
_main.pd build externals media modules.exp orac presets subpatches

root@bela:~/Bela/projects# ls -l
total 4
drwxr-xr-x 3 root root 4096 Apr 12 20:56 basic
lrwxrwxrwx 1 root root 15 Apr 12 20:11 orac -> /usr/local/orac

which particular file would it have to find?