Old 01-23-2020, 02:36 AM   #1
BellesOndes
Human being with feelings
 
BellesOndes's Avatar
 
Join Date: Oct 2019
Location: Bordeaux - https://studio.bellesondes.fr
Posts: 53
Default Hardware VUMeter - Reaper implementation

Hello all, first post here, I'm a fellow Reaper user and hardware engineer for the living.

I am working on a chainable PCB RGB Led Strip to operate as a Vumeter strip, and intend to implement it on my reaper setup (see attached files).



A this very moment I have a functionning version operating as an MCU vumeter in Midi-over-USB, and it works well with reaper (arduino programmed as an USB Midi device, using MCU library, LEDs being seen by the unit as a chain of "Neopixels" leds, which is why those 4 channel blocks are chainable as well up to... any number you want).

Point is, I want to reach a greater integration level with reaper, notably taking advantage of the fact that each LED is RGB, which means :
* using colors on each VUMETER strip to implement Peak/RMS/LUFS/Left&Right display,
* doing the same for recording, switching VUMETER LEDS to red just like reaper does in the normal theme,
* have track color, mute, solo et al being displayed as well
* Use another strip to Master display

Which means that MCU mode is not sufficient, and OSC is probably limited as well.

Enventually, I'm reaching a point where I could need some guidance from the more educated ones here to make the right decision in terms of both software and Reaper integration architecture, here's what solutions I've been considering so far:

* Developping a specific JS plugin for that to be incorporated in each channel that broadcasts data over Midi, so the Arduino can process and display it. I have a "rough" prototype of such solution, which works oddly, but does the job.
Pros : I can do whatever I want, using sysex messages to transmit any kind of information gathered from each channel. Cons : Midi intensive, quite overkill and probably resource-expensive , not working on master (I have not been able to transmit midi from master effect strip to any output).

* Bend project towards an OSC-based solution, implementing specific messages if needed. Main issue I have here, is understanding how OSC implementation works under Reaper and if I can do everything I want to do using this method, which i'm not sure I can.

This is where I'd be grateful to get some insight and ideas from the Reaper community, on the best way to proceed in such project.

Note: This hardware can easily be reproduced, it's a simple 10x10 PCB cut in two. I'd be happy to share the design files if you are interested. It's friendly with almost all PCB web warehouses, I had a strip of 20 channels (5 boards) assembled by a Chinese prototyping warehouse for less than 35USD).
Attached Images
File Type: jpg 20200104_142002.jpg (47.6 KB, 951 views)
File Type: jpg 20200104_195023.jpg (56.5 KB, 745 views)
BellesOndes is offline   Reply With Quote
Old 01-23-2020, 06:41 AM   #2
Dannii
Human being with feelings
 
Dannii's Avatar
 
Join Date: Mar 2010
Location: Adelaide, South Australia (originally from Geelong)
Posts: 5,598
Default

Welcome aboard BellesOndes!
Very interesting project. I'll be following this with interest.
__________________
Dannii is offline   Reply With Quote
Old 01-23-2020, 11:08 AM   #3
cyrano
Human being with feelings
 
cyrano's Avatar
 
Join Date: Jun 2011
Location: Belgium
Posts: 5,246
Default

+1

Plan on selling kits/boards?
__________________
In a time of deceit telling the truth is a revolutionary act.
George Orwell
cyrano is offline   Reply With Quote
Old 01-23-2020, 02:52 PM   #4
lb0
Human being with feelings
 
Join Date: Apr 2014
Posts: 4,171
Default

You could use a Reascript language such as Lua to do this. Using Reaper's API it is easy to get info such as track levels etc.

You can also use StuffMIDIMessage API to send midi messages to a hardware port (but only works for simple 3 byte midi i think).

If you require SYSEX output - you could have a single JSFX on a single track output to a midi hardware out. This JSFX could be controlled by a Lua reascript using shared memory to transfer data from Lua to the JSFX. The JSFX could then simply act on the data it receives and send it out to the midi hardware.

The main downside is the 'refresh' rate of the Lua script (the frequency the deferred loop gets run) is roughly between 30-50Hz - so if you wanted anything smoother - you would have to find another way.

In my experience - the Lua defer rate works fine for meters and such. You can set Reaper's own meters to 30Hz in Preferences->Track Control Panels->Meter Update Frequency (Hz) - to see what it looks like.
__________________
Projects - Reascripts - Lua:
Smart Knobs 2 | LBX Stripper | LBX Floating FX Positioner
Donate via Paypal | LBX Tools Website
lb0 is offline   Reply With Quote
Old 05-14-2020, 03:30 PM   #5
BellesOndes
Human being with feelings
 
BellesOndes's Avatar
 
Join Date: Oct 2019
Location: Bordeaux - https://studio.bellesondes.fr
Posts: 53
Default

Hi, thanks for your messages, here is a short video of the first basic implementation - VUMeter + Mute/Solo on 8 channels : https://www.youtube.com/watch?v=E2yCvHli5Ys

And sorry for the long delay, this project got delayed for peronal reasons. "Thanks" to Covid, I was able to move on and eventually found an architecture that suits my objectives,
- It uses MCU for all things that basically exist within the standard (VUmeters, Mute/Rec/Play, etc...)
- I will "overload" additional Midi messages for Reaper-specific data (e.g. Channel color patching) using LUA or jsfx.

Being a "hardware guy" is a pain in this project, I'm getting new SW skills!


I don't plan to sell the circuits at the moment, but might if there is demand! Any other form factor is easily achievable using an Arduino and generic serial LED Strips.
BellesOndes is offline   Reply With Quote
Old 05-18-2020, 06:38 AM   #6
lubvic
Human being with feelings
 
Join Date: Sep 2013
Posts: 87
Default

GREAT!
It would be possible to do the same but for track colors? my wprkflow is based (i think like everyone) on track colors...
lubvic is offline   Reply With Quote
Old 06-08-2020, 05:56 AM   #7
BellesOndes
Human being with feelings
 
BellesOndes's Avatar
 
Join Date: Oct 2019
Location: Bordeaux - https://studio.bellesondes.fr
Posts: 53
Default

Yeah that is totally what I want to achieve, thanks to this specific midi overload system
BellesOndes is offline   Reply With Quote
Old 06-08-2020, 03:47 PM   #8
BellesOndes
Human being with feelings
 
BellesOndes's Avatar
 
Join Date: Oct 2019
Location: Bordeaux - https://studio.bellesondes.fr
Posts: 53
Default

I have something that works by itself, but I can't use reaper.stuffMIDIMessage on an output that is already used by a Mackie Control controller...

I guess this is intended for MCU proper functionning, however is there a way to either bypass this restriction, or in the script to temporarly disable the MCU interface to send some MIDI, and restore it back?

Thanks in advance,

Vincent
BellesOndes is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 06:02 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.