The Definitive Guide to Trying to Connect Your OP-1 Via USB-MIDI

@GCF that Systemd comment was meant as a sarcastic remark on how many craptonnes of unnecessary features are built into Systemd already… not as an encouragement to add some more stuff :stuck_out_tongue:

this one worked reasonably well with some devices (including op1) connected through usb hub and octatrack (since it doesn’t have usb midi) conected thorugh midi to usb cable on a rpi3, even had an ableton push connected as a display (writing messages with sysex, left that part out in the example))

  • install dependencies:
sudo apt-get install jackd2 fluidsynth mididings libportmidi-dev
  • disable services (no idea what I’m doing, probably not neccesary, maybe breaks some stuff…)
sudo update-rc.d dhcpcd disable
sudo update-rc.d rsyslog disable
sudo update-rc.d ntp disable
sudo update-rc.d triggerhappy disable
sudo systemctl disable hciuart

  • edit system startup script
sudo nano /etc/rc.local
  • put this before "exit 0"
sh /home/pi/startup.sh &
  • create startup script
nano /home/pi/startup.sh
  • paste the following text (not sure if the “performance” section is neccesary / possible different device than pi3, maybe leave it out)
echo -----------…performance…---------------------------------------
for cpu in /sys/devices/system/cpu/cpu[0-9]*; do echo -n performance <br>| sudo tee $cpu/cpufreq/scaling_governor; done
echo ----------------------------------------------------------------------
sudo mount -o remount,size=128M /dev/shm
echo ----------------------------------------------------------------------
printf "
"
echo ----------start router------------------------------------------------
eval "mididings -f /home/pi/mdRouter.py"
echo ----------------------------------------------------------------------
printf "
"

  • create “mididings” startup script (I think indentation doesn’t matter since it’s not directly compiled with python but I could host the .py files somewhere if anyone is interested)
nano /home/pi/mdRouter.py
  • text (I removed the push code for clarity so the whole script might be broken, didn’t test it)
config(

in_ports = [
( ‘lpk_IN’, ‘LPK25:0’ ),
( ‘nanoPad_IN’, ‘nanoPAD2:0’ ),
( ‘miniBrute_IN’, ‘MiniBrute:0’ ),
( ‘op1_IN’, ‘OP-1.*Midi.*Device:0’ ),
( ‘octaTrack_IN’, ‘USB.*MIDI.*Interface:0’ ),],

out_ports = [
( ‘octaTrack_OUT’, ‘USB.*MIDI.*Interface:0’ ),
( ‘miniBrute_OUT’, ‘MiniBrute:0’ ),
( ‘pitchFactor_OUT’, ‘PitchFactor Pedal:0’ ),
( ‘op1_OUT’, ‘OP-1.*Midi.*Device:0’ ),],
)

from mdObjects import *

run( scenes = { 1: Scene( ‘router: octatrack routing’, notesToOcta ),},

control = PortSplit({ ‘octaTrack_IN’: [octaToPitch,octaToBrute,octaToOp,clockDist],
‘miniBrute_IN’: bruteToOcta,
‘op1_IN’: opToOcta,}))

  • create the second “mididings” script
nano /home/pi/mdObjects.py
  • text:
from mididings import *
from mididings.extra import *

notesToOcta = PortFilter(‘lpk_IN’,‘nanoPad_IN’) >> Filter(NOTE) >> Port(
‘octaTrack_OUT’)

bruteToOcta = ChannelFilter(7) >> Filter(NOTE) >> Port(
‘octaTrack_OUT’)

opToOcta = ChannelFilter(8) >> Filter(NOTE|CTRL) >> Port(
‘octaTrack_OUT’)

octaToBrute = ChannelFilter(7) >> Filter(NOTE) >> Port(
‘miniBrute_OUT’)

octaToOp = ChannelFilter(8) >> Filter(NOTE|CTRL) >> Port(
‘op1_OUT’)

octaToPitch = ChannelFilter(10) >> Filter(CTRL) >> Port(
‘pitchFactor_OUT’)

opClock = Channel(8) >> Port(
‘op1_OUT’)

pfClock = Channel(10) >> Port(
‘pitchFactor_OUT’)

clockDist=Filter(SYSRT) >> [opClock,pfClock]


