annotate implementations/midi/functions.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 ac78ce3d0b10
children
rev   line source
j@302 1 (cl:in-package #:amuse-midi)
j@302 2
j@302 3 ;;;========================================================================
j@302 4 ;;; Functions that return features given an event.
j@302 5 ;;;========================================================================
j@302 6
j@302 7 (defun midi-event-type (event)
j@302 8 "Defines an arbitrary ordering for pitched and percussive events."
j@302 9 (if (pitchedp event) 0 1))
j@302 10
j@302 11 ;;;========================================================================
j@302 12 ;;; Predicates for conditioning on event attributes.
j@302 13 ;;; Useful for sia-datapoint-specs.
j@302 14 ;;;========================================================================
j@302 15
j@302 16 ;;; midi-drum-sound
j@302 17 (defun midi-drum-sound-eql (event sound)
j@302 18 (eql (midi-drum-sound event) sound))
j@302 19
j@302 20 (defun make-midi-drum-sound-eql (sound)
j@302 21 (lambda (event)
j@302 22 (funcall #'midi-drum-sound-eql event sound)))
j@302 23
j@302 24 (defun midi-drum-sound-any (event &rest sounds)
j@302 25 (loop for sound in sounds
j@302 26 do (if (midi-drum-sound-eql event sound)
j@302 27 (return t))))
j@302 28
j@302 29 (defun make-midi-drum-sound-any (&rest sounds)
j@302 30 (lambda (event)
j@302 31 (apply #'midi-drum-sound-any event sounds)))
j@302 32
j@302 33 ;;; midi-channel
j@302 34 (defun midi-channel-eql (event channel)
j@302 35 (eql (midi-channel event) channel))
j@302 36
j@302 37 (defun make-midi-channel-eql (channel)
j@302 38 (lambda (event)
j@302 39 (funcall #'midi-channel-eql event channel)))
j@302 40
j@302 41 (defun midi-channel-any (event &rest channels)
j@302 42 (loop for channel in channels
j@302 43 do (if (midi-channel-eql event channel)
j@302 44 (return t))))
j@302 45
j@302 46 (defun make-midi-channel-any (&rest channels)
j@302 47 (lambda (event)
j@302 48 (apply #'midi-channel-any event channels)))
j@302 49
j@302 50 ;;; midi-track
j@302 51 (defun midi-track-eql (event track)
j@302 52 (eql (midi-track event) track))
j@302 53
j@302 54 (defun make-midi-track-eql (track)
j@302 55 (lambda (event)
j@302 56 (funcall #'midi-track-eql event track)))
j@302 57
j@302 58 (defun midi-track-any (event &rest tracks)
j@302 59 (loop for track in tracks
j@302 60 do (if (midi-track-eql event track)
j@302 61 (return t))))
j@302 62
j@302 63 (defun make-midi-track-any (&rest tracks)
j@302 64 (lambda (event)
j@302 65 (apply #'midi-track-any event tracks)))