I also did not want to have to write a sfxload type
utility, so I decided to use the existing one and use exactly the
same scheme for loading patches.
The only difference that instead of using
(assuming AWE64 is card 0).
The sfxload program uses some ioctls which have to be removed.
The code for loading Soundfont patches is separated out into a separate module that could be shared by any driver that uses the soundfont2 format.
emu8000_synth.c. This code is derived from the OSS driver after making all the data structure changes. The layer code is not included and will be done differently if it is needed.
emu8000_proc.c. There are three devices that appear in /proc/asound under the relevant card directory.
- patch0 This is used for loading patches and also, at present for some debugging and setup procedures.
- ram0 This is an image of the on board RAM. You can only read it at present. It is mainly for debugging, I don't expect this will be used as a way of loading patches!
- rom0 This is an image of the on board ROM samples. Again mainly for debugging, and because you can.
- A kernel sequencer client is created with ID 21.
- This subscribes to the mpu401 client already in the kernel.
- It should also allow user land clients to attach, so that midi files can be played.
This all needs improving.
Jaroslav Kysela wrote the ALSA core with Frank Van de Pol contributing the sequencer. I want to say what a great system this is, because everything just fell into place and worked almost first time.