Mercurial > hg > amuse
view implementations/meredith/constructors.lisp @ 310:f99fd6a7bbfc
Add midi-db.
Ignore-this: c6f4fc32efa4453ddbdc478793eedd52
A basic implementation for working with MIDI files stored in the database.
It is a test case for `versioned' data, but only partially implemented at the moment.
darcs-hash:20100223152703-16a00-4388d2720907d777a1c6c6b3a010885ce0fe06a7.gz
author | j.forth <j.forth@gold.ac.uk> |
---|---|
date | Tue, 23 Feb 2010 15:27:03 +0000 |
parents | f5734df598f4 |
children |
line wrap: on
line source
(cl:in-package #:amuse-meredith) (defun make-meredith-composition-identifier (composition-id) (make-instance 'meredith-composition-identifier :composition-id composition-id)) (defun make-meredith-composition (&key events time interval identifier description) (make-instance 'meredith-composition :%data events :time time :interval interval :identifier identifier :description description)) (defun make-meredith-event (&rest args) (apply #'make-instance 'meredith-event args)) (defun db-event->meredith-event (db-event composition) (destructuring-bind (event-id tatum-on tatum-dur tactus-on tactus-dur crot-on crot-dur tatum-on-ms tatum-dur-ms beat-on-ms beat-dur-ms crot-on-ms crot-dur-ms pitch-name midi-note-number cpitch mpitch voice) db-event (make-meredith-event :identifier event-id :composition composition :tatum-on tatum-on :tatum-dur tatum-dur :tactus-on tactus-on :tactus-dur tactus-dur :time crot-on ; define crotchet as standard time :interval crot-dur :tatum-on-ms tatum-on-ms :tatum-dur-ms tatum-dur-ms :beat-on-ms beat-on-ms :beat-dur-ms beat-dur-ms :crot-on-ms crot-on-ms :crot-dur-ms crot-dur-ms :pitch-name pitch-name :number midi-note-number :cp cpitch :mp mpitch :voice voice)))