view implementations/midi/classes.lisp @ 220:de60993404c1

Move midifile-identifier class definition into classes.lisp Ignore-this: 735724c00ddb97fc6b2d90398fae5b6d darcs-hash:20090728190704-16a00-9787f577e9444e9a15e48a0f80098f28607c3c67.gz committer: Jamie Forth <j.forth@gold.ac.uk>
author j.forth <j.forth@gold.ac.uk>
date Thu, 24 Feb 2011 11:23:18 +0000
parents 619194befdd4
children bba5e8571b92
line wrap: on
line source
(cl:in-package #:amuse-midi) 

(defclass midi-object (amuse-object) ()
  (:documentation "MIDI base class"))

(defclass midifile-identifier (composition-identifier midi-object)
  ((pathname :initarg :path
	     :reader midifile-identifier-pathname
	     :initform 'nil))
  (:documentation "Identifier for MIDI files, containing pathname
  information"))

(defclass midi-composition (standard-composition midi-object)
  ((time-signatures :initarg :time-signatures
		    :initform 'nil
		    :accessor %midi-time-signatures)
   (tempi :initarg :tempi
	  :initform 'nil
	  :accessor %midi-tempi)
   (key-signatures  :initarg :key-signatures
		    :initform 'nil
		    :accessor %midi-key-signatures)
   (misc-controllers :initarg :controllers
		     :initform 'nil
		     :accessor %midi-misc-controllers)
   (identifier :initarg :identifier
	       :reader identifier)
   (midi-timebase :initarg :midi-timebase
		  :reader %midi-timebase))
  (:documentation "Class for midi compositions, with time
  signatures, tempi, key signatures and other controllers as
  lists in slots"))

(defclass midi-monody (amuse:standard-monody midi-composition)
  ())

(defclass midi-message (midi-object) ;?
  ((channel :accessor %midi-message-channel :initarg :channel)
   (track :accessor %midi-message-track :initarg :track)))

(defclass midi-pitched-event (standard-chromatic-pitched-event midi-message)
  ((velocity :initarg :velocity
	     :accessor %midi-pitched-event-velocity)
   (patch :initarg :patch
	  :accessor %midi-pitched-event-patch))
  (:documentation "Adds MIDI information to chromatic-pitched-event"))

(defclass midi-percussive-event (standard-percussive-event midi-message)
  ((velocity :initarg :velocity
	     :accessor %midi-percussive-event-velocity)
   (patch :initarg :patch
	  :accessor %midi-percussive-event-patch)
   (sound :initarg :sound
	  :accessor %midi-percussive-event-sound))
  (:documentation "Adds MIDI information to percussive-event"))