Mercurial > hg > amuse
view implementations/midi/functions.lisp @ 229:c9573d61b1b9
twiddle meredith import functions
Ignore-this: e28a31418c8e60420bd84047d9110a13
darcs-hash:20090918124512-16a00-6354c6e9942caba1496caaac990d1f6985bfa17b.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 | 16b99fc989aa |
children |
line wrap: on
line source
(cl:in-package #:amuse-midi) ;;;======================================================================== ;;; Functions that return features given an event. ;;;======================================================================== (defun midi-event-type (event) "Defines an arbitrary ordering for pitched and percussive events." (if (pitchedp event) 0 1)) ;;;======================================================================== ;;; Predicates for conditioning on event attributes. ;;; Useful for sia-datapoint-specs. ;;;======================================================================== ;;; midi-drum-sound (defun midi-drum-sound-eql (event sound) (eql (midi-drum-sound event) sound)) (defun make-midi-drum-sound-eql (sound) (lambda (event) (funcall #'midi-drum-sound-eql event sound))) (defun midi-drum-sound-any (event &rest sounds) (loop for sound in sounds do (if (midi-drum-sound-eql event sound) (return t)))) (defun make-midi-drum-sound-any (&rest sounds) (lambda (event) (apply #'midi-drum-sound-any event sounds))) ;;; midi-channel (defun midi-channel-eql (event channel) (eql (midi-channel event) channel)) (defun make-midi-channel-eql (channel) (lambda (event) (funcall #'midi-channel-eql event channel))) (defun midi-channel-any (event &rest channels) (loop for channel in channels do (if (midi-channel-eql event channel) (return t)))) (defun make-midi-channel-any (&rest channels) (lambda (event) (apply #'midi-channel-any event channels))) ;;; midi-track (defun midi-track-eql (event track) (eql (midi-track event) track)) (defun make-midi-track-eql (track) (lambda (event) (funcall #'midi-track-eql event track))) (defun midi-track-any (event &rest tracks) (loop for track in tracks do (if (midi-track-eql event track) (return t)))) (defun make-midi-track-any (&rest tracks) (lambda (event) (apply #'midi-track-any event tracks)))