Phattline

Designing a 32x16 BLM with OSC

11 posts in this topic

Hi I want to make my own Design of BLM, a 32Step x 10(or 16) Rows thingi... (or something) that fits in a 19" Rack - with self made Silicon Pads (8mm per Button)

I have a CNC Mill, so the Forms for Silicon Pads are DIY.

Since I know what work it is to lighting etching and Milling PCBs - I want that board to be

"isolation mill-ready" (Isolationsfräsen-tauglich), That need a One sided Board Design,

Buttons & Leds are on seperatetd Boards, (Core PCB will be byed - because of doublesided design and of cheapness - because its small...not 19")

The Button Board have 3,5mm Holes where the LEDs from the LED Board look thru...

Currently I am on the Button Board, and come to the Point to say - äh with that much BLM Scalers that I need (remember 32Steps x 10 Rows) I got PCB single Sidet Problems... that "8x4" (C0xI0) Matrix groups make massive problems since I needet much more Bridges.

So is there a way to put all 32Steps from the first row to the "C0" and connect all 1st Steps (eg. 10Rows) to I0?

what changings on the BLM Scaler have to be done - or better say - it is technical possibly (electronicly) - maybe the core32 can do this? Is this because of 8Bit?.

The next thing is the software side thing:

I want a simple protocol for LAN (UDP - Ethernet), a "clear all" function witch disable all LEDs

and then a simple format to Activate/Deactivate LEDs like this:

1 0 0 1: Matrix Number - when you have more Matrixes (like the Buttons Under and next to the matrix...)

1 0 0 1: First Row (max16)

1 0 0 1: First Step (max32)

1 0 0 1: Color (0 Turn OFF, 1 RED, 2 Yellow, 3 Green)

Examples:

0 0 0 1: clear all LEDs of Matrix 1

1 0 0 1: Make First Step in Row 1 light RED

1 4 1 2: Make 2nd Step in Row 5 light yellow

and that- how it is eg. 1 0 0 1 should be sent over a spezivic Port over Ethernet

when the messages are incoming from the Ethernet then they activate LEDs

And When I press a button on the BLM it sends that values in the same format 1 0 0 1 to the Ethernetpot - so that BLM should be almost all a "brainless thingi" with no feedback, or "are you readys" just receive, and sends with udp.

On the other End sits a Max MSP Runtime that is bindet to that specific port and acts as router, and that sends this to eg. a Stepsequencer, or a Ableton api converter or a Max4Live plugin or what ever (that side that I know much about)

Maybe that thing is a little bit to overdressed for a Core32, but the core 32is dam fast and can be connectet to a ethernet converter! > For the software side I maybe have to ask a friend to make that for me - maybe it is much more complicatet to adapt the BLM software - instead of making a new one???

what do you think? (DWG is in attachment)

post-3652-064053200 1294858924_thumb.png

BTM.zip

Edited by Phattline

Share this post


Link to post
Share on other sites

So is there a way to put all 32Steps from the first row to the "C0" and connect all 1st Steps (eg. 10Rows) to I0?

what changings on the BLM Scaler have to be done - or better say - it is technical possibly (electronicly) - maybe the core32 can do this? Is this because of 8Bit?.

As far as I can see from your DWG file, you are trying to drive a column of 32 Duo-Colour LEDs from a single driver - this won't work! The current consumption is much too high.

Using 8x8 matrices is the best choice HW and latency wise.

From the SW side: it's possible, but you have to write a completely new BLM_SCALAR driver and BLM_SCALAR firmware, especially since you will need a new transfer protocol as well (even if you would use MIDI instead of OSC)

The next thing is the software side thing:

I want a simple protocol for LAN (UDP - Ethernet), a "clear all" function witch disable all LEDs

You want to use OSC as transfer protocol, this will slow down the performance (see also my comments to OSC under http://www.ucapps.de/midibox_seq_manual_osc.html )

It's possible of course with some programming effort.

But if you would ask me what is the best solution: use USB MIDI as transfer protocol, and convert MIDI messages to OSC packets on your PC (requires a proxy application) before forwarding the packets to Max MSP.

My opinion shouldn't prevent you from making your own experiences with OSC of course - so to say it again: yes, it's possible.

Best Regards, Thorsten.

Share this post


Link to post
Share on other sites

ok thankz to clear up things

"Turn OFF all LEDs"

Is such a Function implemented?

How you trigger that Function?(over Midinotes, sysex?)

@ Sysex: is filtered out from Ableton/Max4Live

MAX MSP a& MAX runtime could handle Sysex and send that internal to Max4Live.

or do I have to

turn off every single LED?

That would double the USB-Midi-traffic:

Turn OFF 512 LEDs and Turn ON 512 LEDs, instead of "clear all LED" command and Turn ON 512 LEDs.

@ 8x 8x8 Matrixes

in this case have completely rewite the firmware?

> Problem: 1 Midichanal will not not be enough, because of having 512 Notes, and midi have 128 Notes

That would be a pro for a OSC Format(000 010 020 030 040...)

@ Using differnt midichannels

> Problem: Ableton & Max4Live!

Ableton cant use that multichannal, because they handle that like this:

- as soon you route incoming midi to a Miditrack (=to Max4Live) you only have one midichanal

- so midi from all Midichannels will get be "CH1"

- so you will have 2 or 3 Times the Note C1 on Channel 1 instead of having it on 3 different Midichannels

> Workaround take that MBBLM Midi and convert it in a MAX-RUNTIME into OSC (001 002...) and send it Internal to MAX4LIVE

> Workaround Windows Problem: Most USB interfaces are not multiclient,

-MAX-RUNTIME is Software 1, and ABLETON is software 2... Max get the Port and Ableton not.

- when you connect a view Midiboxes together and connect them via one USB Cable to the PC - and one Midibox is for Max and the other is for Ableton?

Solved: Midibox Midi has 8 Ports...

@ osc instead of midi?

> Update a whole Matrix with one OSC String instead of sending 512 (1024 if no Reset Function) Midi notes

> I dont know how long it take to transfair 512 notes - so I only guess that could be a timing/traffic problem.

questions, questions...theories... :laugh:

EDIT - I have Sorted my theories :thumbsup:

Edited by Phattline

Share this post


Link to post
Share on other sites

I won't reply to all your questions, because these are only unsorted thoughts and I find them too difficult to answer.

I don't have the impression that you are ready for this project!

Please read the already available README.txt for the current MIDI protocol.

Think about the possibility to convert MIDI messages to another protocol with an application on your PC, because I'm saying that this is the best performance solution.

If you don't believe me, go the route by yourself and make your experiences.

Consider also that MIOS32 can open up to 8 USB MIDI ports in parallel as workaround for the WIndows driver which isn't multi client capable.

Best Regards, Thorsten.

Share this post


Link to post
Share on other sites

@ ready for this project:

I wasent ready for allmost any Project in my Live when I started them

Der Weg ist das Ziel und jetzt muss zuerst die hardware stehen, damit ich mit der Software spielen kann, weil ohne Hardware zum Test ist das lernen nicht lustig.

Bevor ich aber mit der Hardware anfange gibts noch eine einzige Essenzielle Frage: geht sich das mit den Schieberegistern aus? >>>> siehe nächsten punkt:

@ 32x16 (512) Matrix :

1 Scaler is for a 8x8 Matrix, so 8 Scalers in Sum has to be used.

1 Scaler has 3 HC595 and 1 HC165, so 24 HC595 and 8 HC165 are used

24 HC595

8 HC165

I read this

// initialize the shift registers

MIOS_SRIO_NumberSet(16); // use up to 16 shift registers

in

2Fblm_scalar

>>> so that is a problem?

@ thougts, hopefully you dont understand them as critic, they are my expirience with Ableton and Max4Live, and what Problem accours when you use notes overal different midichannels.

@ README.txt for the current MIDI protocol.

cant find that readme, but this: http://www.midibox.org/mios32/manual/mios32__midi_8h.html

is the readme better?

@ LED-MAtrix Reset (Turn off all LEDs):

blm_8h.html

>>> There is a Function called:

s32 BLM_Init (u32 mode)

I could use that as Reset, if the Init status clear all registers.

the other way would be, to observe the midiports for eg. Note C3 on CH16, and if that note comes - it triggers "turn offs" to all DOUTs

@ convert Midi in PC:

no problem

@ which isn't multi client capable.

Bad news.

@ 8 Ports

Good news, and a great workaround for that bad news.

Share this post


Link to post
Share on other sites

Seems to be better sorted now, here the answers:

@ 32x16 (512) Matrix :

1 Scaler is for a 8x8 Matrix, so 8 Scalers in Sum has to be used.

1 Scaler has 3 HC595 and 1 HC165, so 24 HC595 and 8 HC165 are used

24 HC595

8 HC165

I read this

in

2Fblm_scalar

>>> so that is a problem?

24 HC595 can't be driven in a chain - not for software, but for hardware reasons.

You will find many articles in this forum where problems are discussed which you will face.

Duggle nicely summarized it here: and gave a workaround, but it will be difficult to use if you don't have hardware experiences.

In addition to this (hard to handle) hardware issue, you would also have to enhance the BLM_SCALAR driver because it's tailored around the BLM16x16+X

@ thougts, hopefully you dont understand them as critic, they are my expirience with Ableton and Max4Live, and what Problem accours when you use notes overal different midichannels.

MIDI Channels wouldn't be an issue for the limited capabilities of Ableton and Max4Live if you would implement a MIDI->OSC proxy by yourself...

A comment to Note Events: they are normaly not used to control LEDs. Instead I'm using a very clever CC coding which allows to achieve high updates rates even over a common MIDI cable. With USB MIDI the update rate is incredible high (more than 1 kHz for all LEDs, although you would already be happy with 50 Hz...)

@ README.txt for the current MIDI protocol.

cant find that readme, but this: http://www.midibox.org/mios32/manual/mios32__midi_8h.html

is the readme better?

Wrong.

The README.txt for MIOS8 based version: http://svnmios.midibox.org/filedetails.php?repname=svn.mios&path=%2Ftrunk%2Fapps%2Fcontrollers%2Fblm_scalar%2FREADME.txt

The README.txt for MIOS32 based version: http://svnmios.midibox.org/filedetails.php?repname=svn.mios32&path=%2Ftrunk%2Fapps%2Fcontrollers%2Fblm_scalar%2FREADME.txt

Search for "optimized LED pattern" to find the CC based coding.

For your project it might be sufficient to use two MBHP_CORE (8) based PICs with an unmodified BLM16x16+X firmware, and a GM5 for MIDI->USB MIDI conversion, an application running on a PC for USB MIDI->OSC conversion.

Just to give you an alternative idea, because this solution doesn't require any firmware or hardware concept change. The update rate of the Core8 based solution is high enough (ca. 50 Hz) as you can see in the demo video. The adaption has to be done at PC level, this could be done by your friend w/ SW background.

Note: you are already able to simulate the BLM16x16+X on a PC to evaluate the possibilities, and to write the MIDI->OSC adaption layer:

http://www.ucapps.de/midibox_seq_manual_blm.html

Best Regards, Thorsten.

Share this post


Link to post
Share on other sites

THANKZ THANKZ THANKZ - that is enough Info to get it started.

lg mike

Share this post


Link to post
Share on other sites

Note: you are already able to simulate the BLM16x16+X on a PC to evaluate the possibilities, and to write the MIDI->OSC adaption layer:

http://www.ucapps.de/midibox_seq_manual_blm.html

CONVERTER

I have wrote a Midi-OSC "Near" CONVERTER, it supports 2 BLM Emulators - to get to my 32x16 Steps.

I have attached a *.zip, that contains the Converter as Max MSP Collectiv(*.mxf no editing)and also the complete Patch (*.maxpat)(for editing)

A free MAX-MSP Runtime/or the full 30days DEMO you can download under: http://cycling74.com/

If you want run this Patch you will need 1 or 2 BLMs or:

1 or 2 BLM EMULATOR instances (download under: http://www.ucapps.de/midibox_seq_manual_blm.html)

If you drive the Virtual BLMs instead of Reals, and your OS is WIN7 you will need a "Virtual Midicable" - install and reboot > MIDIYOKE: http://www.midiox.com/

Notice: you need 4 Midiyoke ports, if you dont have 4 you must setup midiyoke in win7 systempreferncys...

If you have all that, now start the attached MAXPAT....

I have documented the patch in the patch (follow the blue texts)

Also a example Patch is includet which reacts to button pressings of virtual BLMs (i dont have a real @ this time...) But also pressings on the Virtual MAX MSP Matrix will light your BLM Emulation.

So that is the first step - converter > done! And Adaption was no problem...

Next step is to build a Max Drumsequencer for that BLM Emulation, if that work good and right, i will build like TK said 2x 2x16 Matrixes with seperatet cores.

If the drumsequencer is ready or in working beta status, i will post and attache it here.

have a nice weekend!

BLM-2-MAX-Converter.zip

Share this post


Link to post
Share on other sites

did you have a look to a monome app called "soyuz" (like satellite) ?

Share this post


Link to post
Share on other sites

no i did not... ...but now yes... WHY? Dou you meen because of: It uses Pages - Vertical and Horizontal?

I also use pages... in the Moment I use a APC 40 and a Launchpad - and that show me 8Steps x 13 Rows (in RGB)

But with 8 Steps I dont have the oversight of a long Mididrumloop - Pageswitching - Is OK and a Workaround - But the More steps you see, the less you have to memory in your brain, the less you have to memory the easier is the JAM :D

>>> as soon I have working beta I post it.

-

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now