How to : Advanced Midi Setup (3.1)

Hi there

I’m afraid I’m having trouble with this.

Placed this in the patch folder:

> nb # MIDI PARAMETERS:START
> # midiIn,2
> # midiOut,1
> # midiInGate,0
> # midiOutGate,0
> # midiDevice,E-MU XMidi1X1 Tab:0
> # MIDI PARAMETERS:END
> oscsend localhost 4000 /midiInCh i 2
> oscsend localhost 4000 /midiOutCh i 1
> oscsend localhost 4000 /midiInGate i 0
> oscsend localhost 4000 /midiOutGate i 0
> aconnect "E-MU XMidi1X1 Tab:0" "Pure Data:0"
> aconnect "Pure Data:1" "E-MU XMidi1X1 Tab:0"
> aconnect "LPK25 MIDI:0" "Pure Data:0"
> aconnect "Pure Data:1" "LPK25 MIDI:0"
> aconnect "VT-4:0" "Pure Data:0"
> aconnect "Pure Data:1" "VT-4 MIDI:0"

Output on the EMU is working, but input from the LPK25 is not.

(Tested the LPK via OSS and it is working)

I’m receiving from the LPK25 via [notein 2] - is that the right way to receive the data from ASLA?

Could anyone advise? Thanks

ok, so lets me understand this correctly,

first : have you watched my video, and read my first post
… theres some details in their that I need to assume you already understand.
(and I dont have time to repeat :wink: )

second: as per the video, did you test the LPK25 on its own with the Organelle, and did it work? when you used it with the just using settings->midi-> device (i.e.without messing with patch_loaded.sh)

** if it works with this** then you know it works with alsa, so you can forget oss midi, and we can look at the multi device setup. (step 2)

if it doesn’t work on its own then we need to get this working first.
and you need to run DiagnosticLog (find on forum) so that I can see if your LPK25 is being detected correctly , by alsa.

about your problem,
so you want output via E-MU and input from LPK25
you’ve tested the E-MU output presumably via the organelle keyboard, and thats working,
but its LPK is not working

ok, I first assume you are sending on midi channel 2, id be tempted to try midiIn = 0 initially, so works on any channel, and try this with a C&G patch , to see if this is working … this tells you if you are getting midi data thru, without having to worry about midi channel.

if that is not working, then my suspicion is the LPK25 has multiple midi ports… this would also cause issue in single device setup, hence why we checked that first :wink:
to fix that you can get the port number by using settings->midi->device, and twisting encoder, see if there are other ports (it might not be evident from display, if they are very similarly named!)
apart from that you would need to run DiagnosticsLog and post the results (as described elsewhere on the forum)

btw: sorry, I really don’t want to start talking about ossmidi, beyond the details Ive already put in the top post here (which does cover quite a bit of info) - ossmidi is unlikely to be necessary, as its actually not as comprehensive/stable as alsa , and I don’t have time to mess with 2 different setups miid apis, and it’ll also just cause confusion on the forum…

Hey! Thanks a lot for the fast response

Just recorded this video to show you what I’ve done: https://youtu.be/Tc5ID2VJ9VY

Tom

ok, so to be clear you got the aconnect lines from the root directory patch_loaded.sh where you had selected the LPK and then later the E-MU… and then just put these in your patch_loaded.sh in the patch directory?
correct?

ok, so debug this, we could do the following…
a) just select the LPK25 in settings->midi (so not patch_loaded.sh)
then on the organelle in a terminal window (little black square down in bottom left of display)
type

aconnect -l 

then show us what it says here

b) put the modified patch_loaded.sh in place
and do the same again

basically, ‘aconnect -l’ will display all available devices and how they are connected with alsa

if you dont have access to a keyboard, then you can use the DiagnosticLog patch, which does the same - and sends the output to a file on the usb/sdcard.

Ok, I’ve resolved it.

This was the problem. I had copied the names of the devices from the Organelle screen and typed them in. I didn’t realise that the root patch_loaded.sh would update as I selected each one, and there were some minor differences in how they were called out. I copy pasted each one verbatim and it works. Thank you, that’s really saved my neck.

One thing I don’t understand: what does the channel do when handling MIDI in this way? Is all data on other channels purged?

My input via LPK25 is on Channel 2, but the output via the EMU is using 10 channels. It seems to be all working though so I don’t see what the channel selection does.

Some further thoughts -----------

