Jump to content

new midibox application - near completion


ultra
 Share

Recommended Posts

hello,

i've been working on a midibox lately with the following features:

8 encoders (two rows of 4)

8 switches (two more rows of 4)

4 extra switches (misc functions)

the layout looks like this (O for encoder, X for switch)

X    O O O O

X    O O O O

X    X X X X

X    X X X X

these are all situated under a 4x40 lcd (right now i have two 2x40's for testing purposes).

how it works:

the application lets you assign names to each general purpose encoder and switch so you can see on the lcd what function you are controlling.  for example, you could assign "osc1pitch" or "cutoff" to a knob.  then the name of each control shows on the lcd in 4 rows of 4 controls.  you get up to 9 characters per control.  this setup of 16 control names can then be saved into a "patch" you can name, and you can freely move between patches to control your various instruments.  the channel that controls the entire patch is also saved.  the initial setup of a patch can be a little tedious, but you only have to do it once per control and it's all saved to the bankstick.

each encoder saves settings for cc# and whether you want to send absolute or relative midi data.  each switch saves settings for cc# and whether you want a toggle or momentary control.  also, the two values sent by switches are freely assignable.  to round things out i've added a midi learn function you can activate when setting the cc# for each control (not really tested yet).

patch management is pretty easy.  you can rename a patch once it's created and insert/delete between patches.  there's no alphabetical order or any kind of sorting.  if you want one patch between two others, simply press "insert" while the first patch is active.

this is my first c application (before this i programmed in vb) besides the basic stuff they taught me in school.  i received a lot of help from nils and stryd (thanks).  i will release the code shortly but before i do that, i'd like to get it into a completed box so it's a lot easier to test.

my idea for the layout of this box is that it could host other kinds of applications, with the generic layout and lcd space.  so i wrote this program with it in mind that i will add more programs later on (i.e. it'll format the bankstick when you add new software without overwriting your previous patches).

btw this thing will fit into a PT-8.

Link to comment
Share on other sites

Sweet!

One thing that would be cool here is the ability to send/rec'v patches via sysex. That way, say I make a patch for CoolVSTi, and some other guy uses CoolVSTi, then he can download my patch from the net and upload it to the midibox, and his controller is all configured for the softsynth :)

Link to comment
Share on other sites

stryd_one this is actually something on my list of things to do.  i'd like to make a simple GUI patch editor so you don't have to mess with naming on the lcd if you don't want to.

i have to learn how to use sysex anyway because the midibox i want to build next will use it.  i'll have to also learn python for liveapi so i think the gui patch editor should be written in python.  i just bought a python book and it says i can write cross-platform applications, so perhaps it's a good language to use for the patch editor and a good way to start out with it. :)

Link to comment
Share on other sites

I second Python for cross-platform apps. The problem is, though, that there's no definite MIDI-library for Python. There is a lot of stuff which works, but I have yet to find a cross-platform MIDI-lib which is also maintained. It might make sense to abstract the MIDI stuff in case you end up having to change libs in the future. Java seems a good option for cross-platform stuff (MIDI included) these days, but it's nowhere near as fun to program as Python is.

In any case, this is a good place to start for Python MIDI and music stuff: http://wiki.python.org/moin/PythonInMusic

Link to comment
Share on other sites

thanks for the link.

i think the application would simply output a text file that can be uploaded via midiox.  it's probably easiest and python could still be used.

this is on hold though until i work my way through using liveapi and build my live controller.  have you worked with liveapi at all?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...