Discussion:
a per-note sysex tuning command ?
(too old to reply)
Peter Billam
2015-05-12 23:42:10 UTC
Permalink
Greetings. I hear rumours of a "the MIDI Tuning Standard should
allow one to send a frequency using a sysex command with each note."

Does anybody know about that ? What's that referring to ?
If it exists, is it actually implemented ?

The context is that David Bellows, author of
http://www.platonicmusicengine.com
wants to write in unusual scales, from Harry Partch's
53 notes/octave up to no arbitrary limit...

Regards, Peter
--
Peter Billam www.pjb.com.au www.pjb.com.au/comp/contact.html
Les Cargill
2015-05-13 00:17:53 UTC
Permalink
Post by Peter Billam
Greetings. I hear rumours of a "the MIDI Tuning Standard should
allow one to send a frequency using a sysex command with each note."
Does anybody know about that ? What's that referring to ?
If it exists, is it actually implemented ?
The context is that David Bellows, author of
http://www.platonicmusicengine.com
wants to write in unusual scales, from Harry Partch's
53 notes/octave up to no arbitrary limit...
Regards, Peter
Have you seen this?

http://www.tallkite.com/alt-tuner.html
--
Les Cargill
Peter Billam
2015-05-13 01:41:26 UTC
Permalink
Post by Les Cargill
Post by Peter Billam
Greetings. I hear rumours of a "the MIDI Tuning Standard should
allow one to send a frequency using a sysex command with each note."
Have you seen this?
http://www.tallkite.com/alt-tuner.html
Looks like MTS Universal Sysex #82 is what's being referred to;

http://www.tallkite.com/alt-tuner.html
MTS Universal Sysex #82 (real-time single-note tuning change)
or Sysex #88 (non-real-time scale/octave dump). Most synths
don't respond to any sysexes and must be retuned via pitch bends.

Universal Sysex #82 is not documented in my Roland XV2020 manual;
I'm sure fluidsynth doesn't obey it, probably not timidity either.
It's mentioned (by name only) in:
http://www.midi.org/techspecs/midimessages.php#4
There may be other documentation, but if it's not implemented then
maybe that's not very relevant to anything ...

