denemo-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Denemo-devel] Script to add transpose Clarinet staff to existing mu


From: Richard Shann
Subject: Re: [Denemo-devel] Script to add transpose Clarinet staff to existing music
Date: Sun, 22 Sep 2019 12:42:21 +0100

On Sun, 2019-09-22 at 12:09 +0100, Joe Wilkinson wrote:
> 
> Hi Richard,
> 
> I am trying to write a scheme script to automatically add a Clarinet 
> line below and to copy existing music. It needs to be transposed on 
> print up a tone. I'd rather it did not ask me each time for the
> interval 
> with a dialogue box.
> 
> I have played with the script from the Transpose on Print button, but
> it 
> either gives me a dialogue box, if I leave it alone, or nothing
> happens 
> if I change
> 
> (set! Transpose::Interval  (d-GetNoteNamesFromUser 2
> Transpose::Interval 
> (_ "--> Transpose to -->") )))
> 
> to
> 
> (set! Transpose::Interval  ( "c  d" 2 Transpose::Interval (_ "--> 
> Transpose to -->") )))

without testing it looks like that should throw an error in Scheme when
you try to set! the variable Transpose::Interval to the expression
following, which is

( "c  d" 2 Transpose::Interval (_ "-->> Transpose to -->") )

That expression can't evaluate to anything because the first thing in
this list, the string "c d", is not a procedure - a list is evaluated
by executing the first element with the following elements as
parameters.
It looks like you would mean to write

(set! Transpose::Interval "c d")

where the first element set! is a procedure that sets the second
element (a variable) to the value of the third element (a string).

> 
> I assume there is more to it than a simple kludge. Apart from
> anything 
> else when the interval is changed the system remembers. Is 
> Transpose::Interval some sort of Global variable?

Not sure, but it looks like it. Try evaluating


(d-InfoDialog (format #f "~s" Transpose::Interval))

in the Scheme window to find out... 

But I don't think changing that value will help - what you need to do
is create an example of this staff and then clone the staff
directive(**) as a button to be clicked to apply that transposition to
the current staff. Then you can copy(*) the Scheme script that this
button executes and use it in your script to set the transposition of
the current staff.

Richard
(*) right click the button and choose Get Script into Scheme Window
(**) you will find the staff directives under the staff properties
editor - click on the staff number right at the start of the staff.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]