Orac 2.0 with MPE support!

its looking for the modules subdirectory (which is there), directly below where its being run from.

its also looking for orac.json, from which it finds the data directory for presets
(/root/data/orac -> presets/Init/params.json)

(the presets are copied to the right place in the post install step)

(Ive noticed the media directory is wrong, in orac.json, it should be /root/media, but thats only affects samples, and your not at that stage yet :wink: )

can you do the following and pipe output to a file, and then share it somewhere

export BBB_ADDRESS=localhost;~/Bela/scripts/run_project.sh orac

you should see something like

root@salt:~# export BBB_ADDRESS=localhost;~/Bela/scripts/run_project.sh orac
Checking the board is up and running at localhost...done
Running orac...
Running /root/Bela/projects/orac/orac 
Running Pd 0.48-2
Audio channels in use: 2
Analog channels in use: 8
Digital channels in use: 16
No MIDI device enabled
bonk version 1.5
fiddle version 1.1 TEST4
pique 0.1 for PD version 23
sigmund~ version 0.07
KontrolRack: device = midi
Rack Parameters :127.0.0.1:6001
------------------------
Parameter Dump : utility/empty : utility/empty
----------------------
client connected pd.osc:127.0.0.1:6000
KontrolRack::loading resources
KontrolRack::module found: fx/bitcrusher
KontrolRack::module found: fx/chorus
KontrolRack::module found: fx/clds
KontrolRack::module found: fx/dclip
KontrolRack::module found: fx/delay
KontrolRack::module found: fx/dtanh

ending something like

----------------------
Parameter Dump : utility/empty : utility/empty
----------------------
Parameter Dump : utility/empty : utility/empty
----------------------
Parameter Dump : utility/empty : utility/empty
----------------------
Parameter Dump : utility/empty : utility/empty
----------------------
Parameter Dump : utility/empty : utility/empty
----------------------
Parameter Dump : utility/empty : utility/empty
----------------------
Parameter Dump : router/serial : router/serial
----------------------
Parameter Dump : utility/clock : utility/clock
----------------------
module order set to [s1 s2 m1 m2 m3 p1 a1 a2 a3 b1 b2 b3 b4 c1 c2 c3]
expr divide by zero detected
Rack Settings :127.0.0.1:6001
------------------------
mainDir : .
dataDir : /root/data/orac
mediaDir : /media
moduleDir : modules
userModuleDir : ./usermodules
currentPreset : Init
Preset : Init
loading settings : rack
preset loaded  : Init
preset loaded  : Init

that is the output:
http://fstrixner.de/files/Orac/orac.log

The order is a little different, this part is not at the bottom for me, but before the mainDir: section:
loading settings : rack
preset loaded : Init
preset loaded : Init

Will in the meantime set up Orac on my Pi2, perhaps, if this works, I can find out the difference.

ok, so orac is fine…

but for some reason MEC is not connected to Orac. (I assume you had orac running)

I can see here, if I start MEC, but not orac - I get exactly what you have in your video.
basically MEC is processing the UI, but has no ‘rack’ to give you details for.

On first sight Orac seems to be running:
root@bela:~# ps -ae | grep -Ei “mec|orac”
498 ? 00:00:10 mec-app
5289 pts/1 00:00:40 orac

And at least some communication seems to be happening(?):
root@bela:~# netstat -atunp |grep -Ei “mec|orac”
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 5289/orac
udp 0 0 127.0.0.1:37903 127.0.0.1:6001 ESTABLISHED 498/mec-app
udp 0 0 127.0.0.1:45912 127.0.0.1:6000 ESTABLISHED 5289/orac
udp 0 0 0.0.0.0:6000 0.0.0.0:* 498/mec-app
udp 0 0 0.0.0.0:6001 0.0.0.0:* 5289/orac
udp 0 0 0.0.0.0:6100 0.0.0.0:* 498/mec-app

