view generics.lisp @ 3:e854a73b0328

Add package definition and in-package forms. darcs-hash:20061025162304-aa3d6-85ddf506c4c08f698cd7057917770c0ce2ce4bf3.gz
author m.pearce <m.pearce@gold.ac.uk>
date Wed, 25 Oct 2006 17:23:04 +0100
parents 92b28dfc3938
children ee46db329423
line wrap: on
line source
;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*-
;;;; ======================================================================
;;;; File:       generics.lisp
;;;; Author:     Marcus Pearce <m.pearce@gold.ac.uk>
;;;; Created:    <2006-10-12 15:14:51 marcusp>
;;;; Time-stamp: <2006-10-25 17:22:38 marcusp>
;;;; ======================================================================


(cl:in-package #:amuse) 

;;; Accessors (do we need the get- prefix?) 

(defgeneric get-pitch (object &key kind)) ; ? 
(defgeneric get-chromatic-pitch (object))
(defgeneric get-diatonic-pitch (object))
(defgeneric get-frequency (object))

(defgeneric get-duration (object))

(defgeneric get-onset (object)) ; get-time? 


;;; Time Protocol (or moments?)

;; negative times/durations -> ERROR? 

;; time+: <time>      <duration> -> <time>
;;        <duration>  <time>     -> <time> (same as previous?) 
;;        <duration>  <duration> -> <duration> (or a distinct duration+?) 
;;        <time>      <time>     -> ERROR? 
;; 
;; time-: <time>      <time>     -> <duration>
;;        <time>      <duration> -> <time> 
;;        <duration>  <duration> -> <duration> (or a distinct duration-?) 
;;        <duration>  <time>     -> ERROR? 

(defgeneric time+ (object1 object2))
(defgeneric time- (object1 object2))

(defgeneric time> (object1 object2))
(defgeneric time< (object1 object2))
(defgeneric time>= (object1 object2)) 
(defgeneric time<= (object1 object2))
(defgeneric time= (object1 object2)) 
(defgeneric time/= (object1 object2)) 

;;; Duration protocol 

(defgeneric duration> (object1 object2))
(defgeneric duration< (object1 object2))
(defgeneric duration>= (object1 object2)) 
(defgeneric duration<= (object1 object2))
(defgeneric duration= (object1 object2)) 
(defgeneric duration/= (object1 object2)) 


;;; Pitch protocol 

;; pitch+: <pitch>    <pitch>     -> <pitch> 
;;         <pitch>    <interval>  -> <pitch> 
;;         <interval> <pitch>     -> <pitch> (same as previous?) 
;;         <interval> <interval>  -> <interval> (or a distinct interval+?) 
;; 
;; pitch-: <pitch>    <pitch>     -> <interval>
;;         <pitch>    <interval>  -> <pitch> 
;;         <interval> <interval>  -> <interval> (or a distinct interval-? 
;;         <interval> <pitch>     -> ERROR? 

(defgeneric pitch+ (object1 object2))
(defgeneric pitch- (object1 object2))

(defgeneric pitch> (object1 object2))
(defgeneric pitch< (object1 object2))
(defgeneric pitch>= (object1 object2)) 
(defgeneric pitch<= (object1 object2))
(defgeneric pitch= (object1 object2)) 
(defgeneric pitch/= (object1 object2)) 

;;; Interval protocol (emphasise _pitch_ not _time_ interval?) 

(defgeneric interval> (object1 object2))
(defgeneric interval< (object1 object2))
(defgeneric interval>= (object1 object2)) 
(defgeneric interval<= (object1 object2))
(defgeneric interval= (object1 object2)) 
(defgeneric interval/= (object1 object2)) 

;;; Time Signature 
;;; Tempo 
;;; Tonality (Key Signature / Mode) 
;;; Dynamics 
;;; Voice 
;;; Boundary Strength (phrasing)