I feel like the process of getting that working, despite your pretty thorough video, was enough of a pain in the arse that most people won’t bother. It’s really cool to be able to do this on a patch-by-patch basis - that’s definitely important.

I hear you on the tiny screen but I feel like it’s necessary to find a way of implementing it, because flexibility is one of the beautiful things about the Organelle and it should be made available to the less hardcore users.

How about: All connected devices show up in a list. So if there’s one device it’s really short and easy. If there’s more they get added to the bottom.
Enabled/Disabled can be baked in with the channel selector making it 3 lines per device:

Name
Input (Disabled/Omni/1/2/3/4…)
Output (Disabled/Omni/1/2/3/4…)

Then two options at the bottom:

Save-to-patch
Save-to-global

I think that would work? Any thoughts?

1 Like

yeah, unfortunately that can’t work, for 2 reasons…
the screen is too small to display the full name, and also the ‘user description’ is a little different from the string required for alsa connection.

but glad you got it working :slight_smile:

ok, im not quite sure what you mean…
the midi channels referred to in midi settings are the channels used by default for patches.
the input is used to replicate the organelle keyboard, the output for notes/knob movements from organelle.

they are used for quick midi interaction without need to change patches.
I personally done use them much, and I do something pretty different in Orac :wink:

no the data does not get filtered, PD sees all data with things like notein, its just mother.pd does not translate them to ‘note’ messages. (look at mother.pd you’ll see what i mean)


ok, this really leads on from the last point…

midi configuration can get very complex, with multiple devices, channels , how they interact with the patch etc.

so the goal of the midi settings on the Organelle were ‘limited’ , to the following:

  1. try to work ‘out of the box’ with no configuration
  2. work for one midi device
  3. allow for midi device selection where there are multiple devices, or also when some devices have ‘quirks’ like multiple midi ports.
  4. allow manual configuration for more ‘complex’ cases i.e. don’t impose limitations.

Id say its reasonable to say a good percentage of Organelle users, do not attach any midi controllers/synth to the Organelle, and of those that do a big percentage (80%?) use one device, most likely id say a controller (to get a bigger keyboard, with velocity)

so the current ‘goal’ probably hits 90% use case?

one thing I think the midi settings should have had added, was a separate midi input and output device (like channels) … honestly, for some reason it only occurred to me when we were ready to go with the 3.x release, and I then forgot it.
… but I suspect a separate input/output device, would hit another heathy % of use cases.

from there, it gets more complex quickly…

  • per patch control,
    honestly I doubt is that common a requirement, Id have thought most users use the same controllers on all patches? I know from experience can be very confusing. e.g. ive forgotten that a patch wired to a particular controller, so my controller was working on some patches but not one of them!
    this means if you have a ‘save to patch’ you also need to be able to recall from the patch…but thats not to tricky to implement… though you probably also need a ‘revert to global option’ too.

  • multiple controllers,
    you have simplified your use case, where they share midi channels, but as you can see in my video, thats not the only way, you can actually make it so that different controllers come in on different channels e.g.controller #1 = 1-16, controller #2 17-32 … which you want, is really down to how a patch works, capabilities of a controller (e.g. some might only be able to work on channel 1) , if you want you controllers to be ‘equivalent’ or distinct

  • multiple outputs
    similar to multiple controller, but (almost always) you want them to be distinct, and so for multitimbral synths that means splitting 1-16,17-32
    (btw:this also complicates patches, since they can no longer say midi channels are limited to 1-16!)

I agree, unfortunately the one of the other beautiful things about the Organelle is its simplicity, the fact that any one (tech or not) can use it.

I think we have to be really careful as ‘techies’ that by adding flexibility we don’t also add complexity…
it’s truly a balancing act.

I (personally) would prefer the Organelle didn’t end up with a deep hierarchy of menu settings trying to cope with every use-case I can think of.

thats not to say I disagree with your suggestions, nor that the balance is ‘tilted’ the correct way currently, rather just an insight to where we are.

as I said, I definitely think input and output device should be separated,
perhaps per patch save/recall, if it can be intuitive… and there is a need seen for it.
(its actually pretty easy to copy the global file, its the editing which i think is more intimidating)

unfortunately, I still suspect, multiple controllers/outputs is perhaps a step too far in complexity… without redesigning the UI quite a bit.

but never say never,
(and of course this is just my view, owen/chris might have different opinions)

This is really good thinking imo, especially to not overcomplicate things and keep things simple for cases where it’s best kept simple. Maybe there’s a way to keep the “default settings” involved in this no more complex than they currently are, but allow for more complex configurations for those who would want it.

