On Tue, 11 May 1999 06:03:20 +0200 (MET DST),
Luigi Rizzo <[email protected]> said:
luigi> If i understand well, you are supporting the handling of MIDI commands
luigi> through the sio port only -- so i wonder what are the changes to the
luigi> audio driver(s) other than intercepting the device i/o calls and pass
luigi> them to your driver.
The following figure is the framework for the midi drivers and the sequencer I
have at this moment:
/dev/seqnencer
|
| <-- (Abstruct sequencer events and delays)
v
Sequencer driver (sys/i386/isa/snd/sequencer.c)
|
| <-- (Abstruct synthesizer events)
+--------------------------------------------------------------------------+
|
|
v
v
Midi synthesizer interface (struct synthdev_info,
sys/i386/snd/midisynth.c) OPL synthesizer interface
|
|
| <-- (Midi events)
--> |
v
v
Midi driver (sys/i386/isa/snd/uartsio.c) <-- /dev/midi
--> OPL driver
|
|
| <-- (Device-specific operations)
--> |
v
v
Midi interface
OPL chip
Abstruct sequencer events are SEQ_* events. Abstruct synthesizer events are the
entries in struct synthdev_info.
Device-specific operations are the lowest-level functions to transmit midi
messages or operate the OPL.
The midi buffer manager(in sys/i386/isa/snd/midibuf.c) is now only a library,
and will not handle I/O calls directly.
The interrupts by a midi interface or an OPL chip go up to the sequencer driver
in the inverse direction of the arrows
in the figure.
Writing a new midi/OPL driver involves two sorts of codes to implement: the
lowest-level driver(like uartsio.c)
and the synthesizer interface(the most functions in midisynth.c can be re-used).
luigi> Second thing: i think (but i may be wrong) in the Voxware driver
luigi> the name "sequencer" was used to identify the syntesizer
luigi> (OLP3/4/whatever). What do you mean by "sequencer" instead, and should
luigi> i perhaps change the name generated by /dev/sndstat to avoid confusion ?
I understand that a sequencer interprets only time-related events (delays,
syncs, etc),
and it is completely device-independent.
Seigo TANIMURA |M2, Nakagawa Lab, Dept of Electronics & CS
=========================|Faculty of Engineering, Yokohama National Univ
Powered by SIEMENS, |http://www.naklab.dnj.ynu.ac.jp/~tanimura/
FreeBSD 4.0-CURRENT |http://www.sakura.ne.jp/~tcarrot/
(9th May 1999) & muesli. |[email protected] [email protected]
VoxWare/LGSND Midi Driver for Serial Ports on FreeBSD:
http://www.naklab.dnj.ynu.ac.jp/~tanimura/freebsd-serialmidi/
To Unsubscribe: send mail to [email protected]
with "unsubscribe freebsd-hackers" in the body of the message