
For the brave and interested hackers next files used for testing sequencer concepts might be of interest. The most recent files are at the end. Beware that these are NOT complete distribution that compile out-of-the box. In fact these are snapshots of developer's directories. Usage is (as always) at your own risk.
Click here for the most recent version
Supports registration of both user-land and kernel clients. And contains also a first attempt at message passing: the user-land clients can send events to the kernel client.
Supports registration of both user-land and kernel clients. And allows (direct, no prioQ and timers yet) message routing between clients. There is support for both user and kernel clients. Messages can be directed to a specific client or be broadcasted to all (dest.client==0).
It also contains first implementations of the event memory manager and event fifo's.
This rough prototype allows scheduling of real-time events. No support for song timestamps yet.
A simple timer for the system clock (100Hz) is provided. The timer is started on loading the snd-systimer module. To stop the clock the timer modules has to be unloaded.
A simple client that play events to a MIDI port (usertest2) is included. I also included the binaries of a midi file player (smf-alsa) that output to alsa client 1. Please load first the usertest2 client (and see it registerd as user client 1) if you want to listen to midi files.
Look at /proc/sound/sndseq to see what clients have registed.
From the README (yes, it now features a README!!!):
* Allows scheduling and routing of real-time events. No support for song
timestamps and tempos yet. There is only one timing queue.
* Both user-land and kernel clients can connect, send events, receive events
and communicate directly with the sequencer (ioctl()). Reads and writes
for user-land clients can be batched, blocking io and select() is
supported. Kernel clients can directly enqueue data to the priority queue
and use a call-back for incoming data.
* A simple timer for the system clock (100Hz) is provided. The timer is
started and stopped by sending SND_SEQ_EVENT_START and SND_SEQ_EVENT_STOP
messages to the timer (client 0, port 0).
* Support for fixed length events and variable length events (used for
system exclusive data)
* proc interface (/proc/sound/sndseq) to see what clients have registered.
* Included sample clients:
- readtime : display current sequencer time
- usertest1 : decoding of received events to text
- usertest2 : a simple user-land driver that plays received events to
the MIDI output port (/dev/sndmidi00). It uses Round-Robin
scheduling to get reasonable performance. Tested with a
Gravis Ultrasound MAX card and external Yamaha XG
synthesizer.
It supports the following events:
- SND_SEQ_EVENT_NOTEON
- SND_SEQ_EVENT_NOTEOFF
- SND_SEQ_EVENT_PGMCHANGE
- SND_SEQ_EVENT_PITCHBEND
- SND_SEQ_EVENT_CONTROLLER
- SND_SEQ_EVENT_START (send real-time start)
- SND_SEQ_EVENT_STOP (send real-time stop)
- SND_SEQ_EVENT_CONTINUE (send real-time continue)
- SND_SEQ_EVENT_SYSEX
- playmidi : a player for standard midi files (SMF). It is based on the
readmidi library, so only type 0 midi files are supported.
Output is send to client 1 (hard coded), so either
usertest1 or usertest2 should be started first.
- kernel-client1
: a test for the kernel API, just bounces events to next
client
Changes since previous version:
Changes since previous version:
| Version 0.036, April 2nd, 1999 | Usage: |
| Copyright (c) 1998 by Frank van de Pol, Netherlands | Advanced Linux Sound Architecture |