Put the sound stuff in alpabetic order.
[unix-history] / sys / i386 / isa / sound / HOWTO_MIDI
The following file describes the procedure for adding modules to MIDI
Please READ the main documentation files for the driver first!!!
Example: We have a sound card with a MIDI chip & port on it
and, we call it the 'MYBLASTER' card:
**************************************************************************
0: Run 'configure'. Select the MIDI on CHIP support option.
1: Write a midi driver module; 'blast_midi.c'
(with functions for open,close,read,write,attach.)
1a: Write all functions except the 'attach' the way you want.
For the 'attach' function, look at a model in the 'pro_midi.c'
file. Just dup it in the same fashion. For the 'generic_midi_operations'
structure which is required, see file 'dev_table.h'.
2: We called the 'attach' function: 'blast_attach'.
Go to the file 'dev_table.h' and add your driver name and the function
pointer ( which is 'blast_attach' ) to the 'midi_supported' table.
3: You are almost set. Go and make a reference
to an 'exclude constant'; say EXLCUDE_BLAST_MIDI in your module
(refer to the 'pro_midi.c' file for model). Also make sure to
add the constant to the file 'sound_config.h' (for example, look
where the constant EXCLUDE_PRO_MIDI is in the file.)
4: Add the line
#define ALL_EXTERNAL_TO_ME
as the 1st line of your 'blast_midi.c' file. This happily, makes
you ignorant of everything else specific to the driver! :).
4a: And of course, don't forget to make a device :). Note that your
minor number should be = ( 15 + position of your driver in the
'midi_supported' table in the 'dev_table.h' file ).
Eg: Your driver is the second one in the table. viz midi_supported[1].
Your device minor number should be ( 15 + 1 = 16 ). Then, make the
reference to your device as, say CMIDI_DEV_BLAST in the file
'sound_config.h'. Also add this in 'soundcard.c' for the open, read,
write and close routines. See files for example using CMIDI_DEV_PRO
(which is the ProAudioSpectrum on chip MIDI).
5: You are all set. If ever you have problems, follow the same model
as the file 'pro_midi.c', except for substituting your own functions!