MUFF WIGGLER Forum Index
 FAQ & Terms of UseFAQ & Terms Of Use   Wiggler RadioMW Radio   Muff Wiggler TwitterTwitter   Support the site @ PatreonPatreon 
 SearchSearch   RegisterSign up   Log inLog in 
WIGGLING 'LITE' IN GUEST MODE

Scriptable Hardware MIDI Processor
MUFF WIGGLER Forum Index -> General Gear Goto page 1, 2  Next [all]
Author Scriptable Hardware MIDI Processor
StepLogik
Is anyone aware of a hardware MIDI device that can effectively be programmed via a scripting language or by some other means? The only thing I see on the market is the Ruin & Wesen MiniCommand ( http://ruinwesen.com/products ). This is pretty much exactly what I need, but there doesn't seem to be any support and the documentation on their programming language (MIDI-CTRL) is sparse, disorganized or nonexistent.

My specific need is for an advanced MIDI processor / sequencer / data mapper. I've basically coded my application for a PC but the computer is introducing some timing irregularities. Big surprise there! A dedicated hardware device would tighten those issues up considerably and spare me the hassles of tuning code and a PC to deal with MIDI (I do not currently use a computer to make music and would like it to stay that way). Furthermore, I don't want to have to introduce a laptop into my live rig.

The only options I see are Arduino or MIDIBox, and both of those would seem to involve more tinkering and electronics hacking than actual music making.

I'm curious if perhaps there are some products out there for show control/broadcast/TV production that might have some advanced programming/scripting support. Another option might even be a hand-held programmable device (like a high-end calculator) that has serial ports than can run at MIDI's baud rate without having to add an external UART. The obvious concern there would be CPU power although it doesn't take much to crunch MIDI data.

Thanks for your advice! This is fun!

Ideally, this product would be around
renderful
For quick results, and less electronics tinkering you could go for an Arduino UNO: http://www.sparkfun.com/products/9950
with a Sparkfun MIDI shield: http://www.sparkfun.com/products/9595

There's even an example Arduino sketch on the Sparkfun page, as well as on arduino.cc: http://arduino.cc/en/Tutorial/Midi

The soldering took me 10 minutes, and then the shield attaches right on top of the Arduino. I was able to mix and match example code doing too get arpeggiating based on input and clock sync working in an afternoon.

For a more complete/simple MIDI solution(which takes a bit more tinkering) with the Arduino there is the MIDI breakout: http://www.sparkfun.com/products/9598


Beyond all of that, the new MOTU MIDI XPress XT seems to have some great timing and routing controls, without getting so deep as scripting: http://www.motu.com/products/midi/xpressxt_usb
vasculator
http://ruinwesen.com/midi-ctrl

That is really the best reference for programming against a Minicommand. I sold my machinedrum about a month back but I am keeping the minicommand to run a program I made for my jupiter 6 (and sentimental reasons). If you have the most basic level of C knowledge you should have very little trouble using the framework for the most part. There is some function-level documentation and an overall higher-level guide in the link above.

Let me know if you have any questions. The main issue right now may be in actually getting a minicommand. I used to ship all of them in the US and I've been out for about 6 months. Best bet is to find a used one.

PM me if you have any extra questions.

edit: on the whole I'd say your best bet is to get a midibox kit from SmashTV and build up a basic core then whatever I/O you need. That community is extremely helpful and the product can't be more solid.
StepLogik
vasculator wrote:
http://ruinwesen.com/midi-ctrl

That is really the best reference for programming against a Minicommand. I sold my machinedrum about a month back but I am keeping the minicommand to run a program I made for my jupiter 6 (and sentimental reasons). If you have the most basic level of C knowledge you should have very little trouble using the framework for the most part. There is some function-level documentation and an overall higher-level guide in the link above.


Yeah I looked at the dev wiki quite a bit and it seemed to be quite incomplete. Since I'm going to be doing real-time processing, I need information on setting up a PLL, timers, etc and couldn't find much. FWIW, I'm a fairly advanced software programmer ( zombie ) so I'm not too worried about the learning curve.

MidiBox is probably going to be the way to go. I can eat a 1-time construction cost.
stk
renderful wrote:
For quick results, and less electronics tinkering you could go for an Arduino UNO: http://www.sparkfun.com/products/9950
with a Sparkfun MIDI shield: http://www.sparkfun.com/products/9595


2nded. 5 minute job to put together and really easy to program.
I've got a MIDI-controlled step sequencer running on mine.
vasculator
StepLogik wrote:
vasculator wrote:
http://ruinwesen.com/midi-ctrl

That is really the best reference for programming against a Minicommand. I sold my machinedrum about a month back but I am keeping the minicommand to run a program I made for my jupiter 6 (and sentimental reasons). If you have the most basic level of C knowledge you should have very little trouble using the framework for the most part. There is some function-level documentation and an overall higher-level guide in the link above.


Yeah I looked at the dev wiki quite a bit and it seemed to be quite incomplete. Since I'm going to be doing real-time processing, I need information on setting up a PLL, timers, etc and couldn't find much. FWIW, I'm a fairly advanced software programmer ( zombie ) so I'm not too worried about the learning curve.

MidiBox is probably going to be the way to go. I can eat a 1-time construction cost.


if you want to directly manipulate a PLL and timers you def don't want the minicommand. i'd certainly go down the midibox route. my favorite thing about the minicommand is not having to deal w/ the 'hardcore' programming and just using his framework as-is to do midi programming. mine has been pretty much always loaded with a program i made to send certain sysex messages to a jupiter 6 and display incoming midi data.
Altitude909
mutable instruments midipal or a midibox core are both very good choices and available now (midibox) and soon (midipal)
StepLogik
I'm surprised no one has a made box similar to a standard MIDI controller with 8- 12 knobs, some buttons, LCD display, transport controls, etc that is completely scriptable. You write your program in JavaScript (or Python, etc) and upload it to the device. Instant, generic "do anything" box.

With microcontrollers getting more and more powerful, it should be possible to run a JavaScript interpreter fast enough to do some rather advanced MIDI processing and sequencing.
vasculator
That was basically the goal of the minicommand. Essentially what I learned from that experience is that if people are technical enough to engage with a scripting language as simple as you can make to be useful they will immediately rather build a custom device or midibox arduino that is cheaper and 100% hackable instead of 50 or 75%. Most people just wanted programs/patches made for them without the work.

I'm not saying there isn't an audience...it's just small and their minds quickly turn to completely or mostly DIY solutions when a custom need arises. Especially when there is the huge body of work that is the midibox platform looming in the background.
Altitude909
StepLogik wrote:
I'm surprised no one has a made box similar to a standard MIDI controller with 8- 12 knobs, some buttons, LCD display, transport controls, etc that is completely scriptable. You write your program in JavaScript (or Python, etc) and upload it to the device. Instant, generic "do anything" box.

With microcontrollers getting more and more powerful, it should be possible to run a JavaScript interpreter fast enough to do some rather advanced MIDI processing and sequencing.


Already done (and well developed)

Supports faders, buttons, displays, SD card, OSC, etc



Ok, one button and knob but it is completely scriptable.

renderful
StepLogik wrote:
I'm surprised no one has a made box similar to a standard MIDI controller with 8- 12 knobs, some buttons, LCD display, transport controls, etc that is completely scriptable. You write your program in JavaScript (or Python, etc) and upload it to the device. Instant, generic "do anything" box.

With microcontrollers getting more and more powerful, it should be possible to run a JavaScript interpreter fast enough to do some rather advanced MIDI processing and sequencing.


Processing(the language/framework used by the Arduino) is simpler, better laid out and faster than Javascript. It already has the benefit of having compilers written for it, for the Arduino hardware.

For a x0x sequencer, there is the http://www.beat707.com/ which doesn't do everything you described(but can be easily extended to), but is entirely scriptable(Arduino driven) and already has the MIDI stuff figured out for you. It is an Arduino shield, and can do some gnarly stuff, if you have an Arduino MEGA(faster, more room for code) driving it. There are documented hacks, and available solder points/pins which allow the addition of knobs, faders or other controllers of your choice.

I own a Beat707 and find it to be a very fun sequencer. The only bad part is that there is no enclosure, so you'll need to build one yourself.

Then there is the Livid modular/Builder stuff: http://lividinstruments.com/hardware_builder.php
I'm not sure how scriptable it is, but there is some software one can use to configure it. They seem to have the modular hardware aspect of it down.
renderful
As far as the Beat707 is concerned, they're also working on a prebuilt controller extension:

Altitude909
renderful, where did that pic come from? (I helped prototype that thing)
widdly
It's on the beat707 front page.
renderful
Nice job on the prototype!

I found it here: http://www.beat707.com/w/updates

No updates for months, so I've been considering building out my own touch/LED based controllers instead.
StepLogik
vasculator wrote:

I'm not saying there isn't an audience...it's just small and their minds quickly turn to completely or mostly DIY solutions when a custom need arises. Especially when there is the huge body of work that is the midibox platform looming in the background.


It is hard to find fault with that logic. With all the kits and support available from Arduino and MIDIbox, even non-technical folks can cobble something together fairly easily.
MrDys
I've looked at the code for these options (midibox, midipal, minicommand) and I guess I'm looking for something that's abstracted a bit more. I have a very clear idea of what I want to program and I don't want to be staring at MIDI specs and looking up hex tables in order to get it done. I stare at code all day, I'm not looking to fuck around with C++ templates in my off-hours.

Ideally, I'd want something like the midipal, but running libpd.
CJ Miller
It seems that if you are dealing with MIDI, scripts would only work with very straightforward applications. IE mapping one kind of data to another, basic scaling. And then, it is easier to just write those features into a firmware menu. Beyond this, you are specifying what the bits are supposed to do, and for this C is already fairly high-level. Making it all scriptable assumes a lot about what the user needs.
vasculator
CJ Miller wrote:
It seems that if you are dealing with MIDI, scripts would only work with very straightforward applications. IE mapping one kind of data to another, basic scaling. And then, it is easier to just write those features into a firmware menu. Beyond this, you are specifying what the bits are supposed to do, and for this C is already fairly high-level. Making it all scriptable assumes a lot about what the user needs.


I think that's exactly it. And especially now someone wanting to process/generate midi at a very high-level is going to use Max/Max4Live or the like and whatever computer and midi interface they already own instead of building hardware that will lack a friendly GUI. Once you try to abstract something like a midi framework you end up running into very low-level issues that need to be addressed and there is just so much prior art to leverage. Even generating a solid midi clock is not as simple as it would seem.
StepLogik
The only reason I mentioned scripts was because it creates an abstraction that makes it easier to code/test/debug. You could have a "virtual" device that you use for coding/testing your script using your favorite IDE or Notepad. Once you got it working, the real device has the same API so you just upload and go.

All of the low-level MIDI details could be abstracted. Rather than fussing with bits and bytes, you would have a simple API to send messages.

midiPort.Send(new NoteOnMessage('F#', 127));

etc. that is a lot easier than raw byte writes to a serial port. Dead Banana

With MIOS and the libraries available for Arduino, it makes my argument quite weak.

Another option might be a Reaktor-type modular interface that could be compiled into an intermediate language that could be uploaded to the device once its tested/debugged. That would spare the user from having to do proper "coding" but introduces other issues (like performance). Anyone who has ever built a complex Reaktor module knows how tedious that can be.
vasculator
StepLogik wrote:
Another option might be a Reaktor-type modular interface that could be compiled into an intermediate language that could be uploaded to the device once its tested/debugged. That would spare the user from having to do proper "coding" but introduces other issues (like performance). Anyone who has ever built a complex Reaktor module knows how tedious that can be.


now that is something that I could see happening that would be pretty interesting. some sort of max or reaktor-style interface that is completely GUI where you can push patches onto a hardware device.
vasculator
StepLogik wrote:
The only reason I mentioned scripts was because it creates an abstraction that makes it easier to code/test/debug. You could have a "virtual" device that you use for coding/testing your script using your favorite IDE or Notepad. Once you got it working, the real device has the same API so you just upload and go.

All of the low-level MIDI details could be abstracted. Rather than fussing with bits and bytes, you would have a simple API to send messages.

midiPort.Send(new NoteOnMessage('F#', 127));

etc. that is a lot easier than raw byte writes to a serial port. Dead Banana


oh right no i totally agree. the main reason i still have the minicommand is that i'm pretty comfortable with the way he abstracted it. you can send raw data to the ports or note/cc data very easily.
MrDys
vasculator wrote:
now that is something that I could see happening that would be pretty interesting. some sort of max or reaktor-style interface that is completely GUI where you can push patches onto a hardware device.


Or, you know, running libpd. Like I said.
ersatzplanet
The optimum thing for me would be a piece of hardware that you could download MAX patches into and would be stand alone. Not very likely any thing like that will ever be made. I just am too lazy to learn programming languages.

-James
Paranormal Patroler
ersatzplanet wrote:
The optimum thing for me would be a piece of hardware that you could download MAX patches into and would be stand alone. Not very likely any thing like that will ever be made. I just am too lazy to learn programming languages.


Man! You took the words out of my mouth. Exactly what I had in mind.
I am too much of a novice programmer to try anything out for myself (too scared/can't be bothered zombie ) but it's been several times that I wished I could buy a device in which I would upload some of my Max patches.

Would that need great processing power? I'd settle for something with a limit to the complexity of what you can upload.

The only workaround I have found (it's way too basic, I know, but I have to add something to this conversation) is Midi Solutions Event Processor

http://www.midisolutions.com/prodepp.htm



I think the OP said that he doesn't enjoy having a laptop on his setup whilst he needs the capabilities. It's funny how I share the exact same feeling.

Max in a Box (TM) . I'd buy that.
MUFF WIGGLER Forum Index -> General Gear Goto page 1, 2  Next [all]
Page 1 of 2
Powered by phpBB © phpBB Group