Re: MIDI Transpose?
Re: MIDI Transpose?
- Subject: Re: MIDI Transpose?
- From: Brian Willoughby <email@hidden>
- Date: Tue, 3 Jun 2008 14:18:48 -0700
On Jun 3, 2008, at 07:29, Jay Koutavas wrote:
The preflight tweaking of the loaded file is a clever idea which
had not occurred to me. However, reloading the file each time the
transpose request occurs is cumbersome. We need to transpose
numerous times after a given load. Even while playing, ideally.
Now that you've described a need for transposition while playing,
that pretty much puts the nail in the coffin on handling transpose
while reading the file.
Manipulating the notes mathematically on the fly seemed less
daunting then pitch bending. But Peter's suggestion about tweaking
the time pitch unit makes it seem less so.
Not only less daunting, but better-sounding, and less CPU-intensive.
It's practically sacrilege to use the time pitch unit when you are
playing MIDI data. The audio quality will suffer and the CPU usage
will go up. I don't think you've begun to exhaust the CoreMIDI
options just yet.
Bill pretty much put the nail in the per-midi note transpose on-the-
fly when he stated there's not destination endpoint representing
speakers.
I disagree with your interpretation. You've not examined the options
of disconnecting your MIDI player from the sound generator. So long
as you connect your MusicPlayer directly to the selected MIDI device,
you're stuck with the untransposed pitches. You should examine my
suggestion to use a virtual end point between the sequence and the
synth.
It might help to point out that speakers are not MIDI devices. Even
if you had a destination endpoint for the speakers, how could you
transpose the MIDI data on a device that doesn't deal with MIDI data?
I think you should describe your intended MIDI system arrangement.
Do you support external MIDI devices? If so, then time pitch will
not be able to affect the audio without additional CoreAudio routing
and substantial audio interface I/O. Do you limit your users to only
using software MIDI instruments? Is your program restricted to only
the Apple DLS Synth? If the latter is the case, then 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.
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.
Brian Willoughby
Sound Consulting
_______________________________________________
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