Re: MIDI Transpose?
Re: MIDI Transpose?
- Subject: Re: MIDI Transpose?
- From: Brian Willoughby <email@hidden>
- Date: Wed, 4 Jun 2008 22:45:24 -0700
The MIDI Specification from February 1990 defines Registered
Parameter Number 2 (RPN2) as Coarse Tuning. After setting RPN MSB
(MIDI Controller 101) to 0x00, and RPN LSB (MIDI Controller 100) to
0x02, you can then use the Data Entry MIDI Controller to set Coarse
Tuning (see below).
MSB/LSB cents
0x00 0x00 -6400
0x40 0x00 0
0x7F 0x7F +6400
The DLS Level 1 spec contains the following description:
Coarse Tuning alters the MIDI note number before the articulation
data, region, and sample selections are made by the Control Logic.
This placement prevents unwanted timbre shifts in instruments that
have been multisampled. [As I mentioned, this also avoids the CPU
hit of the time/pitch AU]
Level 1 Devices do not support the use of Coarse Tuning on MIDI
Channel 10 [percussion]. The default setting is 0, which does not
alter the pitch.
The Level 1 Device is required to support the Data Entry MSB and Data
Entry LSB Controllers (MIDI Controllers 6 and 38, respectively), but
not required to support the Data Increment and Data Decrement
Controllers (MIDI Controllers 96 and 97, respectively).
It should be fairly easy to use CoreMIDI to send the four MIDI
messages needed to set Coarse Tuning whenever you want to change the
Tranpose amount in your program. I have not tested whether the Apple
DLS correctly implements the DLS Level 1 requirements in this regard,
but I would assume that it does, or this would be grounds for a bug
report.
Regarding Virtual Endpoint creation, this is documented in the
CoreMIDI API specification. I do not have a pointer at the moment.
Brian Willoughby
Sound Consulting
On Jun 4, 2008, at 17:29, Jay Koutavas wrote:
[...]you could create a virtual MIDI input which transposes
incoming MIDI data and then sends it to the DLS Synth. You would
then modify your current MusicPlayer to send the SMF playback data
to your virtual MIDI port instead of directly to the DLS, and thus
you would have on-the-fly transposition. The sound quality in this
arrangement will be superior to using the time pitch unit, and it
will take less CPU.
Excellent. Have you something you can point me to that shows how to
set-up the virtual endpoint to the DLS Synth? I'm usually pretty good
at googling this kind of thing up, but haven't had any success in
this case.
P.S. You could also consider sending a MIDI Transpose Event to the
Apple DLS Synth without altering the MIDI data. I have not tested
this fully for compliance, but the MIDI specification has very
flexible transpose features, and most General MIDI Devices are
required to implement these features.
All I found in the MIDI spec is pitch bending. I'm actually looking
at doing key transposing. The math for this is brain dead simple from
what I've gathered in my searches.
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden