Any MIDI enthusiasts around?
I am looking to control some RGBW leds (maybe SPI-based strips, maybe individual high power RGBW LEDs, not sure yet) with some of my classic computers. That's pretty easy, no concerns there. Lots of arduino projects or I can just add in a 6522/6821/etc. But, I thought, instead of just making a hobby project, I should try to design something that would work with classic systems *AND* current gear, and not be so platform dependent. MIDI came to mind, both because the cost to interface is pretty low, cables are cheap, and MIDI is very well supported. Where I am struggling is getting a handle on how to map the ability to set an individual LED color in a strip of say 20 or 60 to the MIDI protocol without just punting and using SysEx msgs. And, I might have a bunch of these strips (more than 16 perhaps, though my initial project only needs 10-12. I am also aware of DMX lighting and MIDI->DMX converters. DMX XLR-5 cabling is a bit pricier than MIDI 5 pin DIN (though the RS485 protocol seems simple enough), so I thought maybe I should just emulate a MIDI->DMX->LEDs in my design. Anyone familiar with MIDI-controlled lighting and how it's mapped to MIDI messages? Jim -- RETRO Innovations, Contemporary Gear for Classic Systems www.go4retro.com store.go4retro.com
Using an Arduino as a gate with some 6N138 optocouplers would allow you to translate the signal from Midi to something like the https://github.com/FastLED Arduino-WS2810 libraries should be fairly simple, give or take figuring out the power supplies for your midi bridge and the LEDs. The only real issue in using MIDI would be the lack of match in the specs. Midi is built around 0-127 (#0-#7F) where these LED libraries are typically 0-255 for each color. I'm sure you could sort something on the arduino like The Note (0-127) is an addressable LED and the Velocity 0-127 (doubled) is the color, where notes would be expected in a series of three. (R,G, & B). Midi also uses the irritating speed of 31,250baud which normally has to be a cludge on an arduino. It might make more sense to just use serial at a higher speed and define your own information packets. The SPI speed of these LED strips is lightyears faster, and your arduino code and/or the library will typically collect your color commands in a buffer and send them a bit delayed. There's a little bit of lag, but even if you're synching to music, the human brain has an amazing tendency to make light flashing timing "feel" right, even when it's off. On Sun, Mar 13, 2022 at 2:59 PM RETRO Innovations via vcf-midatlantic < vcf-midatlantic@lists.vcfed.org> wrote:
I am looking to control some RGBW leds (maybe SPI-based strips, maybe individual high power RGBW LEDs, not sure yet) with some of my classic computers.
That's pretty easy, no concerns there. Lots of arduino projects or I can just add in a 6522/6821/etc.
But, I thought, instead of just making a hobby project, I should try to design something that would work with classic systems *AND* current gear, and not be so platform dependent.
MIDI came to mind, both because the cost to interface is pretty low, cables are cheap, and MIDI is very well supported.
Where I am struggling is getting a handle on how to map the ability to set an individual LED color in a strip of say 20 or 60 to the MIDI protocol without just punting and using SysEx msgs. And, I might have a bunch of these strips (more than 16 perhaps, though my initial project only needs 10-12.
I am also aware of DMX lighting and MIDI->DMX converters. DMX XLR-5 cabling is a bit pricier than MIDI 5 pin DIN (though the RS485 protocol seems simple enough), so I thought maybe I should just emulate a MIDI->DMX->LEDs in my design.
Anyone familiar with MIDI-controlled lighting and how it's mapped to MIDI messages?
Jim
-- RETRO Innovations, Contemporary Gear for Classic Systems www.go4retro.com store.go4retro.com
If you're open to using ws28xx aka "Neopixels" then a wealth of stuff has been done with them. For example a google turned this up: https://www.partsnotincluded.com/how-to-control-anything-on-arduino-using-mi... p.s. about "how lighting is mapped to midi" IMHO most of the code in the DJ / Lighting industry is heavily proprietary and non-OSS. There's no silver bullet in the hack-a-day scene, but plenty of one-off projects and code snippets because as you say midi is well known / supported. On Sun, Mar 13, 2022 at 4:01 PM ☼ wil lindsay ☼ via vcf-midatlantic < vcf-midatlantic@lists.vcfed.org> wrote:
Using an Arduino as a gate with some 6N138 optocouplers would allow you to translate the signal from Midi to something like the https://github.com/FastLED Arduino-WS2810 libraries should be fairly simple, give or take figuring out the power supplies for your midi bridge and the LEDs.
The only real issue in using MIDI would be the lack of match in the specs. Midi is built around 0-127 (#0-#7F) where these LED libraries are typically 0-255 for each color. I'm sure you could sort something on the arduino like The Note (0-127) is an addressable LED and the Velocity 0-127 (doubled) is the color, where notes would be expected in a series of three. (R,G, & B).
Midi also uses the irritating speed of 31,250baud which normally has to be a cludge on an arduino. It might make more sense to just use serial at a higher speed and define your own information packets. The SPI speed of these LED strips is lightyears faster, and your arduino code and/or the library will typically collect your color commands in a buffer and send them a bit delayed. There's a little bit of lag, but even if you're synching to music, the human brain has an amazing tendency to make light flashing timing "feel" right, even when it's off.
On Sun, Mar 13, 2022 at 2:59 PM RETRO Innovations via vcf-midatlantic < vcf-midatlantic@lists.vcfed.org> wrote:
I am looking to control some RGBW leds (maybe SPI-based strips, maybe individual high power RGBW LEDs, not sure yet) with some of my classic computers.
That's pretty easy, no concerns there. Lots of arduino projects or I can just add in a 6522/6821/etc.
But, I thought, instead of just making a hobby project, I should try to design something that would work with classic systems *AND* current gear, and not be so platform dependent.
MIDI came to mind, both because the cost to interface is pretty low, cables are cheap, and MIDI is very well supported.
Where I am struggling is getting a handle on how to map the ability to set an individual LED color in a strip of say 20 or 60 to the MIDI protocol without just punting and using SysEx msgs. And, I might have a bunch of these strips (more than 16 perhaps, though my initial project only needs 10-12.
I am also aware of DMX lighting and MIDI->DMX converters. DMX XLR-5 cabling is a bit pricier than MIDI 5 pin DIN (though the RS485 protocol seems simple enough), so I thought maybe I should just emulate a MIDI->DMX->LEDs in my design.
Anyone familiar with MIDI-controlled lighting and how it's mapped to MIDI messages?
Jim
-- RETRO Innovations, Contemporary Gear for Classic Systems www.go4retro.com store.go4retro.com
On 3/13/2022 3:25 PM, Bart Hirst via vcf-midatlantic wrote:
If you're open to using ws28xx aka "Neopixels" then a wealth of stuff has been done with them. For example a google turned this up:
https://www.partsnotincluded.com/how-to-control-anything-on-arduino-using-mi... I saw a few more as well. And yes, I've used the LED strings before, and might for this prj.
p.s. about "how lighting is mapped to midi" IMHO most of the code in the DJ / Lighting industry is heavily proprietary and non-OSS. There's no silver bullet in the hack-a-day scene, but plenty of one-off projects and code snippets because as you say midi is well known / supported.
It's a shame, as I think hobbyists who are music friendly would love a simple way to add a bit of color into their presentation without having to spend days learning how to sequence it. Jim
p.s. about "how lighting is mapped to midi" IMHO most of the code in the DJ / Lighting industry is heavily proprietary and non-OSS. There's no silver bullet in the hack-a-day scene, but plenty of one-off projects and code snippets because as you say midi is well known / supported.
??? MIDI is an open protocol. ArtNet is open. sACN 1.31 is open. DMX512 is open. OSC is open. rtp-Midi (Apple MIDI) is open and free to use. IDN (laser projector stuff) is open but not popular, people use the EtherDream protocol which is open for unprotected content. Some of these are commercially developed but no real restrictions? The protocols from sender boards to LED video walls are proprietary, but some reverse engineering has been done on the lower end stuff. But most people don't care about those. There are some open source apps for this stuff, but they aren't very usable when compared to commercial competitors. But this is the case with a lot of software? Qlight+ and all that. - Ethan
Hi Ethan, totally agree on the openness of those protocols. What I was referring to as proprietary are any algorithms / patches inside commercial softwares used to create lighting performances by automagically connecting MIDI & Lighting systems. For example something like Lightjams <https://www.lightjams.com/#descriptionSection>. I could be mistaken though. Bart On Mon, Mar 14, 2022 at 10:46 AM Ethan O'Toole via vcf-midatlantic < vcf-midatlantic@lists.vcfed.org> wrote:
p.s. about "how lighting is mapped to midi" IMHO most of the code in the DJ / Lighting industry is heavily proprietary and non-OSS. There's no silver bullet in the hack-a-day scene, but plenty of one-off projects and code snippets because as you say midi is well known / supported.
???
MIDI is an open protocol. ArtNet is open. sACN 1.31 is open. DMX512 is open. OSC is open. rtp-Midi (Apple MIDI) is open and free to use. IDN (laser projector stuff) is open but not popular, people use the EtherDream protocol which is open for unprotected content. Some of these are commercially developed but no real restrictions?
The protocols from sender boards to LED video walls are proprietary, but some reverse engineering has been done on the lower end stuff. But most people don't care about those.
There are some open source apps for this stuff, but they aren't very usable when compared to commercial competitors. But this is the case with a lot of software? Qlight+ and all that.
- Ethan
On 3/13/2022 3:00 PM, ☼ wil lindsay ☼ wrote:
Using an Arduino as a gate with some 6N138 optocouplers would allow you to translate the signal from Midi to something like the https://github.com/FastLED Arduino-WS2810 libraries should be fairly simple, give or take figuring out the power supplies for your midi bridge and the LEDs. Yeah, I already got the Arduino/AVR to LED thing done. I also can easily do MIDI on the AVR, no problem.
The only real issue in using MIDI would be the lack of match in the specs. Midi is built around 0-127 (#0-#7F) where these LED libraries are typically 0-255 for each color. I'm sure you could sort something on the arduino like The Note (0-127) is an addressable LED and the Velocity 0-127 (doubled) is the color, where notes would be expected in a series of three. (R,G, & B). If there is no standard per se, I'd like to keep it in a fashion where someone with a keyboard could easily control the lights manually, so the above looks good from note and velocity. I think it might be better to use patch control msg to set to R, G, or B (or W), as then a manual player could then still play and control the LEDs directly.
Midi also uses the irritating speed of 31,250baud which normally has to be a cludge on an arduino. Actually, 31250 is easy on the 16MHz Arduino/AVR (31250*16 = 500K, which is divisor 32 on the UART. With the common crystals used on the AVR, 9600 and such are the odd birds. It might make more sense to just use serial at a higher speed and define your own information packets. I could, for sure, but it seems like a project that does MIDI would have more appeal. The SPI speed of these LED strips is lightyears faster, and your arduino code and/or the library will typically collect your color commands in a buffer and send them a bit delayed. There's a little bit of lag, but even if you're synching to music, the human brain has an amazing tendency to make light flashing timing "feel" right, even when it's off.
Yep, the MIDI speed is dwarfed by the SPI rate.
This is a bit of my world. You man know a lot of this. Midi "DJ" style controllers usually use note on/off for LED feedback on them (Akai APC-20. 40, maybe Novation Launchpad?) Those are often 2 color and off, though. Controllers with RGB buttons for feedback will often go Sysex. You could do MIDI and use the controller change messages. Don't remember if 0 to 127 or 0 to 255 but you get 127 of them per midi channel, 16 midi channels on a standard old school cable. Midi and DMX were never really built to do high pixel count RGB or in your case RGBW strips, but people use them! Note, stuff with SPI -- if you are doing things like rapid updates if I recall things like Arduino weren't strong enough CPU wise to handle doing the constant refresh of the pixels and also taking in Ethernet frames (or maybe midi data.) It will cause glitching. Stuff like the Teensy does fine. This is for pixels that do not have a clock line and require a pretty accurate timing to shift in all the RGB or RGBW or RGBA data. In the pro world it is DMX512. You can cheat and use 3 pin XLR, it's rare to see actual 5 pin connectors on hardware (at least the pro fixtures I have seen. But the controllers usually have the 5 pin plugs to annoy you so you have to use those 5 to 3 adapters. Cheap RS485 line drivers get you DMX512 in and out, and there is code on Arduino and others to speak this. Soooo in the modern world, most high count pixel systems are using Artnet or sACN 1.31 which is DMX512 data encapsulated on ethernet. The Christmas light systems do this, software like Madrix which is often used for those volumetric LED displays in clubs (check out their demo reels, cool stuff.) Modern lighting desks speak this. It's still very odd because they are breaking down MASSIVE arrays of LEDs into these 171 R+G+B values stuffed into DMX universes. Which usually all have to be mapped and placed in space, then they logically dump a graphic file or video file on top of it all and shoot that data down the wire. For VCFE I was using a Pi with Open Show Control running on Pi3/Linux that allows going sACN 1.31/Artnet from network over to physical DMX512 and a proprietary Phillips protocol for Color Kinetics stuff alled KiNet. It's a neat toolkit for protocol conversion. Existing solutions for ArtNet/sACN to pixels ... Alphapix from HolidayCoro is what I use, at about $200 for 16 LED universes and 2 RS485 universes before expansion boards are added. There is a few Chinese things on eBay, and there are some hats for the Pi that the Christmas light people use. A small cheap board that did sACN/Artnet via Ethernet to LED pixels would possibly sell, especially something small and cheap so maybe they can be more distributed? People like HolidayCoro sell some extender system but it's about $100-$200 for a pretty low count. They are buffering the SPI signal and driving it differential I think. Would make more sense to just run ethernet to everything. There are these other Chinese controllers that are ~$8-$20 called WLED or something that run on ESP32/8266 type ICs that have phone apps that talk bluetooth or wifi and it can push pixels. They are cute, neat, but it's a hassle connecting to them and controlling them on a whim. It might open the door for hardware that can be repurposed. There is an open source project that replaces the software in them, but I don't remember the details. I will be using it on my vehicle though, I plan to do RGB strips underneath it because neon is cool. Makes vehicle look like a spaceship. It would probably be easy enough to support both midi via an optoisolator or whatever or the other protocols. Depends on how you want to talk to it with old computer? ISA card! Madrix Eye candy: https://www.youtube.com/watch?v=dKmLTRWWKCc (laser safety zones? what?) https://www.youtube.com/watch?v=c4pyFgy0sZE (LEDs and Kinetics!!! Volumetric!) xLights software (was called Nutcracker): https://www.youtube.com/watch?v=bXlDqw2BFA0&t=38s Note - those aren't spotlights. There is just so many LED pixel arrays attached to the house it looks like one? 171 LEDs a universe, and there are 3 story high video screens made in this fashion. Pity the soul that configured the software! - Ethan On Sun, 13 Mar 2022, RETRO Innovations via vcf-midatlantic wrote:
I am looking to control some RGBW leds (maybe SPI-based strips, maybe individual high power RGBW LEDs, not sure yet) with some of my classic computers.
That's pretty easy, no concerns there. Lots of arduino projects or I can just add in a 6522/6821/etc.
But, I thought, instead of just making a hobby project, I should try to design something that would work with classic systems *AND* current gear, and not be so platform dependent.
MIDI came to mind, both because the cost to interface is pretty low, cables are cheap, and MIDI is very well supported.
Where I am struggling is getting a handle on how to map the ability to set an individual LED color in a strip of say 20 or 60 to the MIDI protocol without just punting and using SysEx msgs. And, I might have a bunch of these strips (more than 16 perhaps, though my initial project only needs 10-12.
I am also aware of DMX lighting and MIDI->DMX converters. DMX XLR-5 cabling is a bit pricier than MIDI 5 pin DIN (though the RS485 protocol seems simple enough), so I thought maybe I should just emulate a MIDI->DMX->LEDs in my design.
Anyone familiar with MIDI-controlled lighting and how it's mapped to MIDI messages?
Jim
-- RETRO Innovations, Contemporary Gear for Classic Systems www.go4retro.com store.go4retro.com
participants (4)
-
Bart Hirst -
Ethan O'Toole -
RETRO Innovations -
☼ wil lindsay ☼