@GCF that Systemd comment was meant as a sarcastic remark on how many craptonnes of unnecessary features are built into Systemd already... not as an encouragement to add some more stuff :P

haha didn’t catch the sarcasm. I’ve only used Systemd a little for the purpose of running test scripts on boot that didn’t require the system to do anything else. What would you recommend otherwise? I suppose running it as a service would allow it to just run in the background, looking for new USB MIDI devices and mapping them to each other.

@GCF I’m old enough to say you should do whatever works for you. A younger me would have passionately argumented for supervise and djb software in general but in reality is doesn’t matter, as long as it works :slight_smile: You might even want to stick it in your initrd as a busybox-compatible script to speed up boot time

Hi,


What disadvantages would this one: http://www.hobbytronics.co.uk/usb-midi-converter have to say the KENTON Midi Host?

Is it possible to get this thread pinned with the others on the top so that it is always visible? I feel like that would eliminate the number of new threads created asking for help on this.

This exact thought crossed my mind too this morning @GCF. Before pinning, it might be an idea to distill this thread down into a single concise post. It started with the title “definitive”, however, I feel that’s become a bit lost amongst the rest of the information, useful as it is.


CB
Is it possible to get this thread pinned with the others on the top so that it is always visible? I feel like that would eliminate the number of new threads created asking for help on this.


@cloudburst I agree. I will try to grab some time to read through all of the posts and create a list of things that work and don’t work. Then I will edit the original post to reflect all of that info. Sound like a reasonable plan? Or would starting a brand new post be a better path?

@GCF - many thanks. Perhaps we should agree the content in this thread and then create a new (concise and focused) post for pinning.


CB

@GCF an edited up to date first post – whether on this thread or a new one would be great, and definitely should be pinned. Thanks!

I’m probably late to the party but I just learned that you can make an iPad and OP1 talk midi with nothing but a camera connection kit adapter and cables. Wow!

I'm probably late to the party but I just learned that you can make an iPad and OP1 talk midi with nothing but a camera connection kit adapter and cables. Wow!
Hi ! could you elaborate on this ? I thought an ICM4+/ICA4+/MIO4 was required to hook'm up...

All this is a bit of a headache. So to connect a usb keyboard (or my Kordbot when it arrives) to the OP-1 (so i can trigger OP-1 sounds from keyboard or kordbo) Im best purchasing the IconnectMIDI4? As this is a usb host thingy too?

I would say if you want to connect multiple USB MIDI devices (OP-1, Kordbot, USB MIDI keyboard, etc) then the MIO4 is probably the best option. The iConnectMIDI4+ adds the feature of audio passthrough for iPad/Mac. So if you don’t need that, don’t spend the extra money.

Regarding the sticky topic: Maybe a FAQ with links to the relevant threads would be an alternative since not only the USB discussions seems to be a topic that pops up regularly. Though it definitely is the one that’s been iterated the most.

Hi all,


I have a Moog Mother 32, iConnectMidi4+ and an OP-1 - I have connected everything up and am receiving midi signals from the Moog on my OP-1.
When I press a key on the OP-1, The Midi-in lights up on the Moog. However, I am unable to get the Moog sound output on to the OP-1. I want to further manipulate the Moog sounds with the OP-1 synth engines… Is this possible?

@ShaunM90 how did you connect the Mother back to the OP-1? Can you get your OP-1 to record other sources, e.g. your cell phone?

At the moment, I have a DIN MIDI Cable plugged into the Moog Mother 32 and have attached the other end of the cable to the Midi Out 1 on the iConnectMidi4+.


I then have a 4-way usb plugged into the the USB port 1 on the iConnectMidi, I have plugged the OP-1 usb into this.
I can see Midi messages are being sent because the Moog Midi In lights up when a key is pressed on the OP-1.

I really am new to this stuff, so apologies if I have missed something silly. I will attempt to try my phone now and let you know the outcome.
I did also read about port routing, I believe I have set that up correctly as some form of communication between devices is happening.

I appreciate any help with this.

@ShaunM90 The OP-1 does not do USB Audio. You need to plug an audio cable from the output of the Mother to the line In of the OP-1

Also keep in mind what @borden said about enabling the line in for recording either directly or to a synth or drum sampler patch