Jump to content

Ableton Live Clipmatrix Controller


/dev/null
 Share

Recommended Posts

Hello everybody again,

quite some time ago I build a Midibox SID and I am really happy with it but now I have some time left and I am ready for my next project:

I want to build a controller for Ableton Live (who doesn't? ;-). I want it to be a button matrix of 12x12 buttons. Every button has a LED (maybe even RGB) that goes with it.

Each button will send a control message with a parameter. Further it should work as a button matrix to reduce the wiring and DIN modules.

So the first button would send control message 1 and parameter 1.

The button below it would send control message 1 and parameter 2.

The button to its right would send control message 2 and parameter 1. ...

For the leds I don't have thought about a protocol yet.

Then there should be 12potis for track volume or encoders with led rings.

I would appreciate it very much if somebody could tell me if MidiBox is the right choice for my project again (reality check).

The only additional requirement is that the whole Interface remains responsive. I mean i want a button press to cause a midi message rather quick so thing stay in sync.

Thanks for responses.

Link to comment
Share on other sites

Thanks for your thumbs up on the reality check.

Since I think RGB leds are not really necessary for my project and would overcomplicate things at first i want to take on planning without this option.

I also chose encoders with ledrings like in MB 64E instead of potis since it would allow me to change the volume in a diffrent way without the controller having knobs in the wrong position.

The interface I want to build is divided into 12 columns.

Each column consists of one volume encoder, 8 clip launch buttons, and 4 additional buttons to manage some functions (stop, solo, mute, select track). The columns are numbered 0...11.

Here is the entire protocol i would like to implement with the midibox hardware platform:

1. The 12 volume encoders with the ledrings communicate over midi ch. 1.

Twisting the encoders sends control messages: Controller: 0-11 (column) and Value: 0...127 (position/volume).

Then the software on the host will send back a control message with the same contents. Control messages can also be sent to just change the ledrings while no encoder was touched.

In my case there is only room for 8 leds per ledring.

2. The 8x12 clip launch buttons with the leds communicate over midi ch. 2.

Touching a button sends a control message: Controller: 0...11 (column) and Value: 0...7 (row/clip 1 through 8 in track)

The host software will react with a note on message to turn the led on when the clip starts to play: NoteNr: 0..11 (column) and Velocity: 0...7 (row/clip 1 through 8 in track).

In the same way a midi note off message will be sent to turn the led off when the clip has reached its end.

3. Channel 3 is for the four function buttons on each 12 columns.

The protocol is the same as it is for the clip launch buttons. Just rows are 0...3 now since there are only 4 buttons each. They have a leds aswell which are controlled in the same manner.

Now as you can see the project has 144 buttons and 12 encoders. There are 144 leds for the buttons and 96 leds for the ledrings.

Therefore I am well over the limits of a Midibox 64E. It would be nice if someone could tell me how to go about this with the Midibox system and keep the latency for the buttons as low as possible while the latency for all the leds is no big deal.

Thanks a lot for further answers. :)

Link to comment
Share on other sites

@cimo: well if it makes things easier then let's use a note on message therer, too. I just thought i was gonna use CCs for trigger events and noteOn/Off for toggle events. Two boxes don't seem very convinient to me. But of course it is an option I will consider if everything else seems to hard to do.

@stryd_one: yes of course. I thought about wiring all the things up via matrices aswell (initial post). Actually I have the pcbs for the buttons and the leds already and they implement each a button and led matrix. So there are 9 pcbs. Each has a 4x4 led and button matrix. Therefore I would go to interconnect them and have a big 12 by 12 button and led matrix. But from there on I am lost.

I have no clue how I can manage it on the software side of things. I can't really write assembly. It is very hard to read already. C would be fine probably.

Thanks already for pointing me into some directions.

Link to comment
Share on other sites

  • 2 months later...

So quite some time went by but unfortunately nobody was able to help me with building my button-led + encoder controller.

Still I want to get something done and I am not able to work it out myself and of course I can't ask anybody to do it for me. So I will try again with a much simpler concept.

I will forget about the 12x12 and just use 16x4 because it is better than nothing and already working for some people here.

Further I will forget about the ledrings for the encoders. My new plan is to build a 16x4 led-button-matrix according to http://www.midibox.org/forum/index.php?topic=10476.30, where I asked for 12x12 but unfortunately never got an answer.

My new question now is: Can one core module handle the matrix and 20 encoders (without ledrings) with very little latency for the buttons? What is the most efficient way to come up with a application concerning latency vs programming effort (some c skills still no assemby)?

I hope it is easier now to help me out a little. :)

--/dev/null

Link to comment
Share on other sites

hey dev/null,

on the software side of things, i am working on a project that integrates mios and liveapi.  it would make it very easy for you to control clips and track their status.  i assume you want the led/button matrix for these purposes.

i started a thread on it here:

http://www.midibox.org/forum/index.php/topic,12585.0.html

and i started some documentation here:

http://midibox.org/dokuwiki/doku.php?id=midibox_live

ultra

Link to comment
Share on other sites

This looks very interesting. The only downside is that I already have a standard core with mios running on it. I don't have the parts to build a core32. Do you think the regular core could handle the scan matrix and the 20 encoders?

Yes I do want the buttons to represent my clip matrix in ableton and I want the leds to light up whenever a clip is playing. I don't think that getting around with live api will be my problem. I just would need to write an app for the preferably standard core which can handle the scan matrix and the encoders and send simple note on note off messages. one channel for the buttons one for the leds and one for the encoders. The encoders could even send just relative up down data eg note on for up note off for down. There is no need for OSC or any other complicated protocol via midi sysex or whatever.

I wish I could just code on the regular midibox platform.

Link to comment
Share on other sites

well the point of midibox live is so you don't have to know how to use liveapi.  if you are comfortable with coding it yourself, you can certainly use it with the PIC core.

the PIC can handle, i believe, 128 inputs.  so basically you'll be using 40 inputs for the encoders.  i think that leaves plenty of room for any button matrix.

sending relative values is a good idea if you're using encoders.  this way you can get any resolution you want out of it, and even modify it on the fly.  for instance, note number could tell live what direction you're going, and velocity could translate into the percentage of change you want.

let me know if you need any liveapi tips, i've gotten pretty comfortable with it.

ultra

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...