Skip to main content

Messages

This section allows you to view all Messages made by this member. Note that you can only see Messages made in areas you currently have access to.

Messages - Warren Porter

101
General Discussion / Re: Hairpins
The current version of NWC has the hairpins built in--look for them on your toolbars.  Select the notes to be under a hairpin, then click on the appropriate one.  The hairpin will be at the same location on the staff as the last dynamic marking.

HTH
102
General Discussion / Re: An idea
In Tips & Tricks there are quite a few suggestions that don't require any script or plug-in.  Some other topics might be "When to used hidden/played and visible/muted pairs of staves" or "Layered staves: when to use and how to solve problems they cause" to suggest a few.  Of course Tips & Tricks is chronological and some posts are obsolete, wrong, or posted in that section by mistake--however, going through that section as well as its sub-boards is suggested for anyone trying to compile a help page or blog.
103
General Discussion / Re: An idea
Maybe a compilation of the various scripts, plug-ins, and functions that have been developed over the years could be put together.  Ask the writers of these various tools to describe the problem they were trying to solve along with a description on how to install/use their tool(s)--and this documentation would be sent where?  Any volunteers?
105
General Discussion / Re: Italics again
I would start by selecting the notes you want to italicize.  Do Cntl/E and under Notes (click it) there will be a "Lyric Syllable" dropdown near the lower right and select "Never".  Insert your italics as text expressions where the lyrics would normally be.  You might have to do this several times, inserting only a word or two--you will have to experiment to see what works for you in that song.
Good luck!

