From alsa-devel-owner@alsa.jcu.cz  Sat May  9 23:04:28 1998
Received: from altrade.nijmegen.inter.nl.net (altrade.nijmegen.inter.nl.net [193.67.237.6])
	by marvin.jcu.cz (8.8.8/8.8.8) with ESMTP id XAA21438
	for <alsa-devel@jcu.cz>; Sat, 9 May 1998 23:04:22 +0200
Received: from obelix.fvdpol.inter.nl.net by altrade.nijmegen.inter.nl.net
	via bd99-8.Breda.NL.net [193.79.246.233] with ESMTP for <alsa-devel@jcu.cz>
	id XAA03212 (8.8.8/3.27); Sat, 9 May 1998 23:04:19 +0200 (MET DST)
Received: (from frank@localhost) by obelix.fvdpol.inter.nl.net (8.8.7/8.7.3) id XAA05203 for alsa-devel@jcu.cz; Fri, 8 May 1998 23:25:09 +0200
From: Frank van de Pol <F.K.W.van.de.Pol@inter.nl.net>
Message-Id: <199805082125.XAA05203@obelix.fvdpol.inter.nl.net>
Subject: Re: New Sequencer core
To: alsa-devel@jcu.cz
Date: Fri, 8 May 1998 23:25:08 +0200 (MET DST)
In-Reply-To: <354ED590.794B@bath.ac.uk> from "P.J.Leonard" at May 5, 98 10:02:08 am
Content-Type: text
Reply-To: alsa-devel@alsa.jcu.cz
Sender: alsa-devel-owner@alsa.jcu.cz
Precedence: list

P.J.Leonard wrote:
> 
>  I was doing some work on my sequencer over the weekend. I was wondering
> what the best
> way to organise the allocation of voices:
> 
> In my scheme of things a Voice has a table of effects which implements
> the interface to a given
> device. A voice also has an lookup table which maps midi input events
> onto these effects. 
> However this is not really anything to do with my querry.
> 
>  Plan.
> 
>  A singleton VoiceManager provides the high level interface.
> 
>  An application requests a voice using the folling infomation.
> 
> 
> SYNTHTYPE:VOICETYPE:patchname:id
> 
> e.g 
> 
>  AWE32:VOICE:piano2:1
> 
>  *:VOICE:harp:2
> 
>  GUS:DRUM:jazz:1
> 
> 
> explination:
> 
>  - SYNTHTYPE  is the synth type the voice manager will attempt to
> allocate a voice on the requested
>               device. Otherwise ?
> 
>  - VOICETYPE  the type of channel required. This is a normal voice of
> drum. Maybe polyphonic or mono ?
> 
>  - patchname  name of the patch (for example GM). It could also be A
> program id + bank id ?
>               it could also be a traditional midi port and channel.
> 
>  - id         two or more tracks may want to share the same voice
> channel. e.g. splitting the drum track
>               into snare/ high hat etc. If you want to share a channel
> you use the same id. If you want
>               to use the patch but have a different channel you would
> use 2 distinct ids. 
> 
> 
>  Note that a wild "*" flag could be used if we don't care.
> 
>  I was going to code this up in a string ? 
> 
>  The voice manager has the task of returning a reference to a voice when
> given a string. YOu can also free
> voices (the voice manager can reference count if it is owned by more
> than one).

I'm not sure I understand your plan.  

Did I read correctly that the voice allocation is completely done by your
app? If so, than it looks more like a MOD player.

Is is possible to use another SYNTHTYPE? Can one also use an externaly
connected synth, or it it AWE32 only? 
 

>  Hmmmm, I am not so happy about all this. But I am not happy with the
> midi port + channel stuff because 
> in my opinion it sucks. If you want a drum channel you use channel 10
> (OR is it 16). The AWE32 driver
> supports the DRUMS on any channel. This is useful if you want to use a
> heavy reverb on a snare but leave
> the rest of the kit dry (impossible if you play the kit using a single
> channel).

Having drums at channel 10 (like 'dictated' with general midi) is not a must.
The extended standards like GS & XG, and all other non GM synths & samplers
can have the drums on ony channel one wants. The capability of AWE & GUS to
play drums on every channel _is_ compatible with midi, it's just a matter of
what standard (if any) to support.

Typical scenario achieveble with XG synths (and thus also with onboard
synths if we make'm sort of XG compatible):
	- drum 1 at midi channel 10 (standard drumkit)
	- drum 2 at midi channel 11 (909 drumkit)
	each channel can have it's own drumkit, effect settings. 
	NRPN are provided to set for a drum channel PER NOTE (ie.
	bassdrum, tom, highhat etc.) certain parameters:
		filter cutoff, resonance
		attack, decay, release
		pitch fine & coarse
		level, panning
		3x effect send (reverb, chorus, variation)

quite some knobs to twiddle with...


Cheers,
Frank.

========================---------------->
#define NAME    "Frank van de Pol"     
#define ADDRESS "mgr. Nelislaan 10"  
#define CITY    "4741 AB Hoeven"    
#define COUNTRY "The Netherlands"  
#define EMAIL   "F.K.W.van.de.Pol@inter.NL.net     -o)
                                                   /\\
Linux - Why use Windows, since there is a door?   _\_v

