"MIDI over IP" options in WebConf

I’m just mucking around really, I imagine there are solutions in mind which is why I’ve not posted any of my rough screen shots.

Ideally I’d love to have a way of recognising the actual keyboard that is plugged in and to have a way of showing ( and altering ) the MIDI channel(s) that data comes in on. My Nord Modular can chuck out on 4 seperate channels and it’s locked to specific channels from past projects, that would be an awful lot of patching to update all that stuff, so any plug and play port handling could presumably get a little confused if you plug usb midi connectors in and disconnect them.

Perhaps an ident keyboard function, the sustain pedal is a nice way of deoing this without actually making any sound, and if the MIDI IN component could indicate channels it’s seen with data that would also be REALLY helpful in MIDI sort out situations.

It’s nice that you are investigating.
I was playing the piano of a friend and tried to hook up my zynthian.
When I saw, that it only has an USB port. Never thought, that E-Pianos don’t have real USB Out :slight_smile:
Your Nord doesn’t have either?

That was when I decided to push this “Zynthian as MIDI Host” topic somebody else started in the past.

It kind of worked best, when I provide the webconf-ui and Fernando does the zynthian-sys part.
This means, that I will not do the real jack wiring but provide the input that is stored in the setenv. This is one paradigm for the webconf.
We are planing to have a webui, which gets the information via websocket…from zyncoder? We need to lay down the architecture first.
I like to see virtual knobs that are bound to the real ones.
In the webconf you will be able to configure them.

When I read your demands, I see something like MIDI profiles first.
Something that groups MIDI filter and MIDI ports.

But maybe the MIDI-Port and Filter setup should be something that is stored in the snapshot? It would be easier to have a pedal switch option implemented.
Still not completed is this program change and master channel feature, iirc.

This is something @jofemodo needs to decide.

I really like the design of the webconf pages. They look GOOD!

The Nord Modular G2 has just plain old MIDI IN/Out/Thru. It has a USB port but it goes to the GUI App without any niceties like MIDI ports. It predated that sort of thing.

