From alsa-devel-owner@alsa.jcu.cz  Mon Jan  4 23:45:02 1999
Received: from renoir.op.net (root@renoir.op.net [209.152.193.4])
	by marvin.jcu.cz (8.9.1a/8.9.1) with ESMTP id XAA28199
	for <alsa-devel@alsa.jcu.cz>; Mon, 4 Jan 1999 23:44:51 +0100
Received: from someip.ppp.op.net (d-bm2-0b.ppp.op.net [209.152.194.43]) by renoir.op.net (o1/$Revision: 1.18 $) with ESMTP id PAA01650; Mon, 4 Jan 1999 15:56:37 -0500 (EST)
Message-Id: <199901042056.PAA01650@renoir.op.net>
To: alsa-devel@alsa.jcu.cz
cc: "P.J.Leonard" <P.J.Leonard@bath.ac.uk>
Subject: Re: ALSA Sequencer API 
In-reply-to: Your message of "Mon, 04 Jan 1999 18:50:12 GMT."
             <36910D64.3F54@bath.ac.uk> 
Date: Sun, 03 Jan 1999 15:57:22 -0500
From: Paul Barton-Davis <pbd@op.net>
Reply-To: alsa-devel@alsa.jcu.cz
Sender: alsa-devel-owner@alsa.jcu.cz
Precedence: list

> My application does processing of midi input events in real time 
>e.g. look at the velocity information and do some modulation of effects
>before routing it to the midi out. This involves very little processing
>but does require the kernel/user loop to be tight.

I personally favor a kernel module for this kind of thing. As soon as
the ALSA sequencer code looks good (and I have free time away from
Quasimodo (http://ww.op.net/~pbd/quasimodo/), I plan to write a
*kernel* client for the sequencer which is essentially a version of
xphat (http://www.op.net/~pbd/xphat/) but written as a kernel module
without a UI. A user-level application can then just do ioctl's or
write's to the relevant device (corresponding to this module) to
adjust the editing process for each MIDI message received (and or
write new ones, but this is probably redundant). I already have the
specs for the editing "language" pretty much worked out in my head,
and it'll likely be byte-level. Tightest loop you can (reasonably)
have, assuming that the sequencer does its job right, and dispatches
the relevant (kernel) client function from within the MIDI interrupt
BH.

I really will do this, but it'll be a while, just like that Tropez+
driver port :)

--p

