[CM] midifile import

Ralf Mattes rm at seid-online.de
Thu Mar 19 07:23:59 PDT 2009

On Thu, 2009-03-19 at 14:39 +0100, Orm Finnendahl wrote:
> Rick,

Hi everyone,

> Am Donnerstag, den 19. März 2009 um 08:06:15 Uhr (-0500) schrieb Rick Taube:
> > orm i would not want to add anything that actually imports non-standard 
> > messages.
> I certainly agree (and wouldn't do it either).

> > however perhaps adding control over whether cm actually signals an error 
> > or just a warning for illegal messages would be useful?
> > so to import a midifile with bogus messages dropped you would do   
> > (midi-file-import ...   :strict nil)
> Sounds like an excellent idea to me!

Sorry, but why not use the wonderful features of Common Lisp? Recovering
from parsing errors/problems seems like the perfect job for conditions
and restarts. Just define a condition like:
 (define-condition midifile-error (error)
   ((message :initarg :message 
             :accessor message-of 
             :documentation "Some meaningful error message")
    (tick-time :initarg :tick-time
             :accessor tick-time-of
             :documentation "When in the stream did the parsing error
    (part    :initarg :part 
             :accessor part-of
             :documentation "Waht part is messed up")))

(defun midifile-error (message &key tick-time part)
   (error midifile-error :message message :part part :tick-time

and then later on use 

 (midifile-error "Parse time signature: expected 4 byte but only got
2" :ticks ticks)

and add some useful restarts to the parsing code (like ignore-message,
use-data, abort ...).

 Cheers, RalfD

> --
> Orm
> _______________________________________________
> Cmdist mailing list
> Cmdist at ccrma.stanford.edu
> http://ccrma-mail.stanford.edu/mailman/listinfo/cmdist

More information about the Cmdist mailing list