worse

Overview

Data structures

emu8000_t

emu8000_voice_t

Soundfont structures

Patch loading

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 /dev/sequencer it uses /proc/asound/0/patch0 (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.

Synth

emu8000_synth.c

Proc filesystem support

emu8000_proc.c
  • 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.


Sequencer linking

  1. A kernel sequencer client is created with ID 21.


  2. This subscribes to the mpu401 client already in the kernel.


  3. It should also allow user land clients to attach, so that midi files can be played.


This all needs improving.

Locking

Acknowledgements

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.

Copyright © Steve Ratcliffe 2008.