Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Send and Receive NRPN messages? #4

Open
hems opened this issue Jun 19, 2018 · 2 comments
Open

Send and Receive NRPN messages? #4

hems opened this issue Jun 19, 2018 · 2 comments

Comments

@hems
Copy link

hems commented Jun 19, 2018

Is there any plans to send / receive NRPN messages?

I can see sending NRPN messages is implemented on WebMidi and for parsing NRPN messages i have this prototype in javascript ( for max/msp mainly borrowed from Chris Hector's article on Max/MSP NRPN messages ) that parses NRPN messages, so i'm wondering how easy would be to port NRPN messages to GIBBERWOCKY so we could leverage goodies such as lfo with high precision NRPN messages?

If i'm not mistaken MIDI over USB / virtual midi have higher bandwidth than a regular MIDI cable so an option to trottle messages on a channel might be something to consider?

@charlieroberts
Copy link
Collaborator

This is a great idea. I will confess it's been a long time since I've done anything with NRPN (my hardware days seem to be behind me) but I can imagine this being really useful. Any ideas about how the end-user API would look?

@hems
Copy link
Author

hems commented Jun 20, 2018

@charlieroberts i believe the API would be the same as modulating a CC, the only difference is that the parameter address has 2 values, instead of one ( and the "value" sent to that parameter is also two messages together )

For instance MSB 18 LSB 0, so instead of

channel.cc0( value )

we would need something like:

channel.nrpn( MSB, LSB, value )

The difference here is that value is not from 0 to 127, as a CC could be.

One the NRPN synth i have here i can send values from 0 until 4096 for the filter.

So i believe the LFO would have to scale to that value, the problem is some NRPN parameters might have different values, so we could have a default "min" and "max" value for NRPN "range" but offer extra parameters for range. something like

channel.nrpn( MSB, LSB, value, 100, 2500 ) // scale amp from 100 to 2500

does that make sense?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants