About OSSlib ============ This version of OSSlib which supports patch caching for cards like GUS, OPL3 and SoftOSS. This part of the library is only used by some older synthesizer chips that are no longer available. Also the SoftOSS virtual synth is compatible with it. Another part is the midiparser library. It's a simple callback based system that translates a stream of MIDI bytes (for example from MIDI keyboard) to events. This library is compatible with all OSS implementations including the freeware implementations. Copying conditions ------------------ This library can be freely used in ANY applications that is compatible with the OSS API. No parts of the code can be borroved to other purposes without written permission by 4Front Technologies. Installing OSSlib ----------------- Execute make. If your operating system is recognized you will get libOSSlib.so or libOSSlib.a depending on operating system. If make complains about unknown operating system you should use make libOSSlib.so or make libOSSlib.a to build it. Finally copy libOSSlib.* to /usr/lib Using OSSlib in programs ------------------------ OSSlib is intended to be used in programs using /dev/music but it also works with /dev/sequencer too. This version of the library contains only some basic patch caching functions to be used with OPL3 and GUS (and SoftOSS as well). Support for other cards is still missing. There are steps to be done when using OSSlib in a program: 1) Change Makefile to use -DOSSLIB and -lOSSlib Version 3.8 of has been designed to be compatible with OSSlib when this OSSLIB is defined. You can also use #ifdef OSSLIB in programs to cover the minor differences between the OSSlib and non OSSlib versions. 2) If the program defines segbuf_dump() routine, put it inside #ifndef OSSLIB/#endif pair. This routine is included in OSSlib and having the same routine inside the program conflicts with it. 3) Add the following call to the program after /dev/music is opened. #ifdef OSSLIB OSS_init(seqfd, 1024); #endif In the above seqfd is the file descriptor of /dev/music and 1024 is the size of the local buffer used for output events (1024 is a good value). 4) Add patch caching calls to the program. Patch caching should be called as early as possible. It's recommended to load all _required_ patches before starting the actual playback since loading large patches from disk may introduce significant delays to playback. There are two macros (in soundcard.h) to be used when loading instruments: SEQ_LOAD_GMINSTR(dev#, instr#) loads an instrument (melodic) patch. The first parameter is the synthesizer/device number (0 to N) and the second parameter is the General MIDI instrument number (0 to 127). Note that the numbering starts from #0 while many GM instrument tables start from #1. SEQ_LOAD_GMDRUM(dev#, drum#) is similar than the above but it loads an General MIDI percussive instrument. 5) After the above steps your program is ready to start playing. Examples for using OSSlib and for playing MIDI data can be found in ../mplay/* and ../gustest/midithru.c GUS support in OSSlib --------------------- You will need the full GM patch set distributed with the Ultrasound drivers for DOS. The default location where the library tries to find the patches is /dos/ultrasnd/midi but you can change it by editing guslib.c (the second line). Alternative patch sets (such as midia) are available from the net. Another source is the MIDIA library. Since non PnP GUS has only 1M of RAM (at most) it's not possible to load the full patch set. When playing lot of MIDI files in sequence it's possible that the menory becomes full if the program doesn't reset the samples between files. OPL3 support in OSSlib ---------------------- OSSlib supports patch loading to OPL3 FM synth cards (older OPL2 cards are not supported). The patch set is included in the std.o3 and drums.o3 files distributed with this package. These files should be copied to /etc (will be done by "make install"). These patch files are the same ones included in Adagio/glib package by Greg Lee. They are also distributed with playmidi. Using OSSlib with SoftOSS ------------------------- For instructions about using OSSLib with SoftOSS see the instructions for GUS (above). For more info about using OSSlib contact hannu@opensound.com