'Macros' - a long shot

• Jan 30, 2010 - 09:22

A long shot idea: the possibility of writing 'macros'.

Skip the examples if you have not too much experience in orchestration.

1: In most classical scores by Haydn, Mozart you can read in the Basson line: 'cop ~ ~ ~'; meaning the basson should couple the (sometimes even not specified) 'cello (and Bass) line for a defined number of bars. - The notation of this can be easily solved (in MuseScore and other programs) by copying the given passage of the 'cello line and pasting it to the basson line (possibly stripping it from bowing or pizz instructions, shortening phrase-ends allowing the bassonist to take a breath....)

2: A quite popular effect is the emphasizing of 'choral-like' longish chords on the wind section by adding a pizzicato on the first quaver in the string section. Similar ideas can only be solved 'manually' at the moment (in all notation programs known by me).

Obviously, in order to build a facility for macros, the knowledge and accessibility of the (output) file structure could be useful, with the possibility of direct manipulation. Imagine - again, its an utopistic dream: an automatic build of chords according macro-defined intervals on selected notes .....


Comments

In reply to by [DELETED] 5

hi lasconic,

thanks a lot for the guidance – I have already tested the structure - and it is really simple. But my question related to something different.

If I may use an analogy, in MS Office, there is a facility 'create/record macro', that cater for the (lazy, but) adventurous user to generalise a repetitive task - and, 'by the push of a button' the recorded task is repeated as many time as the button is pushed. (For instance: the cursor moves to the first letter of the next word, and changes it to capital). If you want, and are more adventurous, you can check the macro's 'script' (the VisualBasic code in MS Office) and modify it as you like (e.g. only capitalise every third word, or 4-letter words, or never on Mondays etc.). The plugins are useful for such functions that are foreseen by the wisdom of the program's developers, but they could result in such a plethora of plugins that will defeat the object of having a simple-to-use music notation system.

In a recent topic, one of our friends raised the question (the assumption of which I don't necessarily agree with) whether there should be a beaming option of pairing the quavers of every crotchet in 4/4. Of course, that could be a built-in option as could for instance, the 3+2+2 (and the 2+3+2, and the 2+3+2) in 7/8 etc. But then someone would ask if the boogie-woogie (later, the bossanova cross-bar) beaming could be built in as a default.

However, as our friend's argument was that he could read it easier in such way - that is fully justifiable at the given instance - the 'macro facility' would seem more practical, than increasing the number of defaults.

Don't misunderstand me, I am only thinking aloud, whether the limitation of defaults would help creativity more than the near-infinite number of ready-made plugins.

In reply to by drikanb

I think every musician has it's own needs that there may be a good thing to expand "customatization" with macros. I write for handbells. Some of my beginners need to "see"their own note. If my student will play A5 then I need to filter every A5 from a selected range and add a circle or a parenthesis or put an asterisk on top of that note or ...(whatever).

Then , because I have kids with different levels, I assign them to notes that play a certain frequency of times. So the more advanced students play the most active bells on a piece. So I need a macro that will count the times one note is played on a piece. Something like:

C5 - 30
B4 - 20
A#4 - 3
A4 - 7
....
....
....

But again I think every musician have specific needs that may like to emphasize or customize. A good macro possibility would help or an easier plugin macro language ...

In reply to by [DELETED] 5

This is great, I think I can just print the screen or have an organized printing output from here. Well the documentation says that it can be saved in a CSV. So that is great. Now how did you say I can mark an specific note in a score ? (parenthesis asterisks or any marking character) ?

In reply to by Mephi

Plus ... (open source benefits) for certain unknown reason it is only for certain versions. I think this is a good Java program so I opened the source and just edit the version verification form >=96... to <=96 .... in order to make it work in the distribution 1.0 .... It worked great. now I will try the CSV.

In reply to by Mephi

This plugin only counts notes in one octave, it only does c, c#Bb, etc. I need this to be done by octaves, like "C1, C#1, D1 .... C2, C#2, D2 .... etc.

Now I kinda know what I would like but I do not know programming. Can some one help me code this plug in ?

It is to count the number of times a note appears in a selection.

Here is the idea:
___________________________________________________________________

// variables
NoPi=0
notes = {C, C#/Db, D, D#Eb, E, F, F#Gb, G, G#Ab, A, A#Bb, B)

For p=0 to 127
{NoPi(p))=0 -- loopfor(p=p+1) // array of variables for note pitches
endfor

// do while end of selection

while eos()
for n=0 to 127
// count
if notepitch() = n then NoPi(n)=NoPi+1, go to the next note -- to the while loop
endif
loopfor (n=n+1)
endfor
endwhile

// Display the results

for PiCounted=0 to 127
if NoPi(PiCounted)= 0, loop for (PiCounted = PiCounted+1) // do not display zeros
endif
// display the name of the note
if PiCounted > 12
Display notes(Quotient of PiCounted/12)
else
Display notes(PiCounted)
endif
// display octave
Display (PiCounted/12)
Display (space)
Display NoPi(PiCounted) // Display value of the arrray
loop for (PiCounted = PiCounted+1)
endfor

___________________________________________________________________________________

In reply to by [DELETED] 5

This is great !!! I really appreciate this forum !!!! I am sure Open Source is the solution for all !!! Thank you very much for this "for" code.

I did not understand about the ui comment you said. I really do not know the function and differences between js and ui files. But I did try the CSV file and is great.

Do you think the same function can be inserted in the display section so it will be displayed too ? I see you have in line 176

___________________________________________________
176 // fill number of occurrences of pitches
for(idx=0; idx < 12; idx++)
{ g_form["lName"+idx].setText ("" + g_noteNames[idx] + "");
g_form["lOccurr"+idx].setText ("" + g_numOfPitches[idx]);
}
______________________________________________________________

Can I add

____________________________________________________________________
for(idx=0; idx < 128; idx++)
{ if(g_numOfPitchesGen[idx] != 0)
g_form["lName"+idx].setText ("" + g_noteNames[idx%12] + Math.floor(idx/12 - 1) + "\"," + g_numOfPitchesGen[idx]
}
_________________________________________________________________________

???????

In reply to by Mephi

UI stands for User Interface, so what you call the display. Modifying the display will take more time, a table would be necessary.
By changing the line you suggest, you will have only 12 slots (the 12 pitch steps) to put your notes and only the 12 first notes of the first octave.

Do you still have an unanswered question? Please log in first to post your question.