I regret having not using the spelling "sys-ex" in the Subject line,
because now my own posts get deleted by my own news-reader :-(

Regards, Peter
--
Peter Billam www.pjb.com.au www.pjb.com.au/comp/contact.html
Peter Billam
2015-05-13 23:24:21 UTC
Permalink
Post by Peter Billam
Universal Sysex #82 is not documented in my Roland XV2020 manual;
I'm sure fluidsynth doesn't obey it, probably not timidity either.
http://www.midi.org/techspecs/midimessages.php#4
There may be other documentation,
There is:
http://www.midi.org/techspecs/midituning.php
The single note tuning change message (Exclusive Real Time sub-ID#1 = 08)
permits on-the-fly adjustments to any tuning stored in the instrument's
memory. These changes should take effect immediately, and should occur
without audible artifacts if any affected notes are sounding when the
message is received.

F0 7F <device ID> 08 02 tt ll [kk xx yy zz] F7
F0 7F Universal Real Time SysEx header
<device ID> ID of target device (7F = all devices)
08 sub-ID#1 (MIDI Tuning)
02 sub-ID#2 (note change)
tt tuning program number (0 – 127)
ll number of changes (1 change = 1 set of [kk xx yy zz])
[kk] MIDI key number
[xx yy zz] frequency data for that key (repeated ‘ll' number of times)
F7 EOX

This message also permits (but does not require) multiple changes to
be embedded in one message, for the purpose of maximizing bandwidth.
The number of changes following is indicated by the byte ll;
the total length of the message equals 8 + (ll x 4) bytes.

Regards, Peter
--
Peter Billam www.pjb.com.au www.pjb.com.au/comp/contact.html
Les Cargill
2015-05-14 00:20:46 UTC
Permalink
Post by Peter Billam
Post by Peter Billam
Universal Sysex #82 is not documented in my Roland XV2020 manual;
I'm sure fluidsynth doesn't obey it, probably not timidity either.
http://www.midi.org/techspecs/midimessages.php#4
There may be other documentation,
http://www.midi.org/techspecs/midituning.php
The single note tuning change message (Exclusive Real Time sub-ID#1 = 08)
permits on-the-fly adjustments to any tuning stored in the instrument's
memory. These changes should take effect immediately, and should occur
without audible artifacts if any affected notes are sounding when the
message is received.
F0 7F <device ID> 08 02 tt ll [kk xx yy zz] F7
F0 7F Universal Real Time SysEx header
<device ID> ID of target device (7F = all devices)
08 sub-ID#1 (MIDI Tuning)
02 sub-ID#2 (note change)
tt tuning program number (0 – 127)
ll number of changes (1 change = 1 set of [kk xx yy zz])
[kk] MIDI key number
[xx yy zz] frequency data for that key (repeated ‘ll' number of times)
F7 EOX
This message also permits (but does not require) multiple changes to
be embedded in one message, for the purpose of maximizing bandwidth.
The number of changes following is indicated by the byte ll;
the total length of the message equals 8 + (ll x 4) bytes.
Regards, Peter
Will the Tallkite software not serve Mr. Bellows ( now I am having
an "I Dream of Jeanie" flashback and wondering why
he had a British accent ) out of the box?
--
Les Cargill
d***@gmail.com
2015-05-15 22:11:29 UTC
Permalink
Post by Les Cargill
Will the Tallkite software not serve Mr. Bellows ( now I am having
an "I Dream of Jeanie" flashback and wondering why
he had a British accent ) out of the box?
David Bellows here, I don't think the excellent Tallkite software will help me. I need to be able to incorporate any solution into the software I'm writing, ie, my software won't be able to access Tallkite.

But perhaps you know the answer to the main question. Do you know if either Timidity or Fluidsynth recognize the sysex #82 commands? If either of them do then that will be the perfect solution to my problem as I need a MIDI-to-audio file program and I need to be able to use every single imaginable tuning ever and not have the octave range limited. Basically I'll be sending the tuning frequency I want for each pitch.
Les Cargill
2015-05-16 00:38:01 UTC
Permalink
Post by d***@gmail.com
Post by Les Cargill
Will the Tallkite software not serve Mr. Bellows ( now I am having
an "I Dream of Jeanie" flashback and wondering why he had a British
accent ) out of the box?
David Bellows here, I don't think the excellent Tallkite software
will help me. I need to be able to incorporate any solution into the
software I'm writing, ie, my software won't be able to access
Tallkite.
Ah, pity. I have to wonder if there's not a way to use a VST host to
do what you want, but that involves probably a lot of unnecessary
digression.

I also wonder if you can't use MIDI-OX to derive examples of
pitch-changed notes using something sort of already assembled?
Post by d***@gmail.com
But perhaps you know the answer to the main question. Do you know if
either Timidity or Fluidsynth recognize the sysex #82 commands?
I do not know, sir. I know there is the Timidity-talk community on
sourceforge.
Post by d***@gmail.com
If
either of them do then that will be the perfect solution to my
problem as I need a MIDI-to-audio file program and I need to be able
to use every single imaginable tuning ever and not have the octave
range limited.
You'll be hard up against the seven-bit note number limit...
Post by d***@gmail.com
Basically I'll be sending the tuning frequency I want
for each pitch.
Yep.
--
Les Cargill
d***@gmail.com
2015-05-16 22:36:31 UTC
Permalink
Post by Les Cargill
Ah, pity. I have to wonder if there's not a way to use a VST host to
do what you want, but that involves probably a lot of unnecessary
digression.
My knowledge of programming and the intricacies of audio processing is very limited. I feel lucky that I am able to generate MIDI files at all. So I have no idea what a VST host is.
Post by Les Cargill
Post by d***@gmail.com
But perhaps you know the answer to the main question. Do you know if
either Timidity or Fluidsynth recognize the sysex #82 commands?
I do not know, sir. I know there is the Timidity-talk community on
sourceforge.
Would you happen to have an example MIDI file I could try? Something using the sysex #82 feature where the frequencies of specific MIDI pitches are changed in real time (if I'm understanding correctly what it does)? Before I start worrying about how to generate those MIDI files myself I need to find out if Timidity or Fluidsynth can even handle them.

And I am in contact with every single Timidity and Fluidsynth person I can find. But so far I'm not having much luck finding the information I need.
Post by Les Cargill
You'll be hard up against the seven-bit note number limit...
Which is why I'm hoping to be able to change just the notes I need to change on the fly. I have discovered that I can load multiple tuning tables into Timidity and then switch between them as needed but I'd still rather use the single note method as it looks like it will be more efficient. (Just because I might be using a 10,000-EDO doesn't mean I would actually need to use and load all 106666 notes of that scale in a single piece.)

Thanks,
Dave
Post by Les Cargill
Post by d***@gmail.com
Post by Les Cargill
Will the Tallkite software not serve Mr. Bellows ( now I am having
an "I Dream of Jeanie" flashback and wondering why he had a British
accent ) out of the box?
David Bellows here, I don't think the excellent Tallkite software
will help me. I need to be able to incorporate any solution into the
software I'm writing, ie, my software won't be able to access
Tallkite.
Ah, pity. I have to wonder if there's not a way to use a VST host to
do what you want, but that involves probably a lot of unnecessary
digression.
I also wonder if you can't use MIDI-OX to derive examples of
pitch-changed notes using something sort of already assembled?
Post by d***@gmail.com
But perhaps you know the answer to the main question. Do you know if
either Timidity or Fluidsynth recognize the sysex #82 commands?
I do not know, sir. I know there is the Timidity-talk community on
sourceforge.
Post by d***@gmail.com
If
either of them do then that will be the perfect solution to my
problem as I need a MIDI-to-audio file program and I need to be able
to use every single imaginable tuning ever and not have the octave
range limited.
You'll be hard up against the seven-bit note number limit...
Post by d***@gmail.com
Basically I'll be sending the tuning frequency I want
for each pitch.
Yep.
--
Les Cargill
Les Cargill
2015-05-17 00:43:42 UTC
Permalink
Post by d***@gmail.com
Post by Les Cargill
Ah, pity. I have to wonder if there's not a way to use a VST host
to do what you want, but that involves probably a lot of
unnecessary digression.
My knowledge of programming and the intricacies of audio processing
is very limited. I feel lucky that I am able to generate MIDI files
at all. So I have no idea what a VST host is.
At the risk of this being a digression, a VST host is usually a Digital
Audio Workstation. This is usually run on a general purpose
computer.

One such is Reaper.
http://www.reaper.fm/

As a VST host you can load plugins that consume streams of MIDI data
and produce PCM audio output.

If you're on Linux, there may be other less daunting solutions.
Post by d***@gmail.com
Post by Les Cargill
Post by d***@gmail.com
But perhaps you know the answer to the main question. Do you know
if either Timidity or Fluidsynth recognize the sysex #82
commands?
I do not know, sir. I know there is the Timidity-talk community on
sourceforge.
Would you happen to have an example MIDI file I could try?
No. Sorry. I generally just use bog-standard MIDI.
Post by d***@gmail.com
Something
using the sysex #82 feature where the frequencies of specific MIDI
pitches are changed in real time (if I'm understanding correctly what
it does)? Before I start worrying about how to generate those MIDI
files myself I need to find out if Timidity or Fluidsynth can even
handle them.
And I am in contact with every single Timidity and Fluidsynth person
I can find. But so far I'm not having much luck finding the
information I need.
Ach.
Post by d***@gmail.com
Post by Les Cargill
You'll be hard up against the seven-bit note number limit...
Which is why I'm hoping to be able to change just the notes I need to
change on the fly. I have discovered that I can load multiple tuning
tables into Timidity and then switch between them as needed but I'd
still rather use the single note method as it looks like it will be
more efficient. (Just because I might be using a 10,000-EDO doesn't
mean I would actually need to use and load all 106666 notes of that
scale in a single piece.)
Thanks, Dave
--
Les Cargill
d***@gmail.com
2015-05-19 19:25:33 UTC
Permalink
Just to let everyone know (and anyone who might come across this someday), Timidity does indeed support single note tuning changes in real time. This means that you can issue a sysex command with each MIDI note you send that tells it what frequency to use for that pitch. Basically you're sending frequency values instead of pitch values.

Fluidsynth does not, at this time, support this feature. Apparently not many hard/software MIDI synths do so that's something to be aware of.
Les Cargill
2015-05-20 03:39:42 UTC
Permalink
Post by d***@gmail.com
Just to let everyone know (and anyone who might come across this
someday), Timidity does indeed support single note tuning changes in
real time. This means that you can issue a sysex command with each
MIDI note you send that tells it what frequency to use for that
pitch. Basically you're sending frequency values instead of pitch
values.
Fluidsynth does not, at this time, support this feature. Apparently
not many hard/software MIDI synths do so that's something to be aware
of.
That is good to know. Thanks, David. Please let us know how it works out.
--
Les Cargill
Loading...