By separate midi in/out, do you mean being able to select “note receive”/“note send” on or off? That would also be a great option for clock send/receive.

This may be a particular (maybe even uncommon) example, but in trying to have my Reface DX control Analog 4 (notes), while also syncing to Organelle clock, it’s been a bit of a mind bender mainly due to the fact that there’s no way to turn off clock send on the DX! I can turn off clock receive on A4, but no tempo presets (which organelle as clock would allow).

Currently I am doing A4 clock -> organelle -> DX, and DX notes -> A4
I could also try organelle clock -> A4(thru) -> DX, and DX notes -> org -> A4

This all not so much to say here’s what I’m doing and hence more in/out on/off midi options would help me, but more so to give some examples to further illustrate what @thetechnobear was saying on how/why midi can get very complicated, even with just a few devices! That said, it’s always useful to be able to turn on or off clock/note send/receive, on a per patch, per orac preset basis - but how to keep it simple while allowing for configurations (but not forcing users to do configuration setup for every patch etc) I can see why this might be a tricky.

1 Like

no :slight_smile:
what i mean is currently in settings->midi, you select A (one) midi device which is used for input and output. its always been this way on the Organelle.
But I think a quite common scenario is having a midi device for input (a controller) and a different midi device for output (a synth)… and this doesn’t make the UI any more complex, as we already have different channels for input/output, so logical to also have device separated.

clock… yeah, that actually not handled by the midi setup, nor even mother.pd this is handled by the ‘metronome’ subpatch, which unfortunately is copied into nearly every patch, so would have to be updated in every patch.

I do quite like that it ‘auto detects’ clock, its one less thing to think about, but perhaps there should be a mode selector - auto/master/slave … it could then be defaulted to auto, but you could override - if i remember, i’ll look at that for Orac (I want to do some changes to clock for the next release anyway)

1 Like

btw… Ive been beta testing Blokas Midihub, which will be crowdfunding in Q1 2019,
this is fantastic for pairing up with the Organelle (and other things) and resolving these kind of midi issues :slight_smile:

my review is linked to on their info page

https://blokas.io/midihub/

you can see the Organelle getting in the action on my setup i was using at the time :wink:

2 Likes

Excited for Midihub and joined the crowdfunding shortly after it was announced. In the meantime I’m trying to get two MIDI controllers working unsuccessfully on my Organelle M with OS 3.2.

I can get both of them working on their own, but once I modify patch_loaded.sh with aconnect commands for both (copied after saving the MIDI settings from patch_loaded.sh while connected to each one individually) then neither one responds. Here’s what I have in patch_loaded.sh:

# MIDI PARAMETERS:START
# midiIn,0
# midiOut,1
# midiInGate,1
# midiOutGate,1
# midiDevice,Bass Station II:0
# MIDI PARAMETERS:END
oscsend localhost 4000 /midiInCh i 0
oscsend localhost 4000 /midiOutCh i 1
oscsend localhost 4000 /midiInGate i 1
oscsend localhost 4000 /midiOutGate i 1
aconnect "Bass Station II:0" "Pure Data:0"
aconnect "Pure Data:1" "Bass Station II:0"
aconnect "nanoKONTROL:0" "Pure Data:0"
aconnect "ttymidi:0" "Pure Data:0"
aconnect "Pure Data:1" "ttymidi:1"

I also tried spelling the device names with MIDI 1 at the end because I saw that in diag_log.txt as so:

ACONNECT 
client 0: 'System' [type=kernel]
    0 'Timer           '
    1 'Announce        '
client 14: 'Midi Through' [type=kernel]
    0 'Midi Through Port-0'
client 20: 'nanoKONTROL' [type=kernel,card=1]
    0 'nanoKONTROL MIDI 1'
client 24: 'Bass Station II' [type=kernel,card=2]
    0 'Bass Station II MIDI 1'
client 128: 'ttymidi' [type=user,pid=410]
    0 'MIDI in         '
    1 'MIDI out        '

I’m sure I’m missing something obvious, but so far it hasn’t jumped out at me. Any help will be greatly appreciated! Thanks!

Was there any other info in diag_log.txt? you could also try moving or renaming the patch_loaded.sh file so that it doesn’t run on startup, and instead type the aconnect commands manually (after you launch a patch) to see if any more useful info or errors get spit out.

