denemo-devel
[Top][All Lists]
Advanced

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

Re: [Denemo-devel] Scripting mode changes


From: Jeremiah Benham
Subject: Re: [Denemo-devel] Scripting mode changes
Date: Sat, 23 Aug 2008 18:18:40 -0500

On Sat, 2008-08-23 at 15:30 +0100, Richard Shann wrote:

> (transpose up minor third "c,,") 
> which would yield "ees,," while
> (transpose up augmented second "c,,")
>  would yield "dis,," and so on.
> (You can't switch to pitches and then back as you can see).

This is the system we used in our Aural training course at DePaul once
we reached 20th century music. I also teach this system to my students
and use it more than the American system (and I am from Chicago).
 
> Here transpose is a Scheme function which we write taking four
> arguments, and returning the LilyPond string for a note. The number of
> octave markers can change in transposition of course, so we need them.
> 
> Does this sound ok?

Yeah this sounds easy for the end user. 

Jeremiah


> Richard
> 
> 
> 
> On Sat, 2008-08-23 at 07:33 -0500, Jeremiah Benham wrote:
> > On Sat, 2008-08-23 at 10:50 +0100, Richard Shann wrote:
> > 
> > > > > Is c-sharp and d-flat being represented by the same values on entry to
> > > > > this function?
> > 
> > You are right. I never thought of that. While C# and Db can be derived
> > from a keysig value that doesn't take into account for neopolitan
> > chords, secondary dominants, modal borrowing, or any other from of
> > temporarily shifting tonic center. C# and Db are mostly irrelevant in 12
> > tone music. But yes a value like 61 does not tell you whether it is a c#
> > or a db
> > 
> > > Is this not a crucial question??????????????????
> > 
> > I must have missed it.
> > 
> > > ....... so here is my worry - can Midi represent the information we need
> > > to hold? Can you represent a cis,,4. in Midi? And distinguish it from
> > > des,,4.
> > 
> > No. see above. 
> > 
> > > I can write the glue code in and out of scheme (there is a sample,
> > > passing a string from scheme to denemo in the source under #if 0, it
> > > turns out to be quite gruesome involving an old gh-interface, because
> > > they are in transition between the old gh_ stuff and new scm_ stuff).
> > > 
> > > Assuming the Midi representation can hold the needed information then
> > > if you write something to take the appropriate DenemoWhatever and return
> > > the midi pitch/duration integer/string (whatever will be convenient in
> > > Scheme), I can glue it in (or you can do this bit as well, as I am very
> > > busy with getting the scripts insertable into the menu system as first
> > > class menu items).
> > 
> > I realize the midi representation is dependent on the keysig to get
> > enharmonic or accidental information correct. It seems to be the easiest
> > to manipulate though. I will see if I can find time also. Maybe next
> > week sometime.   
> > 
> > > 
> > > > 
> > > > I was thinking having it be midi note numbers. We could have a separate
> > > > function that wrapper function to accept different types of input like
> > > > similar to the above struct notetype and sturct harmonic if users
> > > > wished. Harmonic is defined as :
> > > > 
> > > > typedef struct harmonic
> > > > {
> > > >         gint pitch;
> > > >         gint enshift;
> > > > }harmonic;
> > > > 
> > > > pitch values equate to this:
> > > > local.pitch = (input / 12) - 5;
> > > > 
> > > > input is the midi note number value. 60 = middle c etc.....
> > > > local.pitch for middle c would be 0. b would be -1. 
> > > > 
> > > > > Given a pitch can we calculate pitch + minor 3rd?
> > > I put this badly - I should have said note: 256 Hz is a pitch, but we
> > > want C-sharp to transpose to something different form D-Flat or
> > > B-double-sharp.
> > 
> > I am confused. You want and enharmonic respelling?
> > 
> > > > 
> > > > If we switch to storing pitches in midi numbers a minor third would be
> > > > extremely simple to perform.
> > > > 
> > > > int interval = 3; //half steps in minor third
> > > > int notepitch = 60;
> > > > notepitch += interval;
> > > > 
> > > This doesn't look like it can do what we want does it?
> > 
> > The above does not work if notes are stored in (int scale_degree, int
> > accidental) format. With this (scale_degree, accidental) format
> > transposition will be a bit more work.  
> > 
> > Jeremiah
> > 
> > > Richard
> > > 
> > > 
> > 
> 





reply via email to

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