ok, Im noticing for some reason bela is being really slow/difficult about updating itself if mec starts after orac… its doesn’t appear to get getting the meta data as it should…
(it doesn’t matter on other platforms which starts first, as they negotiate at startup)

try the following… start mec first ie.

systemctl stop mec
make sure orac is stopped

systemctl start mec
connect pd client (this doesnt really matter)
export BBB_ADDRESS=localhost;~/Bela/scripts/run_project.sh orac

for me this works, and is what I have generally have been doing - as mec is enabled on startup,
and then i run the orac project.

That worked! Well at least it seemed it did, don’t see too many modules, tried to load midiout and got this with orac (segfault is reproducible when choosing the midiout module):
Parameter Dump : Clock : utility/clock

pg_main
Main
int [S],c_bpm [S],BPM [S], 10.000000 [F], 480.000000 [F], 120.000000 [F],
bool [S],c_midiout [S],Midi Out [S], 0.000000 [F],

Segmentation fault
Makefile:515: recipe for target ‘runonly’ failed
make: *** [runonly] Error 139

This is the list of modules I can choose from:

utility:
arper
chordroll
clock

midiout
note_cvin
noterepeat

yeah, Ive been testing here… for some reason on bela mec is not getting sync’d properly if it starts after orac… I’ll investigate, but its probably bela dropping udp packages because ‘its too busy’.

(honestly, Im getting a bit tired of bela/salt - its a great thing when it works, but its just seems to be quite unstable when you start really pushing it!)

yeah, error looks like libpd is crashing due to some kind of midi output issue (again fine on other platforms) … I’ll have to check perhaps the bela rendered is not probably doing midiouput…
(perhaps you can see why I getting fed up with bela :wink: )

anyway other modules are fine.

no there are loads of other modules :slight_smile:
you are just in the ‘utility’ category…, carry on up, and you’ll see “…”
click on this to go up a level, then you can into into synths etc.

a good first test, since it doesn’t require midi … (*)
load “seq/euclid” into a1, set note # to 1
load “synth/basicmono” into a2…
and you should get sound out :wink:

(*) Ive not played with midi setup on bela for quite a while - I assume its working still with a single midi device.

Ah, stupid, have to scroll up when utility is shown… yeah, lots of modules - great!
Regarding Bela: Sub 1ms latency is of course great, but if it doesn’t transfer to Orac anyways then this won’t help. Will set up the Pi2 (Pi3B+ with pisound arriving soonish), probably a better fit then.

No sound from euklid:

loadmodule: loading sequence/euclid into a1
error: receive~ outR-a1: no matching send
error: receive~ outL-a1: no matching send
error: receive~ outR-a1: no matching send
error: receive~ outL-a1: no matching send
error: receive~ outR-a1: no matching send
error: receive~ outL-a1: no matching send

no euclid, is just a sequencer … you need to put a synth into the slot following it (a2)

(the errors aren’t ‘real’ errors, they are just pd complaining, when I re-patch so temporarily remove its outputs :wink: )

