Browse Prior Art Database

Realtime Algorithmic Rewrite Music Composition

IP.com Disclosure Number: IPCOM000117866D
Original Publication Date: 1996-Jun-01
Included in the Prior Art Database: 2005-Mar-31
Document File: 4 page(s) / 109K

Publishing Venue

IBM

Related People

Todd, SJ: AUTHOR

Abstract

Music composition by algorithmic generation (Rewrite) can provide a more powerful technique than the more widely used graphic manipulation techniques. However, it is usually generated by a batch process and played later, and thus does not permit performance interaction.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 51% of the total text.

Realtime Algorithmic Rewrite Music Composition

      Music composition by algorithmic generation (Rewrite) can
provide a more powerful technique than the more widely used graphic
manipulation techniques.  However, it is usually generated by a batch
process and played later, and thus does not permit performance
interaction.

      Rewrite rules can be used for several musical effects.  Some
are simple effects, such as chord, echo generation and doubling
channels for richer timbre.  Others are more complex, such as
1-system or fractal composition.  The approach described here permits
implementation of such systems with realtime input, and with realtime
change of the rewrite rules.

      The terminology used is based on two terms, event and motif.
These correspond approximately to character and string in
conventional rewrite terminology.  There are two kinds of events.  A
terminal event causes something to happen in the real system (e.g.,
midi note on, or some graphical event).  A rewrite event invokes a
motif, which fires new, related events.  For example, a keyboard note
may generate a rewrite event, this rewrite event generates an
arpeggio, and each note in the arpeggio generates a pair of midi
note-on/note-off events.

An event has (at least) the following properties:
  o  type (for example, motif replacement or midi event)
  o  subtype (for example, motif id or channel number)
  o  time (the time at which the event is to occur)
  o  duration (the nominal length of the event)
  o  pitch (the pitch of the event)
  o  strength (the strength/velocity/volume of the event)

A motif is a set of motif-notes which have (at least) the following
properties:
  o  type (type of generated subevent)
  o  subtype (subtype of generated subevent)
  o  (relative) timegap (time gap after previous subevent)
  o  (relative) duration
  o  (relative) pitch
  o  (relative) strength

      When a motif is triggered, it generates a set of subevents by
combining the parameters of the motif-event with the parameters of
the motif-notes.  This combination may be done in a variety of ways:
       For example, suppose event e has type motif, subtype 5.
      Motif 5 (m5) has several notes; e.g.,the third note is mn53.
      This generates a new event e3:
                 e3.type = mn53.type
                 e3.subtype = m53.subtype
                 e3.time = e2.time + e.duration * mn53.timegap
                 e3.duration = e.duration * mn53.duration
                 e3.pitch = e.pitch + mn53.pitch
                 e3.strength = e.strength * mn53.strength
         (nb el.time = e.time + e.duration * mn51.timegap)

      In other examples, the times generated from mn53 may be
absolute and not dependent on the duration of e.  Alternatively, a
degree of randomness may be added to some of the parameters, e...