P.S. You would have to take your italic words out of the staff lyric window.
106
General Discussion / Re: Multiple Rests (Please Help! I'm such a beginner)
There is a tool to create multi measure rests or back them out.  First visit Nwc Page and note the instructions for installing tools on the upper right side.  Then click on Multi Measure Rests.   On the file option of your browser, choose Save As with the name mmr.js and remember where you parked it.  In installing, the line will start with wscript, the location of the script (after choosing browse) and the prompts, copy and paste from near the top of the script.

Mike's method also works, this just automates the process and counts the measures for you.
108
General Discussion / Re: Switching Clef?
Select the entire staff and, holding Cntl/Shift down, press the up arrow or down arrow however many times as needed.  There are tools that can do that for you, handling different octave shifts as well as clef changes like octave down treble to unshifted bass (up five times).
109
User Tools / Turn grace notes into real ones.
This script turns grace notes into real ones and steals time from either the prior note or the following one.

There is no undo with this so either save before using or on a copy from another staff.
Code: [Select · Download]
/* Notes to Rests by Warren Porter "graceFix.js"
   After downloading this file, when setting it up in NWC User Tools create this command line:

   wscript "'Browse can insert the path for you' \graceFix.js" <PROMPT:Which?:=|Prev|Next>

   This converts grace notes to real ones while reducing the duration of the previous object.  First, copy an entire staff (which
   you will make visible and muted) to the clipboard, create a new staff (will eventually be hidden and played),
   then copy the clipboard to the new staff.  Run this command on that new staff.  Notes, chords, or rests which are followed
   by grace notes will be shortened by the (total) duration of the grace notes and the grace attribute will be removed.
   The original (and still on the displayed/muted staff) grace notes will now sound BEFORE the beat instead of ON the beat.
  
   Change:  You can take time from the note/chord AFTER the grace note(s) by chosing "Next"

 */
 //  Substitutions: Wscript.Arguments <-> parms
 //                 Item(n)            <-> [n]


var rc=0, errMsg="", Wscript_Arguments = new Array();
var NoteLengths = [ "Whole", "Half", "4th", "8th", "16th", "32nd", "64th", "128th", "256th", "512th", "1024th" ] ;
var SearchDur;


function getNoteLength(notelet) {  // Returns duration of note , whole = 768
//   var shell = new ActiveXObject("WScript.Shell");
parts = notelet.split(","), numParts=1;
var  noteLength= -1, searchstr="";
searchstr = parts[0].substr(0,3);
//shell.Popup(parts[0])
switch (searchstr) {
case "Who" : noteLength = 768; break;
case "Hal" : noteLength = 384; break;
case "4th" : noteLength = 192; break;
case "8th" : noteLength =  96; break;
case "16t" : noteLength =  48; break;
case "32n" : noteLength =  24; break;
case "64t" : noteLength =  12; break;
default:     noteLength =  -1;
}
  if (noteLength == -1)
    return -1;

  for (var i = 1; i < parts.length; i++) {
    if (parts[i].substr(0,9) == "DblDotted") {
  numParts=2;
  noteLength = noteLength * 7 / 4; }
else
      if (parts[i].substr(0,6) == "Dotted") {
  numParts=2;
    noteLength = noteLength * 3 / 2; }
  else
    if (parts[i].substr(0,7) == "Triplet") {
  numParts=2;
      noteLength = noteLength * 2 / 3; } }
  SearchDur = (numParts == 1)? parts[0]: parts[0] + "," + parts[1]
  return noteLength;
}

function doNext(clip) {
  var i, durTable = new Array(), newDur, binString="", saveDur, subDur=0, durSub = new Array(), saveOrig, newStrings = new Array();
  var lines = new Array(), result = new Array(), lastDur = 0, locDur=0, locGraceFst, locGraceLst, durGrace, sumGrace=0
  var saveBar="", locBar= -1, wholeRest=768;
  lines = clip.split("\n");

  for (i=0; i < lines.length; i++) {
      result=lines[i].match(/Dur:([^\|]*)/);
  if (sumGrace && (result == null)) {
  errMsg="Unattached Grace note";
  rc=1;
  return lines; }
  if (result == null)
  continue;  // No duration, didn't follow grace note.
  if (lines[i].indexOf("Grace") > 0) {  // Found a grace note/chord
durGrace = getNoteLength(result[1]);  // Find duration
sumGrace+= durGrace;   // Sum of grace notes so far
    lines[i]=lines[i].replace(",Grace","");  // Remove grace attribute
        continue;  }
  if (!sumGrace) // If has duration, is not grace, and doesn't follow grace
  continue;  // Ignore
  /*
  At this point something with a duration follows (a) Grace Note/Chord(s) and its duration must be reduced
  by sumGrace.
   */
    lastDur = getNoteLength(result[1]);
saveDur = SearchDur;
  newDur = (lastDur - sumGrace)
  if ((newDur % 3) != 0) {
    lines[i]+="\n|Text|Text:\"Can't do triplets.\"|Font:StaffItalic|Pos:10|Color:1"
            break; }
          newDur /= 3;
  if (newDur < 4) {
    errMsg="Note to convert isn't long enough, aborting.";
rc=1;
return lines;}
  binString=""
  for (var ii=0; ii < 9; ii++) {   //Convert to binary
    binString = (newDur % 2) + binString;
newDur = Math.floor(newDur/2); }
  durTable.length = 0, subDur=0;
  while (binString != "000000000") {
    for (ii=0; ii < 3; ii++)
  durSub[ii] = Number.POSITIVE_INFINITY;
    result = binString.match("111")
if (result != null)
  durSub[0] = result.index;
    result = binString.match("110")
if (result != null)
  durSub[1] = result.index;
    result = binString.match("10")
if (result != null)
  durSub[2] = result.index;
if (durSub[0] <= durSub[1] && durSub[0] <= durSub[2]) {
  durTable[subDur++] = NoteLengths[durSub[0]] + ",DblDotted";
  binString = binString.replace("111","000");
  continue;}
if (durSub[1] < durSub[0] && durSub[1] <= durSub[2]) {
  durTable[subDur++] = NoteLengths[durSub[1]] + ",Dotted";
  binString = binString.replace("11","00");
  continue;}
if (durSub[2] < durSub[0] && durSub[2] < durSub[1]) {
  durTable[subDur++] = NoteLengths[durSub[2]];
  binString = binString.replace("1","0");
  continue;}  }
// Code to manipulate durations goes here
saveOrig = lines[i];  // Save so can modify it several times if necess;
newStrings.length = 0;
for (ii = 0; ii < subDur;ii++) {
  newStrings[ii] = saveOrig.replace(saveDur,durTable[ii]);
      if (((subDur - 1) > ii) && (saveOrig.slice(0,6) != "|Rest|")) {
    newStrings[ii] = newStrings[ii].replace(/(\d),/g, "$1^,"); ;
    newStrings[ii] = newStrings[ii].replace(/$/, "^");
    newStrings[ii] = newStrings[ii].replace("^^", "^"); } }
lines[i] = newStrings.join("\r\n");
    sumGrace=0; } // So will not try to apply reductions again.

  return lines;
}

function doPrev(clip) {
  var i, durTable = new Array(), newDur, binString="", saveDur, subDur=0, durSub = new Array(), saveOrig, newStrings = new Array();
  var lines = new Array(), result = new Array(), lastDur = 0, locDur=0, locGraceFst, locGraceLst, durGrace, sumGrace=0
  var saveBar="", locBar= -1, wholeRest=768;
 // lines = clip.split("\r\n");

  lines = clip.split("\n");
  for (i=0; i < lines.length; i++) {
      if (lines[i].slice(0,4) == "|Bar")  {
saveBar = lines[i];
locBar=i;
continue;
  }
  if (lines[i].slice(0,8) == "|TimeSig") {
    result = lines[i].match(/re:(\d+)\/(\d+)/);
if (result != null)
  wholeRest = 768 * result[1] / result[2];
continue; }
      result=lines[i].match(/Dur:([^\|]*)/);
  if (result == null)
    continue;
      if (lines[i].indexOf("Grace") == -1) { // Found something with duration not a grace note
        lastDur = getNoteLength(result[1]);
saveDur = SearchDur;
locBar= -1;  // This measure didn't start with (a) grace(s) note/chord.
locDur = i;
        if (lines[i].slice(0,5) == "|Rest" && lastDur == 768)
  lastDur = wholeRest; }  // In case we need it.
  else  { // Found a grace note to convert
  locGraceFst=i;
  sumGrace=0;
  for (locGraceLst=i; locGraceLst < lines.length; locGraceLst++) {
    result=lines[locGraceLst].match(/Dur:([^\|]*)/);
var buggy = lines[locGraceLst].indexOf("Grace");
// if ((result == null) || (lines[locGraceLst].indexOf("Grace") > -1)) {// Doesn't have duration or not grace
//   break; }
    if (result == null)
  break;
if (buggy == -1)
  break;
    durGrace = getNoteLength(result[1]);
sumGrace+= durGrace;}
  locGraceLst--;
  if (locDur > 0)  {  //There was something with duration earlier so will have to reduce it.
  newDur = (lastDur - sumGrace)
  if ((newDur % 3) != 0) {
    lines[locGraceLst]+="\n|Text|Text:\"Can't do triplets.\"|Font:StaffItalic|Pos:10|Color:1"
            break; }
          newDur /= 3;
  if (newDur < 4) {
    errMsg="Note to convert isn't long enough, aborting.";
rc=1;
return lines;}
  binString=""
  for (var ii=0; ii < 9; ii++) {   //Convert to binary
    binString = (newDur % 2) + binString;
newDur = Math.floor(newDur/2); }
  durTable.length = 0, subDur=0;
  while (binString != "000000000") {
    for (ii=0; ii < 3; ii++)
  durSub[ii] = Number.POSITIVE_INFINITY;
    result = binString.match("111")
if (result != null)
  durSub[0] = result.index;
    result = binString.match("110")
if (result != null)
  durSub[1] = result.index;
    result = binString.match("10")
if (result != null)
  durSub[2] = result.index;
if (durSub[0] <= durSub[1] && durSub[0] <= durSub[2]) {
  durTable[subDur++] = NoteLengths[durSub[0]] + ",DblDotted";
  binString = binString.replace("111","000");
  continue;}
if (durSub[1] < durSub[0] && durSub[1] <= durSub[2]) {
  durTable[subDur++] = NoteLengths[durSub[1]] + ",Dotted";
  binString = binString.replace("11","00");
  continue;}
if (durSub[2] < durSub[0] && durSub[2] < durSub[1]) {
  durTable[subDur++] = NoteLengths[durSub[2]];
  binString = binString.replace("1","0");
  continue;}  }
// Code to manipulate durations goes here
saveOrig = lines[locDur];  // Save so can modify it several times if necess;
newStrings.length = 0;
for (ii = 0; ii < subDur;ii++) {
  newStrings[ii] = saveOrig.replace(saveDur,durTable[ii]);
      if (((subDur - 1) > ii) && (saveOrig.slice(0,6) != "|Rest|")) {
    newStrings[ii] = newStrings[ii].replace(/(\d),/g, "$1^,"); ;
    newStrings[ii] = newStrings[ii].replace(/$/, "^");
    newStrings[ii] = newStrings[ii].replace("^^", "^"); } }
lines[locDur] = newStrings.join("\r\n"); }
for (ii = locGraceFst; ii <= locGraceLst; ii++)
  lines[ii]=lines[ii].replace(",Grace","");
if (locBar > -1) {
      lines[locGraceLst]+= "\n" + saveBar; // Add barline after the grace notes
      lines[locBar] = "#"; }  // Turn original bar into a comment.
if (locDur == 0)
  lines[locGraceLst]+="\n|Bar\n|Text|Text:\"New bar added\"|Font:StaffItalic|Pos:8|Color:1";
i=locGraceLst; // So won't try to redo the same string of grace notes.
 }
  }  //End main processing loop
  return lines;
}

var myLines;
  if (WScript.Arguments.length != 1) {
    errMsg="NO Prompt read.";
rc=1; }
  else {
    if (WScript.Arguments.Item(0).slice(0,4) == "Prev")
  myLines=doPrev(WScript.StdIn.ReadAll()).join("\r\n");
else
  myLines=doNext(WScript.StdIn.ReadAll()).join("\r\n"); }

if (rc == 0)
  WScript.StdOut.Write(myLines);
else
  WScript.StdErr.Write(errMsg);
WScript.quit(rc);

Edit: Change documentation in first few lines of the script.
110
General Discussion / Re: Looking for portamente
In a violin part to "Cloudburst" from Grand Canyon Suite, there was a low whole note, an empty measure, high whole note, empty measure, and it repeated several times with a zig-zag line connecting them.
111
General Discussion / Re: Tremolo and Note Value.
Can it help the following (from same piece as previous post)?
Code: (nwc) [Select · Download]
!NoteWorthyComposerClip(2.751,Single)
|Clef|Type:Treble
|Key|Signature:Bb,Eb,Ab|Tonic:C
|TimeSig|Signature:6/8
|Note|Dur:16th,Accent|Pos:-9|Opts:Stem=Up,Beam=First
|Note|Dur:16th|Pos:-9|Opts:Stem=Up,Beam
|Chord|Dur:16th|Pos:-9,-4|Opts:Stem=Up,Beam
|Chord|Dur:16th|Pos:-9,-4|Opts:Stem=Up,Beam
|Chord|Dur:16th|Pos:-4,1|Opts:Stem=Up,Beam
|Chord|Dur:16th|Pos:-4,1|Opts:Stem=Up,Beam=End
|Chord|Dur:16th|Pos:-4,1|Opts:Stem=Up,Beam=First
|Chord|Dur:16th|Pos:-4,1|Opts:Stem=Up,Beam
|Chord|Dur:16th|Pos:-9,-4|Opts:Stem=Up,Beam
|Chord|Dur:16th|Pos:-9,-4|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-9|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-9|Opts:Stem=Up,Beam=End
|Bar
|Note|Dur:16th,Accent|Pos:-9|Opts:Stem=Up,Beam=First
|Note|Dur:16th|Pos:-9|Opts:Stem=Up,Beam
|Chord|Dur:16th|Pos:-9,-4|Opts:Stem=Up,Beam
|Chord|Dur:16th|Pos:-9,-4|Opts:Stem=Up,Beam
|Chord|Dur:16th|Pos:-4,1|Opts:Stem=Up,Beam
|Chord|Dur:16th|Pos:-4,1|Opts:Stem=Up,Beam=End
|Chord|Dur:16th|Pos:-4,1|Opts:Stem=Up,Beam=First
|Chord|Dur:16th|Pos:-4,1|Opts:Stem=Up,Beam
|Chord|Dur:16th|Pos:-9,-4|Opts:Stem=Up,Beam
|Chord|Dur:16th|Pos:-9,-4|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-9|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-9|Opts:Stem=Up,Beam=End
!NoteWorthyComposerClip-End
113
General Discussion / Re: Tremolo and Note Value.
I was revisiting a piece with some tremelo and thought I would experiment.  It looks good but is a lot faster than nearby measures where it is still written out.  Am I missing something?
Code: (nwc) [Select · Download]
!NoteWorthyComposerClip(2.751,Single)
|Clef|Type:Treble
|Key|Signature:Bb,Eb,Ab|Tonic:E
|Note|Dur:16th|Pos:#-3|Opts:Stem=Up,Beam=First
|Note|Dur:16th|Pos:-1|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-3|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-1|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-3|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-1|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-3|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-1|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-3|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-1|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-3|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-1|Opts:Stem=Up,Beam=End
|Bar
|Note|Dur:16th|Pos:#-3|Opts:Stem=Up,Beam=First
|Note|Dur:16th|Pos:-1|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-3|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-1|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-3|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-1|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-3|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-1|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-3|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-1|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-3|Opts:Stem=Up,Beam
|Note|Dur:16th|Pos:-1|Opts:Stem=Up,Beam=End
|Bar
|RestChord|Dur:4th,Dotted|Opts:Stem=Up,Muted,HideRest|Dur2:Half,Dotted,Accent|Pos2:#4
|User|Tremolo.ms|Pos:0|Beams:2|TripletPlayback:Y
|RestChord|Dur:4th,Dotted|Opts:Stem=Up,Muted,HideRest|Dur2:Half,Dotted|Pos2:6
|Bar
|Note|Dur:16th|Pos:#4|Opts:Stem=Down,Beam=First
|Note|Dur:16th|Pos:6|Opts:Stem=Down,Beam
|Note|Dur:16th|Pos:4|Opts:Stem=Down,Beam
|Note|Dur:16th|Pos:6|Opts:Stem=Down,Beam
|Note|Dur:16th|Pos:4|Opts:Stem=Down,Beam
|Note|Dur:16th|Pos:6|Opts:Stem=Down,Beam
|Note|Dur:16th|Pos:4|Opts:Stem=Down,Beam
|Note|Dur:16th|Pos:6|Opts:Stem=Down,Beam
|Note|Dur:16th|Pos:4|Opts:Stem=Down,Beam
|Note|Dur:16th|Pos:6|Opts:Stem=Down,Beam
|Note|Dur:16th|Pos:4|Opts:Stem=Down,Beam
|Note|Dur:16th|Pos:6|Opts:Stem=Down,Beam=End
|Bar
|Note|Dur:16th|Pos:#4|Opts:Stem=Down,Beam=First
|Note|Dur:16th|Pos:6|Opts:Stem=Down,Beam
|Note|Dur:16th|Pos:4|Opts:Stem=Down,Beam
|Note|Dur:16th|Pos:6|Opts:Stem=Down,Beam
|Note|Dur:16th|Pos:4|Opts:Stem=Down,Beam
|Note|Dur:16th|Pos:6|Opts:Stem=Down,Beam
|Note|Dur:16th|Pos:4|Opts:Stem=Down,Beam
|Note|Dur:16th|Pos:6|Opts:Stem=Down,Beam
|Note|Dur:16th|Pos:4|Opts:Stem=Down,Beam
|Note|Dur:16th|Pos:6|Opts:Stem=Down,Beam
|Note|Dur:16th|Pos:4|Opts:Stem=Down,Beam
|Note|Dur:16th|Pos:6|Opts:Stem=Down,Beam=End
|Bar
!NoteWorthyComposerClip-End
115
General Discussion / Stuck pedal makes other part stacatto.
I was revisiting a Grieg sonata I worked on quite a few years ago to put pedal markings in it.  The last pedal mark I had was down and until I fixed it the violin part had nothing but short notes, regardless of note lengths and slurs.  A score review showed each staff with a different midi channel (not 10).  Any idea why?

TIA
117
General Discussion / Re: Convert Violin score to Viola score?
In addition to moving the notes, a clef change is involved.  Move the notes up six positions then transpose down 7 half-steps,  This will put notes in their proper places as well as subtract a sharp or add a flat.

Edit: change 'key' to 'clef' in first sentence.
120
Tips & Tricks / Swapping between 4 and 2 staves for a chorus.
Printed scores for (especially) major choral works may alternate between one staff per part (i.e., a fugue) or having sopranos and altos sharing a staff with tenors and basses doing likewise for a chorale.  This may seem impossible to do in NoteWorthy since a staff is either layered or unlayered for the whole file.

The workaround is to give sopranos and tenors an extra staff each--the top one stands alone and the bottom one is layered with the next part.  By using boundary collapse commands and stop boundary collapse commands on either side of a bar line, the two soprano and tenor parts will never be on the printed parts at the same time.  They should also share the same midi channel and use the same midi patch (like Choral Aahs).

When two parts share (by layering) a staff, it will be necessary to force stem direction and perhaps slur and tie direction as well.  Also, extra space may be needed for notes and/or accidentals when the notes are too close to each other otherwise.  See the attachment for an example.
121
User Tools / Re: Is it possible to scale down some of the staffs in a score?
Are there sections where the choir could use just two staves?  You would need to create an extra Alto and Tenor staff (one to be layered, the other not), one staff would be collapsed and the other not.  On a system break where you need to change from one to the other, matching staff collapse and end staff collapse commands would make the switch for you.
125
General Discussion / Recording video and sound from NWC playback
Is there a way to record NWC playback without having to use another camera or cellphone.  I have been trying to use some free products from VSDC, but can't get off the ground.  Also, I don't have the option of recording audio.

Am open to ideas.  TIA
126
General Discussion / Putting notes in the other staff in piano music
I am trying to transcribe some fast arpeggios and sometimes a note or two at the beginning or ending of a beamed set will be on the other staff, perhaps with an N shaped beam (notes out of both sides).

Does anyone have a workaround for this?  TIA

Finishing Grieg III Sonata for Violin & Piano
127
User Tools / Re: Multi Measure Rest tool
Bug fix:  Unless a whole rest is the last thing selected or is at the end of a staff when no selection is done, a cancel collapse statement will be created.  The script in the initial post has been replaced.
128
General Discussion / Re: Clipboard data
Thank you.  I just didn't know how to use the mmr tool.  The last thing selected should never be a whole rest unless this a part that is tacet to the end of a piece.  The mmr tool stops counting and creates an MMR if it finds a bar with any style attribute.  To break the MMR's on a rehearsal symbol (on the tempo staff), I just needed to change that bar to a double bar, run the MMR, and change it back.

First time I've looked at that tool in five years.  Rust accumulates.
130
General Discussion / Re: Buglet in printing?
Run the conductor staff through my Multi Measure Rest tool with the option "Layer Hide".  Tempo, tempo variences, and rehearsal symbols will be seen on all parts.
131
Tips & Tricks / Re: User function to play grace notes before the beat.
Thank you flurmy for the backup copy.

Had a problem when the duration was the last thing on the nwctxt line like a vanilla half note.  Now I'm only looking at the first 3 chars of the duration.

Enjoy.  Attachment is back on the first post.
132
Tips & Tricks / Re: User function to play grace notes before the beat.
If anyone has a copy of this tool that works, please send it to me in a PM.  I tried to add a new feature to it (grace notes at the front of a new measure moved to the previous one / assign a duration to whole rest depending on the time signature) but have added a bear of a bug to tackle.  Can't get any saves or backups to work either.

TIA
134
Object Plugins / Re: TupletMarks.fso (version 0.1)
Thank you for developing this feature! Do you think it would be possible to develop this feature such that it actually affects the notes' duration and playback? Alternatively, is there a way to hide the triplet marks in a score? Usually when I really want, say a 17 tuplet, I end up writing a bunch of 32nd notes, some of which are tripleted and some of which aren't; when I really want a quintuplet, I write a duplet and a triplet. If there were a way to hide the triplet notation and then just group the whole series of  notes with a tuplet object, it would make the scores look much cleaner (but wouldn't necessarily help with playback realism).  Thanks!
Have you checked this User Tip on various Tuples?  I haven't experimented with adding TupletMarks to this yet.
141
General Discussion / Can't see verse three notechase with da capo & coda
I am transcribing a song with three verses--there is a simple repeat w/ 1st and 2nd endings, an instrumental interlude, the rrd verse and a coda.  Lyrics for the first two verses turn red when that note is reached, but nothing happens to 3rd verse lyrics.  Any ideas or useful previous threads on this?  TIA
Code: (nwc) [Select · Download]
!NoteWorthyComposer(2.751)
|Editor|ActiveStaff:1|CaretIndex:5|CaretPos:0
|SongInfo|Title:""|Author:"<Name>"|Lyricist:""|Copyright1:"Copyright © 2008 <Name>"|Copyright2:"All Rights Reserved"
|PgSetup|StaffSize:16|Zoom:4|TitlePage:Y|JustifyVertically:Y|PrintSystemSepMark:N|ExtendLastSystem:N|DurationPadding:Y|PageNumbers:0|StaffLabels:None|BarNumbers:None|StartingBar:1
|Font|Style:StaffItalic|Typeface:"Times New Roman"|Size:10|Bold:Y|Italic:Y|CharSet:0
|Font|Style:StaffBold|Typeface:"Times New Roman"|Size:8|Bold:Y|Italic:N|CharSet:0
|Font|Style:StaffLyric|Typeface:"Times New Roman"|Size:7|Bold:N|Italic:N|CharSet:0
|Font|Style:PageTitleText|Typeface:"Times New Roman"|Size:24|Bold:Y|Italic:N|CharSet:0
|Font|Style:PageText|Typeface:"Times New Roman"|Size:12|Bold:N|Italic:N|CharSet:0
|Font|Style:PageSmallText|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|Font|Style:User1|Typeface:"Boxmark2"|Size:16|Bold:N|Italic:N|CharSet:0
|Font|Style:User2|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|Font|Style:User3|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|Font|Style:User4|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|Font|Style:User5|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|Font|Style:User6|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|PgMargins|Left:1.27|Top:1.27|Right:1.27|Bottom:1.27|Mirror:N
|AddStaff|Name:"Staff"|Group:"Standard"
|StaffProperties|EndingBar:Section Close|Visible:Y|BoundaryTop:12|BoundaryBottom:12|Lines:5|Color:Default
|StaffProperties|Muted:N|Volume:127|StereoPan:64|Device:0|Channel:1
|StaffInstrument|Name:"Violin"|Patch:40|Trans:0|DynVel:10,30,45,60,75,92,108,127
|PerformanceStyle|Style:Legato|Pos:0|Visibility:Never
|Clef|Type:Treble
|TimeSig|Signature:4/4
|Note|Dur:4th|Pos:-2
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:1
|Bar
|Note|Dur:4th|Pos:-2
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:1
|Bar|Style:MasterRepeatOpen
|Flow|Style:Segno|Pos:11|Wide:Y
|Note|Dur:4th|Pos:-2
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:1
|Bar
|Note|Dur:4th|Pos:-2
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:1
|Flow|Style:ToCoda|Pos:5|Wide:Y
|Bar
|Ending|Endings:1
|Note|Dur:4th|Pos:-2
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:1
|Bar|Style:MasterRepeatClose
|Ending|Endings:2
|Note|Dur:4th|Pos:-2
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Note|Dur:4th|Pos:1
|Bar
|Note|Dur:4th|Pos:5
|Note|Dur:4th|Pos:6
|Note|Dur:4th|Pos:7
|Note|Dur:4th|Pos:8
|Bar
|Note|Dur:8th|Pos:-2|Opts:Stem=Up,Beam=First
|Note|Dur:8th|Pos:-1|Opts:Stem=Up,Beam=End
|Note|Dur:8th|Pos:0|Opts:Stem=Down,Beam=First
|Note|Dur:8th|Pos:1|Opts:Stem=Down,Beam=End
|Note|Dur:8th|Pos:-2|Opts:Stem=Up,Beam=First
|Note|Dur:8th|Pos:-1|Opts:Stem=Up,Beam=End
|Note|Dur:8th|Pos:0|Opts:Stem=Down,Beam=First
|Note|Dur:8th|Pos:1|Opts:Stem=Down,Beam=End
|Flow|Style:DSalCoda|Pos:8|Justify:Right|Placement:BestFitForward
|Bar|Style:Double
|Flow|Style:Coda|Pos:8|Wide:Y
|Chord|Dur:Whole|Pos:-1,1
|AddStaff|Name:"Staff-1"|Group:"Standard"
|StaffProperties|EndingBar:Section Close|Visible:Y|BoundaryTop:10|BoundaryBottom:22|Lines:5|Color:Default
|StaffProperties|Muted:N|Volume:127|StereoPan:64|Device:0|Channel:2
|StaffInstrument|Trans:0|DynVel:10,30,45,60,75,92,108,127
|Lyrics|Placement:Bottom|Align:Standard Rules|Offset:0
|Lyric1|Text:"verse one verse one verse one verse one verse one verse one verse one verse one verse one verse one\n"
|Lyric2|Text:"verse two verse two verse two verse two verse two verse two verse twoverse two verse two verse two verse two verse two verse two verse two\n"
|Lyric3|Text:"verse three verse three verse three verse three verse three verse three verse three verse three verse three verse three verse three verse three\n"
|Clef|Type:Treble
|TimeSig|Signature:4/4
|Rest|Dur:Whole
|Bar
|Rest|Dur:Half
|Rest|Dur:4th
|Rest|Dur:8th
|Note|Dur:8th|Pos:-2
|Bar|Style:MasterRepeatOpen
|Flow|Style:Segno|Pos:11|Wide:Y
|Note|Dur:8th|Pos:-1|Opts:Stem=Up,Beam=First
|Note|Dur:8th|Pos:0|Opts:Stem=Up,Beam=End
|Note|Dur:8th|Pos:1|Opts:Stem=Down,Beam=First
|Note|Dur:8th|Pos:2|Opts:Stem=Down,Beam=End
|Note|Dur:4th|Pos:3
|Note|Dur:4th|Pos:2
|Bar
|Note|Dur:8th|Pos:-1|Opts:Stem=Up,Beam=First
|Note|Dur:8th|Pos:0|Opts:Stem=Up,Beam=End
|Note|Dur:8th|Pos:1|Opts:Stem=Down,Beam=First
|Note|Dur:8th|Pos:2|Opts:Stem=Down,Beam=End
|Note|Dur:4th|Pos:3
|Note|Dur:4th|Pos:2
|Flow|Style:ToCoda|Pos:5|Wide:Y
|Bar
|Ending|Endings:1
|Note|Dur:8th|Pos:3|Opts:Stem=Down,Beam=First
|Note|Dur:8th|Pos:2|Opts:Stem=Down,Beam=End
|Note|Dur:8th|Pos:1|Opts:Stem=Down,Beam=First
|Note|Dur:8th|Pos:0|Opts:Stem=Down,Beam=End
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Bar|Style:MasterRepeatClose
|Ending|Endings:2
|Note|Dur:8th|Pos:3|Opts:Stem=Down,Beam=First
|Note|Dur:8th|Pos:2|Opts:Stem=Down,Beam=End
|Note|Dur:8th|Pos:1|Opts:Stem=Down,Beam=First
|Note|Dur:8th|Pos:0|Opts:Stem=Down,Beam=End
|Note|Dur:Half|Pos:-1
|Bar
|Rest|Dur:Whole
|Bar
|Rest|Dur:Whole
|Flow|Style:DSalCoda|Pos:8|Justify:Right|Placement:BestFitForward
|Bar|Style:Double
|Flow|Style:Coda|Pos:8|Wide:Y
|Note|Dur:Whole|Pos:-1
!NoteWorthyComposer-End
142
General Discussion / Re: Ties at a repeat, appear unresolved.
My bad.  The measures before the repeat were in the 1st ending and the 2nd ending was after the double bar.  I had added a muted, invisible, grace chord to absorb the ties but after adding 2nd ending in all parts I took out the MIGC with no ill effects.
Thanks for looking at it.  Learned something useful for the future so it wasn't a complete waste of everyone's time.
143
General Discussion / Ties at a repeat, appear unresolved.
In the following snippet (treble clef, A major) within the first ending, the ties are resolved after a previous Master Repeat Open.  In the first bar of the 2nd ending, the ties carry over looking for a resolution.  Fortunately the same tied chord is at the end of the measure.

Is there any way to eliminate the unwanted "lens" in that measure?  TIA
Code: (nwc) [Select · Download]
!NoteWorthyComposerClip(2.751,Single)
|Chord|Dur:8th|Pos:n-2,0
|Chord|Dur:4th|Pos:-1,1
|Chord|Dur:8th|Pos:-4^,-1^
|Chord|Dur:Half|Pos:-4^,-1^
|Bar
|Chord|Dur:Half,Dotted|Pos:-4,-1
|Rest|Dur:8th
|Chord|Dur:8th|Pos:-1^,1^
|Bar|Style:MasterRepeatClose
|Chord|Dur:Half|Pos:-8^,-6^,-4^
|Chord|Dur:4th,Dotted|Pos:-8,-6,-4
|Chord|Dur:8th|Pos:-1^,1^
|Bar
|Chord|Dur:8th|Pos:-1,1
|Chord|Dur:4th|Pos:-1,1
|Chord|Dur:8th|Pos:0^,2^
|Chord|Dur:8th|Pos:0,2
|Chord|Dur:4th|Pos:0,2
|Chord|Dur:8th|Pos:n-2^,0^
|Bar
|Chord|Dur:8th|Pos:-2,0
!NoteWorthyComposerClip-End
145
User Tools / Re: How to (1) alter code and (2) get it back into the notation file
If you are going to modify something with a text editor:
  • First save your file if you have done anything else to it.
  • Open text editor, do Alt/Tab to get back to NWC.
  • Select what you want to change.
  • Cut to the clipboard (Cntl/X).  Alt/Tab.
  • Paste from the clipboard (Cntl/V) into your text editor, then modify as needed.
  • Select all (Ctl/A). Cut to the clipboard.  Alt/Tab to get back to NWC.
  • The cursor will be where you left it.  Paste from the clipboard.
147
User Tools / Force Stem Up for unstemmed middle line notes.
Code: [Select · Download]
/*
 doStem.js  by Warren Porter
                                  Stem Tool
 This tool will change all notes on the middle line where no stem direction is specified to stem up.

 This tool can operate on ONLY a selected part of a staff, or, if nothing has been selected, the entire staff.

 To install:
 1) Save this file with the name doStem.js on your computer and remember its location.
 2) Start NWC and press Alt/F8.  Pick new
 3) After choosing a name and group, browse for this file and click "Open".
 4) Insert "wscript " at the beginning of the command.
 5) Clip text should be selected and check no options.
 */

rc=0, errMsg="";

function doProcess(clip) {
var displ=0, upDispl=0;
var result = new Array();
var lines = clip.split("\r\n");
  for (i = 1; i < lines.length; i++) {           // Main processing loop
  if (lines[i].indexOf("Stem=") > 0)  // Already has stem direction specified
    continue;
  else {
    result = lines[i].match(/(\|Note.*Pos:)([n#bvx]?)0/) // 1. Note thru Pos 2. Accidental 3. Position 4. Shape 5. Ties 6. To end of line
if (result != null) {
  lines[i] += "|Opts:Stem=Up" }
   } }    // End main loop
  return lines;
}

var myLines;
  myLines=doProcess(WScript.StdIn.ReadAll()).join("\r\n");

if (rc == 0)
  WScript.StdOut.Write(myLines);
else
  WScript.StdErr.Write(errMsg);
WScript.quit(rc);
If you have to transpose after running this, run Audit Note Stems and then rerun it.
148
General Discussion / Re: showing on the same staff
You could try using two staves for the alto part, one would be layered with the soprano for the chorale and the other (normally collapsed) would be available for the fugue.  Same for the tenor part.
149
General Discussion / Re: RANT: user tools = useless tools
I wrote on my webpage, "clipboard data created and read by NWC (in addition to their .nwctxt format) is text based, (and) tools can be written to create or modify it."  These were put together to help automate various repetitive tasks I faced in NWC, first as web pages with the user having to go through the clipboard, then as user tools.

I don't consider the installation of any tool to be a hassle, just follow the directions and it's up in less than a minute.  Besides, it's only done once.  For example, the bass staff of a piano part often is in octaves.  It can be done by building the octave chord every time it's needed or copying an existing chord and changing its duration or position as needed.  Or, run a user tool one time for all the single notes that will turn them into octave chords, complete with all necessary accidentals and ties.  Your choice.