Mercurial > hg > amuse
view implementations/midi-db/classes.lisp @ 330:2fbff655ba47 tip
Removed cpitch-adj and cents SQL columns
author | Jeremy Gow <jeremy.gow@gmail.com> |
---|---|
date | Mon, 21 Jan 2013 11:08:11 +0000 |
parents | f99fd6a7bbfc |
children |
line wrap: on
line source
(cl:in-package #:amuse-midi-db) (defclass midi-db-object (amuse-object) ()) (defclass midi-db-identifier (identifier midi-db-object) ()) (defclass midi-db-collection-identifier (midi-db-identifier) ((collection-id :initarg :collection-id :accessor collection-id :initform nil)) (:documentation "Class to represent midi-db collection identifiers.")) (defun make-midi-db-collection-identifier (collection-id) (make-instance 'midi-db-collection-identifier :collection-id collection-id)) (defclass midi-db-composition-identifier (composition-identifier midi-db-identifier) ((composition-id :reader composition-id :initarg :composition-id)) (:documentation "Class to represent midi-db composition identifiers.")) (defun make-midi-db-composition-identifier (composition-id) (make-instance 'midi-db-composition-identifier :composition-id composition-id)) (defclass midi-db-composition (midi-composition midi-db-object) ((collection-identifier :initarg :collection-identifier :reader collection-identifier) (filename :initarg :filename :reader filename) (owner :initarg :owner :reader owner) (version :initarg :version :reader version) (creation-timestamp :initarg :creation-timestamp :reader creation-timestamp) (deletion-timestamp :initarg :deletion-timestamp :reader deletion-timestamp)) (:documentation "Midi-db class with slots for additional database fields. FIXME: This should perhaps be a subclass of 'versioned constituents'?")) (defun make-midi-db-composition (events start duration tempi timesigs keysigs identifier collection-identifier timebase filename owner version creation-timestamp deletion-timestamp) "Make a midi-db composition. This does not do the usual adjust-sequence initialisation (calling %recompute-standard-composition-period). FIXME: Is this bad?" (make-instance 'midi-db-composition :%data events :time start :interval duration :time-signatures timesigs :tempi tempi :key-signatures keysigs :identifier identifier :collection-identifier collection-identifier :midi-timebase timebase :filename filename :owner owner :version version :creation-timestamp creation-timestamp :deletion-timestamp deletion-timestamp)) (defmethod initialize-instance :after ((composition midi-db-composition) &key) "Initialize each event so that it knows what composition it belongs to." (sequence:dosequence (e composition t) (%set-composition composition e))) (defclass midi-db-event (midi-db-object linked-event) ((collection-identifier :initarg :collection-identifier :reader collection-identifier) (composition-identifier :initarg :composition-identifier :reader composition-identifier) (identifier :initarg :identifier :reader identifier) (version :initarg :version :reader version))) (defclass midi-db-pitched-event (midi-pitched-event midi-db-event) () (:documentation "Midi-db class with slots for additional database fields. FIXME: This should perhaps be a subclass of 'versioned constituents'?")) (defclass midi-db-percussive-event (midi-percussive-event midi-db-event) () (:documentation "Midi-db class with slots for additional database fields. FIXME: This should perhaps be a subclass of 'versioned constituents'?")) (defun make-midi-db-pitched-event (collection-identifier composition-identifier event-identifier track channel patch pitch velocity start duration version &optional composition) (make-instance 'midi-db-pitched-event :collection-identifier collection-identifier :composition-identifier composition-identifier :identifier event-identifier :track track :channel channel :patch patch :number pitch :velocity velocity :time start :interval duration :version version :composition composition)) (defun make-midi-db-percussive-event (collection-identifier composition-identifier event-identifier track channel patch drum-sound velocity start duration version &optional composition) (make-instance 'midi-db-percussive-event :collection-identifier collection-identifier :composition-identifier composition-identifier :identifier event-identifier :track track :channel channel :patch patch :sound drum-sound :velocity velocity :time start :interval duration :version version :composition composition)) (defclass midi-db-tempi (standard-tempo-period midi-db-object) ((version :initarg :version :reader version)) (:documentation "FIXME: subclass versioned constituent")) (defun make-midi-db-tempo (start duration microsecs-per-crotchet version) (make-instance 'midi-db-tempi :time start :interval duration :bpm (microsecond-per-crotchet-to-bpm microsecs-per-crotchet) :version version)) (defclass midi-db-timesig (standard-time-signature-period midi-db-object) ((version :initarg :version :reader version)) (:documentation "FIXME: subclass versioned constituent")) (defun make-midi-db-timesig (start duration numerator denominator version) (make-instance 'midi-db-timesig :time start :interval duration :numerator numerator :denominator denominator :version version)) (defclass midi-db-keysig (midi-key-signature-period midi-db-object) ((version :initarg :version :reader version)) (:documentation "FIXME: subclass versioned constituent")) (defun make-midi-db-keysig (start duration mode sharp-count version) (make-instance 'midi-db-keysig :time start :interval duration :mode mode :sharp-count sharp-count :version version))