Yeah, lots. I don’t see anything in there that looks like an error associated with the aconnect commands, so I’ll try entering them on the command line once I get a monitor and keyboard connected. I also tried them on their own bus versus in the USB hub with the same results.

Another solution would be to use DIN to TRS MIDI for the Bass Station II, but I’m trying to reduce the number of cables / devices I need while travelling and I love that the Organelle can power and host the BS II and nanoKONTROL together.

Thanks!

If you have the Organelle on your network, you can also connect over ssh / WiFi and enter the commands that way. In a terminal connect:

ssh music@organellem.local

The pw is ‘music’.

That’s great! I think I read that someplace, but hadn’t thought about it since. Now I can think of all sorts of reasons to ssh into the Organelle! In any case, I entered the commands on the terminal, got no errors and was able to get both devices working.

I wonder if this comes down to where I’m placing patch_loaded.sh? I’ve tried it in the root of the sdcard and in a new folder I created called System as explained in the video. In both cases MIDI Learn works if in patch_loaded.sh I connect only one device, but ignores both devices if I connect two.

Alright! I think I’ve gotten to the bottom of this. I added a line with “aconnect -x” to patch_loaded.sh in front of the rest of the aconnect commands and both MIDI devices are now operating and responding to MIDI Learn. Not sure why I needed the flag that removes all previous connections, but I saw it in @thetechnobear’s demo and thought I’d give it a try. Glad I did! Thanks, @oweno for the ssh tip. It’s been extremely helpful. I’ve had the Organelle for about a week now and it is really starting show it’s colors. Especially with Orac 2.0!

Im pretty sure this is in the generated patch_loaded.sh - no?

btw: a free tip…
if you’re having issues with this, what I tend to do is to type the same commands into the command line, and see if they work… (you need PD running for the pure data midi ports to be available)

@oweno
perhaps we should look at using amidiauto on the organelle?

basically it automatically interconnects all midi devices… which is what many users want.
but it also has rules, to prevent connections where you don’t want them.

(or perhaps release as a separate package - for the ‘simple use case’ ?)

1 Like

Thanks for the tips @thetechnobear and @oweno! I’ve been successfully getting MIDI from two devices to the Organelle M, but I haven’t figured out how to get MIDI from the Organelle to my BSII via USB. I still need to test it with TRS to DIN, but I haven’t got the right cables yet so I thought I’d try it via USB.

When I add a sequencer like grds or genny to A2 and then turn Note Thru on A1-A3 I get no notes playing on the Bass Station II (MIDI ch. 1), but if I add brds or any synth to A3 I can hear the notes that the sequencer is playing. Chain 1 MIDI has In = on, In Ch. = 1, and Out Ch. 0. I understand that 0 means OMNI, but even if I set it to 1 I get nothing on the BSII. It is also not responding to clock with MIDI Out = on in the clock module. I tested the BSII in Ableton with USB MIDI and it listens to MIDI notes and the clock without any problem. I must be missing something. Any ideas? UPDATE: Outside of Orac the Organelle keyboard sends notes and clock to the BSII.

Here’s what patch_loaded.sh looks like:

# MIDI PARAMETERS:START
# midiIn,0
# midiOut,1
# midiInGate,1
# midiOutGate,1
# midiDevice,Bass Station II:0
# MIDI PARAMETERS:END
oscsend localhost 4000 /midiInCh i 0
oscsend localhost 4000 /midiOutCh i 1
oscsend localhost 4000 /midiInGate i 1
oscsend localhost 4000 /midiOutGate i 1
aconnect -x
aconnect "nanoKONTROL:0" "Pure Data:0"
aconnect "Bass Station II:0" "Pure Data:0"
aconnect "Pure Data:1" "Bass Station II:0"
aconnect "ttymidi:0" "Pure Data:0"
aconnect "Pure Data:1" "ttymidi:1"

Thanks!

what you need to do is to start the patch and then on the command line typ

aconnect -l

this way we can see if also has connect the bass station to pd or not.

if not, you can then try to type the aconnect commands from patch_loaded.sh manually and see if it is failing.

Thanks! I will see what happens with aconnect -l (I assume it’ll list all the connections). In any case I was able to get the BSII to respond to the Orac clock module, so I expect I’m probably misunderstanding how to get the Organelle to send notes to an external device. If I put a sequencer on chain one, enable Note Thru on A1-A3, and then put the BSII on MIDI channel 1 connected via USB, should it play notes on the BSII? Perhaps there’s a step I’m overlooking? Cheers!

You will also need to enable midi output on chain 1 in the router module.