On Thu, 2018-12-06 at 09:59 +0000, Richard Shann wrote:
> Recently I was asked for pieces involving a certain combination of
> instruments. I knew I had some, but as I have over a thousand Denemo
> scores I realized I needed something more than just my memory to fish
> them out.
> So I wrote a script that goes through all the folders below a
> starting
> folder opening the Denemo scores it finds and extracting title,
> composer, score comment, instrument list and an incipit - that is the
> opening music. When this is finished (it is very slow of course) it
> creates a Denemo Score which typesets as an index of all the music it
> found.
> 
> This script can now be run from the File->Indexing menu 

I've done more work on this and there is now a command to create an
index of your scores which can be customized to select scores with
specific features determined by executing a Scheme script you provide;
here is some of the documentation:

With Create Conditional Index you can create more complex conditions to
determine which scores should be included in the index, and in addition
you can create a comment for the index entry based on the score's
content. A convenience function DenemoIndexCommentDisplay is provided
to set the comment you wish to include in the index entry for a given
score. Here is an example which computes the durations of all the
movements in the score and prints that as the comment:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define total 0)           
(set! total (ForAllMovementsExecute* (lambda () (let ((tot '()))
                                        (define (off) 
                                                (define time (d-GetMidiOffTime))
                                                        (if time time 0))
                                        (d-RecreateTimebase)
                                        (d-MoveToEnd)
                                        (off)))))
(set! total (round (apply + total)))
(DenemoIndexCommentDisplay (string-append 
    " Duration is: " (number->string (inexact->exact (floor-quotient total 
60))) " m. "
        (number->string (inexact->exact (floor-remainder total 60))) " s."))
#t
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

This code is not nicely formatted in the Denemo Manual as I haven't
managed to come to grips with Lyx which generates it.

Richard



_______________________________________________
Denemo-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/denemo-devel

Reply via email to