[linux-audio-dev] Timed Event Editor Framework

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

Subject: [linux-audio-dev] Timed Event Editor Framework
From: Andreas Voss (andreas_AT_avix.rhein-neckar.de)
Date: pe elo    20 1999 - 20:36:34 EDT


I've been on vacation, so this mail is a little late.

On Wed, 11 Aug 1999, Eli Brandt wrote:

> The way I think, I'd prefer a music sequencer that handles abstract
> time-structured data and maps it to MIDI.

BIG agreement.

> For example, if I have some wiggly control gesture, I don't want to
> record it as a stream of some controller. Because I _might_ want to
> map it to that controller, but I might also want to apply it to attack
> velocity, note duration, whatever.

Also the end user wants to edit e.g the modulation wheel value and does
not want to worry about its MIDI representation (LSB/MSB in different
controller messages).

What I would really like to see/build is a highly configurable, universal
editor for abstract timed events. I'm thinking of an editor, that is aware
of timed events that have (mostly) numeric parameters and allows to edit
these. This editor should not know about the nature of the parameters,
e.g. it should not be hardcoded, how to present the pitch-parameter of a
midi note event to the user. This could be described by metadata
(configuration file, java-beans etc). So this thing could be seen as a
framework or library, from which you can build specialized editors for
different tasks.

There are many advantages of such an approach:

* different tasks

Editing a csound .sco file and a MIDI files is very similar. In MIDI you
place note events on time/pitch axis and adjust velocity and maybe
aftertouch. In csound you place i-events on a time (and probably pitch)
axis and adjust some user-defined parameters. In MIDI you edit some
controllers like volume, reverb, filter resonance etc, which differ with
vendors (XG, GS, GM) and representation (controller, sysex). In csound you
have similar events (reverb etc) with a user defined representation.

Another appliaction would be a mixer for audio files (e.g. mixdown
singular drum instruments to a complete drum loop). Here you place the
'audio events' on time/instrument axis.

Another useful event type in both worlds (midi + csound) would be a
phrase event, an event that contains other events. This may be used
- to structure a song
- to use predefined patterns or song fragments out of a library
- invent new event types like a chord event (you place Em7 somewhere
instead of its single notes)

There could be more esoteric event types, e.g. algorithm events that may
generate new events or modify existing events.

* reuse of code

Think of a piano roll editor, a window where you can edit small rectangles
(note events). x-axis is midi clock, y-axis is pitch. You could use this
editor to edit any two dimensional data, e.g. you could use this editor to
arrange a song by replacing the y-axis with the track-no and edit phrase
events instead of note events. Or you can place MIDI keysignature events
by replacing y with the possible 12 tunes. Or edit the value of a
controller over time, or note-velocity over note-pitch (e.g. to make high
notes louder), or ...

Another editor would be a curve painter, where you can e.g. paint the
value of the pitch wheel (y-axis) over time (x-axis). There are many
possible values for the y-axis for this editor like velocity, LFO, reverb,
volumen etc for MIDI.

There should be a general property editor, that allows to access all
properties of a selection. The metadata should provide a specialized GUI
component for each parameter type, e.g. the value of a midi program change
could be picked out of a list of instrument names, the value of the midi
clock could be typed in as 'bar:step:tick' and so on. This property editor
is independend of any specific event type an can be used for standard MIDI
evnets (like note), esoteric events (like chord or algorithm), csound
events (that may have many parameters) etc.

* extensibility

The framework should provide services like
- general GUI like undo/redo, selections, cut/copy/paste, etc
- interfaces for different backends (like midi, csound)
- metadata handling
- GUI components like axis beans for different editors (pitch axis, midi
  clock axis, table axis for track/phrase arrangement window)
- complete editors like rectangle-editor (piano roll, arrangement window),
  property sheet, event list, curve painter
- simple algorithms (linear interpolation from start value to end value)
-...

Such a framework should be easy to extend with new editors, event types
and file formats (.mid, .sco)

I have been thinking of writing such a thing in java, but progress is very
slow. All I have so far is a few UML diagrams and some experimental GUI
stuff ...

Comments?

Andreas


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:25:52 EST