yeah, read this about ‘bela performance’ (https://forum.bela.io/d/545-bela-performance/32) and you’ll see why I was kind of disappointed…
basic upshot is, sure if you code in C++ specifically for bela, you might be ok - but use higher level tools (pure data, super collider) and its very likely you’re not get it…

still no sound (euklid is on a1, basicmono on a2):
loadmodule: loading synth/basicmono into a2
error: receive~ outR-a2: no matching send
error: receive~ outL-a2: no matching send
error: receive~ outR-a2: no matching send
error: receive~ outL-a2: no matching send
error: receive~ outR-a2: no matching send
error: receive~ outL-a2: no matching send

Ah, getting sound, must change notes from 0 to e.g. 4
Works, great! Thanks a lot!

you told euclid to play some notes :wink: ?

yes, the problem sat in front of the monitor… :wink:
Great, play time!

2 Likes

yeah - I probably should caveat what I said…
if you keep the load ‘reasonable’ it does work - its not that its useless, just I was disappointed.

anyway have fun, sorry took so much fiddling around.
let me know how you get on with midi if you try it :slight_smile:

btw: if you want the samples to work, you’ll need to change orac.json to

{
	"dataDir":	"/root/data/orac",
	"mediaDir":	"/root/media",
	"userModuleDir":"/root/media/orac/submodules"
}

Sure, will give MIDI a try! If it works fine with Bela then I’m happy because this would be a great use for this box. The neat thing is that it can be bus powered, so Bela in combination with Onde could be a perfect combination!
Thanks so much for your great work, a lot to explore here! :slight_smile:

Yay, the Linnstrument can be bus-powered by the Bela when bus powering the Bela from the PC. Onde standalone setup here I come!
MIDI is working out of the box - at least for the basic mono synth (it crackles a little bit, even if I forward the outputs of orac to /dev/null).
Basic Poly only crackles with higher or lower frequency based on note, no real pitch detectable.
And it seems to totally stress out MEC, you can watch the individual menu entries update one line per two seconds :slight_smile:

A naive plug Pico in and play attempt didn’t work yet, Pico is probably not configured in MEC by default (should be able to get this going on my own).

I’ve installed Orac 2.0 in my Organelle and the new MEC app and am now unable to get my Pico to speak to the Organelle. I run MEC and then launch Orac set to midi 0.

Is there some stage that I am missing out?

At least for Bela Pico isn’t configured in MEC by default. Have a look e.g. here how a pico enabled config would look like:


Think you would have to add this to ~/MEC/osckontrol.json
Experimenting with that on Bela, let’s see…

1 Like

At least on Bela the Pico adventure ended soonish. Pico firmware isn’t part of the default release it seems, so we have to copy stuff over from git.

log:create eigenharp pico
log:create EF_Harp
log:pic::usbenumerator_t::enumerate : searching V 8505 P 257
log:pico loading firmware…
log:pic::usbenumerator_t::enumerate : searching V 8505 P 1
log:pic::usbenumerator_t::enumerate found : 2139.0001.0004.0001
log:pic::usbdevice_t::usbdevice_t usb device create 2139.0001.0004.0001 iface 0
log:pic::usbdevice_t::impl_t::open_usb_device 2139.0001.0004.0001
log:pic::usbdevice_t::impl_t::open_usb_device: found device 2139.0001.0004.0001
log:pic::usbdevice_t::impl_t::open_usb_device: opened device 2139.0001.0004.0001
log:usbdevice opened low speed
log:usbdevice opened successfully
log:unable to open IHX firmware: …/eigenharp/firmware/./resources/pico.ihx
log:error loading pico
log:unable to find device
Eigenharp::init - started
oscdisplay initialise
listening for clients on 6100
KontrolDevice initialise
KontrolDevice::init
kontrol device : listening on 6000
KontrolDevice::init - complete
Segmentation fault

Got one step further by providing pico.ihx from git:
eigenharp initialise
EigenharpHandler enabling for mecapi
log:eigenfreed v0.3 Alpha/Tau/Pico, experimental - Author: TheTechnobear
log:create EigenFreeD
log:pic::usbenumerator_t::enumerate : searching V 8505 P 2
log:pic::usbenumerator_t::enumerate : searching V 8505 P 260
log:pic::usbenumerator_t::enumerate : searching V 8505 P 3
log:pic::usbenumerator_t::enumerate : searching V 8505 P 261
log:pic::usbenumerator_t::enumerate : searching V 8505 P 1
log:pic::usbenumerator_t::enumerate found : 2139.0001.0002.0001
log:create eigenharp pico
log:create EF_Harp
log:pic::usbenumerator_t::enumerate : searching V 8505 P 257
log:pico loading firmware…
log:pic::usbenumerator_t::enumerate : searching V 8505 P 1
log:pic::usbenumerator_t::enumerate found : 2139.0001.0002.0001
log:pic::usbdevice_t::usbdevice_t usb device create 2139.0001.0002.0001 iface 0
log:pic::usbdevice_t::impl_t::open_usb_device 2139.0001.0002.0001
log:pic::usbdevice_t::impl_t::open_usb_device: found device 2139.0001.0002.0001
log:pic::usbdevice_t::impl_t::open_usb_device: opened device 2139.0001.0002.0001
log:usbdevice opened low speed
log:usbdevice opened successfully
log:using firmware ./pico.ihx
log:usbdevice_t::impl_t::start_pipes() : pipes started!
log:usbdevice_t::impl_t::detach() : detaching client
log:usbdevice_t::impl_t::thread_main()- stopping…
log:usbdevice_t::impl_t::thread_main()- stopped
log:usbdevice_t::impl_t::detach() : done detaching client
log:usbdevice_t::impl_t::detach() : detaching client
log:usbdevice_t::impl_t::detach() : done detaching client
log:usbdevice_t::impl_t::detach() : detaching client
log:usbdevice_t::impl_t::detach() : done detaching client
log:pico firmware loaded
log:attempting to find pico…
log:pic::usbenumerator_t::enumerate : searching V 8505 P 257
log:attempting to find pico…
log:pic::usbenumerator_t::enumerate : searching V 8505 P 257
log:attempting to find pico…
log:pic::usbenumerator_t::enumerate : searching V 8505 P 257
log:pic::usbenumerator_t::enumerate found : 2139.0101.0003.0001
log:pico loaded dev: 2139.0101.0003.0001
log:found device
log:pic::usbdevice_t::usbdevice_t usb device create 2139.0101.0003.0001 iface 0
log:pic::usbdevice_t::impl_t::open_usb_device 2139.0101.0003.0001
log:pic::usbdevice_t::impl_t::open_usb_device: found device 2139.0101.0003.0001
log:pic::usbdevice_t::impl_t::open_usb_device: opened device 2139.0101.0003.0001
log:usbdevice opened low speed
log:usbdevice opened successfully
log:created USB device
log:close device to allow active_t to open
log:usbdevice_t::impl_t::detach() : detaching client
log:usbdevice_t::impl_t::detach() : done detaching client
log:usbdevice_t::impl_t::detach() : detaching client
log:usbdevice_t::impl_t::detach() : done detaching client
log:create pico loop
log:pic::usbdevice_t::usbdevice_t usb device create 2139.0101.0003.0001 iface 0
log:pic::usbdevice_t::impl_t::open_usb_device 2139.0101.0003.0001
log:pic::usbdevice_t::impl_t::open_usb_device: found device 2139.0101.0003.0001
log:pic::usbdevice_t::impl_t::open_usb_device: opened device 2139.0101.0003.0001
log:usbdevice opened low speed
log:usbdevice opened successfully
log:pic::usbdevice_t::usbpipe_in_t::impl_t 130
log:pico::active loading calibration from device
log:pico::active loading calibration done
log:created pico loop
EigenharpHandler device d: 2139.0101.0003.0001 dt: 0
dk: pico r: 0 c: 0
s: 1 p: 0
log:pico::active restoring led mask:255
log:pic::usbdevice_t::control request failed: -4 - LIBUSB_ERROR_NO_DEVICE 40:b2
log:usbpipe_in_t::start()
log:usbpipe_in_t::submit error LIBUSB_ERROR_NO_DEVICE (-4)
log:pico::active pipe died
log:pico::active pipe_stopped
log:pic::usbdevice_t::control_out request failed: -4 - LIBUSB_ERROR_NO_DEVICE 40:bb
log:restarting pico keyboard…
log:pico::active pipe_stopped
log:pic::usbdevice_t::control_out request failed: -4 - LIBUSB_ERROR_NO_DEVICE 40:bb
^Cmec_app int handler called
mec_app wait for mec thread
mec_app mec thread stopped
mec_app exit
mec_app exit handler called