O.K., to explain a little further, the idea is that someone would use 
these script shortcuts *AS* they are writing the Cantus in the lower voice (To 
start; Later, will implement a 'writing Cantus on top, sending auto intervals 
to lower staff' version). So the approach is an "As you are writing approach", 
as anything else is too sophisticated for my needs, since one of the main 
purposes for this is simply as a learning tool, until being able to write the 
appropriate intervals will become second nature and the crutch will no longer 
be so necessary. So, now it is working good enough (for my current needs), as 
long as I am simply writing one note at a time *on the Cantus line*, then the 
shortcut to make interval appear on staff above, then a new note on the Cantus 
line, etc. 

     Worrying about changing note duration on the staff above the Cantus, I 
will be able to use my usual keypress-shortcuts for that easily. The script 
below does work in the manner I described and I've set it up for all other 
intervals but have just provided an example below (others are the same, just 
changed the d-AddLowestUp/Down part and number of cursor up/downs for each 
interval). The only one that gave a problem was the diminished 5th, which 
needed to be flattened when going down, because the add-diminished-5th down is 
not in Denemo commands. I will look into adding the part that Richard suggested 
about dealing with rests later, as that will come in very useful.

     I'll make the menu items, then the palette buttons for shortcuts. Not sure 
what the best way to make that available when it is ready? Someplace I could 
upload?



   - new, working example:

(d-AddLowestUpMinor3)

(d-CursorDown)

(d-CursorDown)

(d-CursorDown)

(d-RemoveNoteFromChord)

(d-SetMark)

(d-Cut)

(d-MoveToStaffUp)

(d-SelectionToEmptyMeasure)

(d-MoveCursorLeft)

(d-Paste)

(d-MoveCursorLeft)

(d-SetMark)

(d-Copy)

(d-MoveToStaffDown)

(d-SelectionToEmptyMeasure)

(d-MoveCursorLeft)

(d-Paste)

(d-MoveCursorLeft)

(d-AddHighestDownMinor3)

(d-CursorToLowestNote)

(d-CursorUp)

(d-CursorUp)

(d-CursorUp)

(d-RemoveNoteFromChord)







---- On Tue, 29 Jan 2019 03:37:12 -0800 Richard Shann <rich...@rshann.plus.com> 
wrote ----




On Mon, 2019-01-28 at 15:13 -0800, rain wrote: 

> Hello Richard (and or whomever gets this email, I'm not sure who the 

> recipients 

your email will be useful to more than just the recipients (that is 

those subscribed to the denemo-devel mailing list) - it will be seen by 

people trawling for information about how to do things in Denemo. 

> are), 

> 

>     Something that you may, or may not be interested in adding, 

> eventually: If someone was writing with counterpoint in mind, adding 

> intervals easily (good for beginners like me who are learning music 

> theory alongside using Denemo) to the staff above (or below) the 

> Cantus Firmus could be achieved with something like (with cursor on a 

> note on lower staff and staff above blank, in this case): 

I'm not quite sure I understand what you are doing - it can help to add 

a few lines of script first to set up the initial condition that your 

script is to work with, so for example: 

(d-New) 

(d-AddAfter) 

(d-C) 

(d-MoveCursorLeft) 

;(exit) 

(d-AddLowestUpMajor3) 

(d-CursorDown) 

(d-CursorDown) 

(d-CursorDown) 

(d-RemoveNoteFromChord) 

;(exit) 

(d-SetMark) 

(d-Cut) 

(d-MoveToStaffUp) 

(d-MoveCursorRight) 

(d-Paste) 

(d-MoveCursorLeft) 

(d-SetMark) 

(d-Copy) 

(d-MoveToStaffDown) 

(d-MoveCursorRight) 

(d-Paste) 

(d-MoveCursorLeft) 

(d-AddHighestDownMajor3) 

(d-CursorUp) 

(d-CursorUp) 

(d-CursorUp) 

(d-RemoveNoteFromChord) 



This starts a new score adds a staff below puts the note C into it, 

moves the cursor to that note and then executes your sequence of 

operations. The result is that the staff above gets a single-note chord 

a major third above the C and so does the lower staff. It will do 

something more confusing if you are not on the first note of a measure 

(perhaps not applicable if you are adding to a Cantus Firmus with one 

note per measure). And as you say it could get upset by the presence of 

non-music in the bar (for this problem there is this: 



(while (and (not (Music?)) (d-MoveCursorRight))) 



which will move the cursor rightwards while it is not on a note or rest 

("Music").) 



Having said that, I'm not sure what you are trying to do - do you 

intend to leave the Cantus Firmus unchanged and put a note or sequence 

of notes in the staff above? There's something remotely like that for 

entry from MIDI keyboard at Input->MIDI->Chords For Bar and I did 

something even more elaborate myself https://vimeo.com/62426412 which 

shows a script letting you add chords to a bass line (the script is in 

Educational->MIDI->Handel's... I think). 



It will be great if you can add to the facilities for aiding composers 

using Denemo - most work has been done for transcribing. And, indeed, 

most composers still use paper and pencil and only turn to a computer 

to transcribe their work. 



HTH 



Richard 



> 

> (d-AddLowestUpMajor3) 

> (d-CursorDown) 

> (d-CursorDown) 

> (d-CursorDown) 

> (d-RemoveNoteFromChord) 

> (d-SetMark) 

> (d-Cut) 

> (d-MoveToStaffUp) 

> (d-MoveCursorRight) 

> (d-Paste) 

> (d-MoveCursorLeft) 

> (d-SetMark) 

> (d-Copy) 

> (d-MoveToStaffDown) 

> (d-MoveCursorRight) 

> (d-Paste) 

> (d-MoveCursorLeft) 

> (d-AddHighestDownMajor3) 

> (d-CursorUp) 

> (d-CursorUp) 

> (d-CursorUp) 

> (d-RemoveNoteFromChord) 

> 

> Thanks to Denemo's ability to set the cursor to same not position on 

> the staff when moving cursor up and down staffs. 

> 

>   Rain 

> 

> 

> _______________________________________________ 

> Denemo-devel mailing list 

> mailto:Denemo-devel@gnu.org 

> https://lists.gnu.org/mailman/listinfo/denemo-devel
_______________________________________________
Denemo-devel mailing list
Denemo-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/denemo-devel

Reply via email to