Receiving 14-bit MIDI CC messages.
@fishcrystals OK, so I'm trying out MIDI-OX with wine, and when I twist a knob, I get one controller number only. My controller is novation launchkey mini. The only thing I did was set the hardware as input, and then I look at the monitor when twisting knobs. I do get DATA1 and DATA2, but DATA1 is stuck to 15. Didn't even know about MIDI-OX, so there might something more I need to do.
Receiving 14-bit MIDI CC messages.
@whale-av said:
@ddw_music Beware all....... Yamaha send MSB and LSB in reverse order to everyone else.. see below for how to deal with that....
I believe I've taken care in my patches to be completely independent of the order in which messages come from the source. I accounted for that already.
hjh
Receiving 14-bit MIDI CC messages.
@whale-av said:
Yamaha send MSB and LSB in reverse order to everyone else
Quite a few reverse that, Alesis did as well (at least for the ion/Micron) and Akai sometimes did (at least for the Mini-AK which is a Micron). Like all things NRPN it is non-standard.
Receiving 14-bit MIDI CC messages.
@ddw_music Beware all....... Yamaha send MSB and LSB in reverse order to everyone else.. see below for how to deal with that....
Also most manufacturers... for low values.... when only 7bits are required they output just the LSB.
You might already be aware of all that.
A byte has 8 bits, bit 0 to bit 7 (0 = cleared or 1 = set).
A MIDI status byte – i.e. what sort of MIDI message it is - always has bit 7 set
A MIDI data byte – i.e. what value - always has bit 7 cleared.
Therefore a data byte can only use the lower 7 bits to determine its value
0 to 127 ($7F) or 0111 1111 (bit 0 is the rightmost 1, bit 7 is 0)
To get a value greater than 127 we join two data bytes together. The rightmost 7 bits from each byte gives a 14 bit number
0111 1111 and 0111 1111 becomes 0011 1111 1111 1111 the top 2 bits (bit14 and bit15) are ignored
So the 14bit number range is0 to 16383 ($3FFF) or 0011 1111 1111 1111(this is just 14 data bits in a 16 bit number – the 2 top (leftmost) bits are always 0).
The two bytes that make up the 14 bit number are what MIDI calls a course adjustment and a fine adjustment.
The byte that does a course adjustment is called the Most Significant Byte (MSB) and the fine adjuster is called the Least Significant Byte (LSB).
Also NRPN can be very slow over midi when data rates are high...... and SYSEX will be much faster.
David.
P.S. I have a lot of old docs and software from the decade before last..... midi stuff.... that has disappeared from the web...... stuff that can change encoder resolution on Behringer BCF units for example, which is not available in the Behringer software or on the hardware.
Just ask.
MPE support in Pure Data?
@jj37592 You should I think just send one note and then bend it.
There are standard rpn messages for changing the bend range....... recognised in hardware synths as they are General midi standard compatible..... even the Microsoft GS Wavetable synth reads them.
The bend range......
"You can set it with both CC#100&101 (RPN LSB&MSB) first to 0 and then adjust the range with CC#6 (Data Entry MSB) in semitones."
.... from https://forum.cockos.com/showthread.php?t=69372
I know nothing about Reaper, but it probably accepts OSC and user definable NRPN messages as well?
If Reaper will not accept the RPN messages, but the pitch bend range can be set somewhere (or the note can be bent by other means), then OSC messages might be easiest from Pd.
If you need NRPN......... nrpn.pd
NRPN messages are 14-bit..... like [bendin] ..... so the highest resolution in midi...... but OSC can do better!.
David.
Round trip latency tests
Is this a good round trip latency test, and should I believe the results I'm getting? Windows 10/64
RTL test.pd
Here is my MOTU ultralight mk4 with its Main L output connected to Mic/Line 1 routed to Computer 1. It's interesting that Pd is set to the lowest delay possible for a 64 sample blocksize, but the measured latency is over 5X that. About 10 years ago, @katjav posted she was getting 1.5X on Linux.

And here is my Yamaha 01v96i with Monitor Out L connected to Channel 11 line in routed to bus 1/USB 1.

Finally, is it true that I could expect these latencies if I were to use Pd as a live signal processor provided my patch doesn't introduce latency normally (e.g. uses overlapped windowing for FFT resynthesis) and that Pd is not falling behind in audio processing?
Midi Controller for PureData: experiences, recommendations, things to watch out for
Thanks @oid and @whale-av. I had actually made a similar (but uglier) version of NRPN before I knew about NRPN; some weird powers-of-10 stuff that didn't exactly make for smooth transitions... but it is something to think about. What I'd really like, though, is something where I simply have better than 128 points of distinction on a single controller... especially if I'm, say, scrubbing through a sample - if it's very long at all, it becomes obvious that I can't get halfway between two points. A two-controller method works, but isn't as faux-analog'ly satisfying as being able to nuance a single pot (like I love to do with my guitar pedals).
So I'll probably stick with relative mode and PD-side math (which I've also done before). I was just dreaming that there was some good, potentially non-MIDI hardware interface/protocol that I didn't know about!
Midi Controller for PureData: experiences, recommendations, things to watch out for
@Load074 How about 2 faders...... course and fine.....
Although mixing consoles control a large dynamic range with a fader, and usually send NRPN midi (14bit) ..... 16384 instead of 128..... which is part of the Midi1 spec I think... it is very old.
Yes, 16384 is 128 squared.
NRPN effectively sends course and fine in one midi message.
Controller 99 (MSB) and Controller 98 (LSB)
David.
Non-integer midi pitch
@oid How raw is [midiout].... ??
Did you establish that it cannot build a midi2 message...?
https://forum.pdpatchrepo.info/topic/13662/raw-midi-midiout
Just wondering because it can build NRPN... but does it have list constraints? RAW suggests "anything" in the message string that is just going to be converted to HEX.
It looks as though midi2 can carry both midi1 and midi2 messages, so maybe there is just one initial status byte to change.
David.
Creating synths: overall tone
Hi. Your filter looks interesting. I have an Xpander here, the filter is probably not as exciting as you would imagine
But still a nice synth...... anyway, on topic: I just wondered, I mean I have digital synths that sound good, from the Yamaha DX era up to modern softsynths. I just wonder what is going on under the hood besides the main stuff. I think my problems are mostly caused by aliasing but I can't really oversample much because I'm running out of CPU. Perhaps I'll reduce polyphony to 6 notes and try some different techniques for bandlimited oscillators.


