I haven't touched my fiddle in quite a while and noticed I was getting intonation problems. One idea to work on that would be to play the note, then the note would play through NWC and midi and I could hear if my note was in tune.
This is the working part of my script, it determines half the duration of the note and creates a rest followed by the note with it:
function calculate(clip) {
var i, saveDur, saveDurB, saveDurE;
var lines = new Array(), result = new Array();
lines = clip.split("\r\n");
for (i=0; i < lines.length; i++) {
result=lines[i].match(/(.*Dur:)([^\|]*)(.*$)/);
if (result == null)
continue; // No duration, didn't follow grace note.
if (lines[i].indexOf("Grace") > 0) { // Found a grace note/chord
continue; }
if (lines[i].indexOf("Rest") > 0) { // Found a rest, ignore
continue; }
// shell.popUp(lines[i]);
saveDur = result[2];
//shell.popUp(saveDur);
saveDur = saveDur.replace("32nd","64th");
saveDur = saveDur.replace("16th","32nd");
saveDur = saveDur.replace("8th","16th");
saveDur = saveDur.replace("4th","8th");
saveDur = saveDur.replace("Half","4th");
saveDur = saveDur.replace("Whole","Half");
shell.popUp(saveDur);
// thisDur = getNoteLength(saveDur);
// shell.popUp(saveDur);
// Code to manipulate durations goes here
saveDurB = saveDur.replace("=End",""); // In case of triplets.
saveDurE = saveDur.replace("=First",""); // In case of triplets.
lines[i] = "|Rest|Dur:" + saveDurB + "\r\n" + result[1] + saveDurE + result[3];
}
return lines;
So far, so good
except it changes a 32nd note to a 6
8th note.
This was my test data:
!NoteWorthyComposerClip(2.751,Single)
|MPC|Controller:vol|Style:Linear Sweep|TimeRes:Sixteenth|SweepRes:1|Pt1:0,127|Pt2:1,123|Pt3:1,120|Pos:-6
|DynamicVariance|Style:Sforzando|Pos:-8
|Note|Dur:8th,DblDotted,Slur|Pos:n-3|Opts:Stem=Up,Beam=First
|Note|Dur:32nd|Pos:-4|Opts:Stem=Up,Beam=End
|Note|Dur:4th|Pos:-4^
|Note|Dur:8th|Pos:-4
|Note|Dur:4th,Tenuto|Pos:-3
|Note|Dur:8th,Tenuto|Pos:-3
|Bar
!NoteWorthyComposerClip-End
Please hold off 24 hours after this is posted to let others take a shot at it.
Nice :D. Word boundaries are always helpful.
(Incidentally, I created practice files of that type for a friend who wants to "sight-transpose" with her Bb trumpet. I used a simple AWK script to generate a random sequence of muted/visible + playing/invisible note pairs. Youtube example (https://youtu.be/eFr_boXwOu4)).
H.M.
I know very well the problem... :(
Nice.
I've used youtube a few times for NWC transcriptions a few times such as Thais accompaniment (https://youtu.be/N0eoXG2jrWU).
I should have taken up guitar and I wouldn't have to fret with intonation.
The bug was that after replacing
32nd with
64th, it is (unfortunately) an exact match when
4th is replaced with
8th.
- It can be solved by making that set of statements use a case construct where a break would follow each replace and only one replace is ever done to the duration.
- The 32nd can be replaced by X which will be turned into 64th after the Whole note is addressed.
- Instead of looking for "4th", look for /^4th/. That search string, as a regular expression must start the string so it would ignore 64th.