I have also got the Nord Modular (http://www.nordkeyboards.com/products/nord-modular) which uses MIDI to transport the GUI data !!! You have two IN/OUT MIDI connections one is the ‘normal’ MIDI implementation and the other is the GUI. Now the GUI is a REAL test of MIDI netwroking capability.
If a MIDI routing system can run the Nord Modular GUI it’s good enough for Music… :- D

I’m happy to help and I don’t start my new job till 09Jan2018! I’m a django person at but interesting to look at tornado as it seems to do some wonderful stuff with the python 3.5 async libraries. The co-routines stuff is a fascinating read, and I’m VERY keen on WebSockets. I’ve used Django Channels a bit, but my javascript is generally heavily modified cut and paste.

I think we will need an object drawer for the interconnection side. That just feels like SVG from the web end, given you can do callbacks from graphical objects reasonably easily. Need a good SVG python library and build the base objects against that.

Most USB connected devices will identify themselves in such a fashion that we should be able to key on names, The difficulty is multiple stupid USB traditional MIDI connections. You can’t know what’s at the far end and if you plug and play them, you’ve really no way of knowing what is connected to what once you finish, so Old fashion keyboard’s one and two will get confused.

It’s probably a perverse situation but it would be a pain to run up against later.

If it could recognise the possibility of two similarly named USB MIDI interfaces and flag that up. Then ask to play on the keyboard or sustain pedal in order that you want them allocated.
It really is only repopulating the Environmental variables with the new patching data on the MIDI filters.

Which branch should I be looking at?

it’s gh28-midi-host

It’s always gh for github. Then the number of the task. And a little description.

SVG…
I tend to focus on a webinterface, because you can use different phones and tabs simultaneously to control one device.
And if there is something we can’t do with html/js, we could use WebGL.

Oh yes forgotten WebGL, I’ve been doing too many resizing icons recently …!

Ok. I’ve got the various components of the Networking together and lashed up the Interfaces ?
What do you think?


A couple of issues, mostly for @jofemodo

  1. I locate the multimidicast diretory in /zynthian/zynthian-sw/
    2.I explicitly need to add entrys in /config/zynthian_envars.sh for
  • ZYNTHIAN_NETWORK_CHANNEL
  • ZYNTHIAN_NETWORK_ENABLED
  1. When is the best time to run the initialization script for multimidicast? before or after zynthian_autoconnect?

I am completely refactoring that screen right now.
I am adding MIDI profiles.
Wouldn’t spend too much time, because merging won’t be fun.

The parameter have to start with ZYNTHIAN_MIDI

I only see the ENABLED-Checkbox in the final picture.

If this is enabled, the new midi ports should appear in the port list.
Midi channel mapping should be done with a FILTER RULE.

OK.
It was all a good exercise in what does what.
Didn’t want tot go throu’ the hassle of writing the drop down list stuff, so didn’t include the Netwrk Channel in the GUI version.

What sort of timescale are e looking at ? Is there to be another pre xmas release?

I will commit something this week.
Still missing is the deletion of profiles and the display of ports the alsa way.
But before this can be merged to master, @jofemodo needs some time for the -sys changes as well.
I don’t know about his planning.

Could you take a clean image - updated - and get this multi-net thingy compiled?
Document each step, so that @jofemodo can easily follow.
I had issues get it running on my linux machine. But I guess mainly because it’s misconfigured alsa/jack-wise by now.
And I don’t want to destroy my running zynthian until I have my second one built after christmas.

Goal is having a python jack-client show those new midi ports. Which is possible in the gh28 branch (ui-midi page) already.

OK.

I’ll download a clean image
Update it to date…

I’ll document the compile process for multimidicast

and leave it to be switched by env variables with a assumed default to off. . .

ZYNTHIAN_MIDI_NETWORK_ENABLED
ZYNTHIAN_MIDI_NETWORK_CHANNEL

I’ll leave the GUI and webconf alone,( except for my own local branch)

I’ll build a sh for /zynthian-sys/scripts that acts in accordance with the settings of the two variables and configs the Networking appropriately by turning on and off the multimidicast components.
I’ll copy the multimidicast code components into /zynthian-sw/multimidicast/

And I’ll document it.

Then submit a pull request for
zynthian-sw & zynthian-sys
Hopefully this is what you require, if not please don’t hesitate to tell me.

Right I’ve downloaded a new image

zynthian_gorgona_next_rbpi3_piscreen2-2017-11-14.img
Burnt it to a ssd
Run it…
Bad screen cos I’ve got a 2.5" Resistive, and old encoders . . .
Not been able to logon to zynthian.local cos it rejects the password (old session variables I’ve had several different zynthian.locals…?) Couldn’t clear it, hashs looked like they matched in debug print out but … Hacked it in the end.

Set up zynthian once in.
MIDI settings work correctly for tty input… :smiley:

Like the new Network enabled button :smiley:
I see the MIDI environ profiles are now located in /zynthian/zynthian-data/midi-profiles/

Moved into /zynthian/zynthian-sw

> cd /zynthian/zynthian-sw

copied files from:

> wget http://llg.cubic.org/tools/multimidicast/multimidicast-1.3.tar.gz

Unzipped it…

tar -xvf *.gz

Changed into directory.

> cd multimidicast-1.3

> make

I would want to make the file on the specific machine on start up so a script is needed for that.

That will be done by jofemodo in case he wants it integrated. Dienstag, 19 Dezember 2017, 10:05nachm. +01:00 von Chris Lyon discourse@zynthian.org :

···

wyleu
December 19
Right I’ve downloaded a new image
zynthian_gorgona_next_rbpi3_piscreen2-2017-11-14.img
Burnt it to a ssd
Run it…
Bad screen cos I’ve got a 2.5" Resistive, and old encoders . . .
Not been able to logon to zynthian.local cos it rejects the password (old session variables I’ve had several different zynthian.locals…?) Couldn’t clear it, hashs looked like they matched in debug print out but … Hacked it in the end.
Set up zynthian once in.
MIDI settings work correctly for tty input…
Like the new Network enabled button
I see the MIDI environ profiles are now located in /zynthian/zynthian-data/midi-profiles/
Moved into /zynthian/zynthian-sw

cd /zynthian/zynthian-sw
copied files from:
wget http://llg.cubic.org/tools/multimidicast/multimidicast-1.3.tar.gz
Unzipped it…
tar -xvf *.gz
Changed into directory.
cd multimidicast-1.3
make
I would want to make the file on the specific machine on start up so a script is needed for that.
Does the zynthian use systemd to start up…?


Visit Message or reply to this email to respond.
To unsubscribe from these emails, click here .

Looks like a systemd service to me.

Looking at the midi_config_handler.py

How would you see the MIDI Network ports appear ?

You are only displaying physical ports at the moment but if you turn on the non-physical ports you will get 20 of them ( once the Network is turned on).
We need to keep this simple so could we treat the network as one external virtual MIDI in and one virtual MIDI out or do we want to provide a real anything to anything mapping using filter maps?

I’m pretty sure there are mis-triggers on the TTY MIDI IN. . . .
It’s ok on USB but you occasionally get missed notes on the TTY input.
I’m trying to get it to fail repeatably.

hm, i hoped for one port :slight_smile:
@jofemodo has to evaluate it and decide how it should be used.

I can see why you’d want to do this as a MIDI routing

That’s probably why you want a setting for Network in and out ‘bus’ from the 20 available.
Because if the network interface just presents one midi in & out to the zynthian jack port then it only needs to be able to choose the locally anointed MIDI Bus.

I think that is probably as much as is sensible to do at this stage because otherwise it all becomes a bit too conceptually complicated. It would be a ‘default’ setting
ZYNTHIAN_MIDI_NETWORK_IN_CHANNEL='2’
ZYNTHIAN_MIDI_NETWORK_OUT_CHANNEL=‘2’

Once the concept is bedded in and the Web & GUI Interfaces these become nothing more than an assumed default in a much more complicated and powerful world of zynthians connected via the MIDI Bus with other devices. Which would obviously be done as MIDI Maps.

Separate Question
What do you see the MIDI Port Images being used for?
I assume you main function of the Modal interface is to select the MIDI ports that the mapping and filtering operate on.

I like the idea of those channel selection boxes which filter the list of the virtual ports.

My open usecases are a master keyboard, which needs a midi host.
It’s not mine, so that I can’t test it. But i thought, you need to configure something on the host as well
f.e. if you want to let the zynthian play the piano or if you want the piano let the zynthian play.

And i have an USB interface, which can be used as IN or OUT but only has one physical DIN adapter.
On the android phone I have to change the settings between IN and OUT, so that I thought, you need to do this on the zynthian as well.