On Thu, Oct 04, 2001 at 04:37:12PM +0200, Rickard Lind wrote:
> oplout_open
> oplout_close
> oplout_instruments_program
> oplout_note_play
> oplout_note_stop
> oplout_volume
>
> just to make it life a bit easier... splitting the adlib driver into
> itself and oplout_ossseq.c
Eh, the adlib is quite different than MIDI. Teh card itself doesn't
care about notes -- the atom there is the voice. A voice is either
playing or not playing, and the instrument/note/volume is actually the
register set.
Basically, we need the following layout
adlib_core
adlib_ossseq
adlib_pcmemu
The core translates the MIDI note/channel view to the lower-level adlib
voice-only view. It also handles the polyphony limits and that sort
of thing.
The interface would end up woth something like:
oplout_open()
oplout_setupinsruments(patch.002)
oplout_close()
oplout_voiceon(voice, instrument_id, note, velocity)
// literally equates to: oplout_voiceon(voice, register_set)
oplout_voiceoff(voice)
The adlib itself has no master volume, so any volume control should be
handled by the adlib_core layer in the form of velocity scaling.
Things get trickier when squeezing adlib through a sequencer interface.
Emperical evidence suggests that the ossseq's timing is shot to hell,
and can't really handle the polyphony/voice management requirements.
(hence the OSS /dev/fm interface) I need to look into ALSA's FM
sequencer support still, but I suspect it's not well suited for
real-time FM stuff either.
Basically, once the opl_pcmemu driver works, I vote for tossing out
opl_oss and possibly even opl_alsa as well. (I'm biased, none of my
linux boxen have FM synthesis, and FM is now going the way of MIDI)
Hmm. I wonder if Tatsuyuki Satoh's opl3 emulator would be
licence-kosher to drop into FreeSCI?
- Pizza
--
Solomon Peachy pizzaATfucktheusers.org
I ain't broke, but I'm badly bent. ICQ# 1318344
Patience comes to those who wait.
...It's not "Beanbag Love", it's a "Transanimate Relationship"...
-- Attached file included as plaintext by Listar --
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org
iD8DBQE7vIzyysXuytMhc5ERAq7gAJ0Z3AnWnevzKEvGioCT6pXCBeYGgQCeJXCX
TvKIJD9gA9WIXmKKEGfOBXY=
=4SRL
-----END PGP SIGNATURE-----