Re: [linux-audio-dev] News about sequencers (not my own though!)

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: Re: [linux-audio-dev] News about sequencers (not my own though!)
From: David Slomin (dgslomin_AT_alumni.princeton.edu)
Date: ke tammi  19 2000 - 13:41:48 EST


Fredrik wrote:
 
> But the asterisk on the right *is* a separate event. MIDI has no
> concept of "note-duration", it's just "note-on" and "note-off". The
> line drawn between the too in common piano roll editors is just for
> convinence.

Ah, that makes sense. Remember that PEGS has no built in knowledge
of MIDI at all. I plan to provide a default set of callbacks that
handle it, but there's no reason to limit yourself to mine. Sometimes
you want to work with raw MIDI events the way they are in the spec
(note-off has no link at all to note-on), and sometimes you just want
to think of them as a single event with a duration. PEGS supports
both of these quite nicely.

The only thing that would take a little effort is if you wanted to
be somewhere in between... showing note-on and note-off as separate
events, but having them move together when you dragged one of them
around, etc. This could be accomplished in PEGS, but would require
some careful callback programming.

> Does MIDI handle this? I thought that the only event-specific
> properties was note-on velocity and note-off velocity. Besides that,
> there's CC's, which are channel-specific, and polyphonic aftertouch,
> which is note-specific.

You're right, what was described here could not be accomplished in
MIDI. Possibly, it could be translated to/from MIDI on input and
output. The key thing is that PEGS is not confined by the
limitations of MIDI. The same is true of Cakewalk, Cubase, or Logic,
but unlike them, PEGS lets the user control the translation to MIDI.
Also unlike them, PEGS has no native file format, although I plan
to make a few default implementations.

> But CC events are different from note events, in that they don't
> have a pitch value. So if you have pitch associated with the
> y-value, where do you put CC events? Polyphonic aftertouch does
> have a pitch value, so that's easier.

How about a little pseudocode to ease your mind:

   void renderCallback(Event event, EventRenderer renderer)
   {
      switch (event.getType())
      {
         case note:
         {
            renderer.setHeadType(dot);
            renderer.setY(event.pitch);
            break;
         }
         case modwheel:
         {
            renderer.setHeadType(plus_sign);
            renderer.setY(event.amount);
            break;
         }
      }
   }

That's not all there is to it, since properties are string-keyed
for runtime flexibility rather than using Java's built-in type
system, but it's not too much harder than that. If that raised a
red flag for the performance concious amongst you, don't worry,
I have a hashing system planned to speed up the string key stuff.

> In your meta-events, can you bind event properties to
> meta-parameters? Like "ramp modulation amount from current value
> to whatever the North spike specifies over whatever the duration
> spike specifies". This would make CC programming real easy.

Exactly. There's nothing magical about meta-events in PEGS...
they're identical to "regular MIDI events". To beat an already dead
horse, PEGS treats MIDI, Csound, audio clip sequences, and whatever
diabolical event system you can concoct yourself entirely the same.
All the differences are ironed out in callbacks that the user
provides.

> I'm looking forward to a release. It seems that the interesting
> part of your project is the UI, and it's an area where i think
> current sequencers are lacking.

Thanks, me too. :-) The whole point of the project is UI; I
started it exclusively because I've never been able to find a
sequencer with an editing interface which meets my needs.

Div.

-- 
David Slomin, Engineer       mailto:david.slomin_AT_av.com
AltaVista Search Solutions   http://solutions.altavista.com/
RFC 822 plaintext email strongly preferred except for attachments


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : pe maalis 10 2000 - 07:23:26 EST