Skip to main content

Topics

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

Topics - hmmueller

1
General Discussion / Just a weekend story
TL;DR: Life without NWC and NWCConvertor (a BIG shoutout for Opagust!) wouldn't be life - with a healthy dose of support by Audiveris. Here's my story of this weekend:

At hand:
- The full printed 72-page score ("score F") for a small orchestra (strings, winds, harp [with important segments], percussion) of a modern mass for SATB choir;
- also, a printed 40-page condensed score ("score P") for piano and SATB;
- finally, 40-page choir's score (only) in our own modified version for SSAB choir, written with Capella score editor ("score C"). This was created painstakingly and slowly by a colleague, reviewed and edited multiple times by our conductor, formatted by me to get a somewhat professional layout; thus, it deviates from the previous scores at quite a lot of places.

Todo - overdue, i.e. quickly:
- A full score for instruments strings and piano and our SSAB voices; and a piano score.

The idea is that the piano plays the voices from score F except the strings. Maybe half of it will come from the harp, some segments also from clarinets and flutes, rest "as necessary"; much copy-and-paste should be nice to get a rough result quickly.

First idea: Capella Scan (music scanning software for Capella) to scan both scores F and P, then append the string and harp and a few wind staves from score F to the existing Capella score C. Scans with Capella Scan looked good; but copying of full staves betwen scores crashed (the most uptodate version) Capella, and line-by-line copying of 72 pages times 4...5 staves = more tha 300 copy-pastes, with probably more thana handful of pasting errors thrown in, is not what I had in mind for just creating the raw version.

What did work, starting on Saturday morning:

1. Scanning scores F and P into PDFs.
2. Run the PDFs through Audiveris unattended and saving as MusicXML (but the lyrics got lost - I did not succeed in installing the necessary Tesseract OCR files).
3. Import into MuseScore 4 and re-export as MusicXML roughed out many many edges.
4. NWCConvertor then created NWCTXT files ready to be edited without a hitch.
5. A good text editor (I use UltraEdit) and some regular expression magic converted or removed many funny things (mostly invisible rests that came from Audiveris and MuseScore to even out measure lengths) in the NWCTXT files (I LOVE a line-based text format ... for this sort of jobs)
6. Copy-paste of the lyrics out of Capella did work; however, the text editor and its regexps were needed again to replace Capella's somewhat weird lyrics formatting to get simple NWC-like lyrics.

From there on, I did direct editing in NWC: Copy-pasting staves (all the strings, harp!) or parts of staves (clarinets!), and then also writing of a few hundred new measures. On Saturday evening, I attended another choir's concert. On Sunday at 9am, I continued; and at noon, I was done with writing out the notes. The standard process of adding sound and listening to the voices revealed quite a few missing clefs and accidentals - but by 3pm or so all sounded fine. Formatting for nice page boundaries took another two hours, and at 5pm, I sent out the full director's score.

Creating the piano scores from the same NWC score files took a few hours today - I use my PrintConfiguration.hmm objects extensively: It's really easy to quickly create voice scores (in this case, for piano with a cue staff) as well as re-create the full scores (because, of course, I found quite a few more quirks during this).

I'm now waiting for review remarks from the conductor and the piano player. After maybe two or at most three more turnovers, we can then print and bind the 70 pages for the conductor; and print the 15 piano pages.

H.M.
2
Object Plugins / GroupOp.hmm 0.7
The name of this Plugin sounds strange - this is so because it is only a "support object" for copying and deleting larger "groups of items" on multiple staves. NWC cannot do "vertical selection" over multiple staves, yet sometimes it is necessary to copy a segment on all staves to some other score position. Typical scenarios are
  • expanding of verses notated with repeat marks, when later in arranging differences between the verses should be notated precisely (e.g. when the syllable counts differ; or when, for playback, different note lengths - slurs etc. - are desired);
  • during arranging, when a part that has been expanded from a particell or the like should be copied to a repeat.
From version 0.2 onwards, the tools for copying and deleting also handle lyrics correctly, which should greatly improve their usefulness.

With GroupOps, one would do the copying as follows:
  • place a pair of 'Start' and 'End' GroupOps on each staff around the segment to be copied;
  • place an 'Insert' GroupOp one each staff at the target place of the copying;
  • execute the plugin's user tool 'Copy'

Typically, the 'Start', 'End', and 'Insert' GroupOps on the staves will be lined up vertically, but this is not required. Only one 'Start', 'End', and 'Insert' GroupOp should be present on each staff; the 'Copy' tool will ignore all after the first, but it might also produce chaotic output of there are more GroupOps of a type on a staff. The 'Insert' GroupOp can be after, before or even inside the segment to be copied.
The copied result will be shown between dashed GroupOps.

The two attachments BeforeCopy.PNG and AfterCopy.PNG show the setup of a copy and the score after executing the GroupOp.hmm:Copy user tool.

Since 0.4, there is some support for expanding repeat sections with master repeats and endings; for an explanation and an example how to do this, see Reply #9 below.

With the plugin's 'Delete' user tool, it is possible to delete segments, delimited by 'Start' and 'End', on multiple staves. Also here, the 'Start' and 'End' GroupOps will typically be aligned vertically over the staves, but this is not required.
The deletion locations will be shown by newly inserted 'Insert' GroupOps.

Finally, there is a 'Reset' user tool to remove all GroupOps. This is useful if another 'Copy' or 'Delete' is done to make sure that not left-over GroupOps play havoc with the score. The example AfterReset.PNG shows the Copy example form above after the GroupOp.hmm:Reset user tool is executed.

In effect, this user plugin replaces the PHP user tools I have published in this old thread.

H.M.
4
Object Plugins / StrokeHeads 0.1
For noteheads that look like pen strokes, I have quickly assembled this user object. It's maybe useful for rhythm notation. I didn't look whether something similar is already available, I confess.
StrokeHeads.hmm is essentially a copy-paste of Mike's CueHeads.ms object (thanks for that one!), without the possibility to change any size. See examples.

H.M.
5
Object Plugins / BreathMark.hmm (0.3)
There are more breath mark symbols than the "comma" provided by NWC: At least some sorts of V-shaped symbols and tiny vertical bars are also used in vocal and brass scores. Because I don't want to search all the time for the necessary characters in some text fonts, I have assembled a very simple object that draws some of these forms.

The vertical position of the symbols is such that objects at staff position 0 put the symbols (hopefully) at the most useful, standard position, also for staff with more or less than 5 lines.  The small vertical bars are always on the top or bottom line of the staff (even if the object is moved up and down).

H.M.
6
General Discussion / Season's greetings, merry Christmas, all the best!
... to all of the musicians hereabouts!

This is the second year we had to cancel our choir's advent concert - we had rehearsed a longer composition "Weihnacht" I had written - with NWC, of course - which would have been nice to sing and, hopefully, listen to. So, next try next year!

Many regards
H.M.
7
Object Plugins / PrintConfiguration (0.7)
The PrintConfiguration.hmm object supports the creation of differentprints from a single score. The idea is that for each print, such an object stores all the necessary specific options. Two user tools "Save" and "Apply" are used
  • to save the current options (which are set up as always - by fiddling with them until the print looks right) into the object as strings;
  • and to apply the options stored in such an object to the score.

Conceptually, each print configuration is placed on a specific staff; this is intuitive for typical "voice prints". Therefore, at most one such object on a staff makes sense - all latter ones are ignored.

The score properties saved by a PrintConfiguration are:
  • Title, Author, Lyricist, Copyright1 (but not Copyright2; this is useful for information that you want to change on all prints, like a print date);
  • visible staves (identified by their internal name);
  • master StaffSize and the sizes of all 12 fonts (but not their names etc.);
  • page options: JustifyVertically, PrintSystemSeparatorMark, ExtendLastSystem, DurationPadding, PageNumbers, PrintStaffLabels, ShowBarNumbers;
  • the 4 margin sizes and the MarginsMirrored checkbox.

In addition to the PrintConfiguration.hmm object, there is a PrintVariation.hmm object which allows to modify segments of a staff arbitrarily(!) for different prints. Typical examples are:
  • add/modify spacers for a print;
  • addition of cue notes;
  • enable/disable various objects, e.g. BarNumber.hmm objects on lower staves.

Some hints for usage: Typically, you would set the following values for different prints ("voices"):
  • Of course, the staves to be printed;
  • but typically also a different staff size is needed;
  • as well as a specific title that indicates the print's purpose;
  • and e.g. a different print preparation date (e.g. in a copyright or lyricist field);
  • then, adjusted margins to maybe save an almost empty page at the end.
  • For multi-line prints (like the director's score or a piano score), I always use a separate top staff (with just one line and many invisible rests, layered with the next). There, I can add margins and user controls (e.g. PgTxt) and system breaks at will.
  • For single-staff prints, I put the PrintConfiguration on that staff; and use "Top Staff Only" Visibility settings to enable boundary settings and User Controls (e.g. a BarCounter).
  • In more complex cases, one might add PrintVariation objects for cue notes in some (but not all) of the prints ;
  • and even more intricate changes like specific spacers or differently aligned dynamics and texts (but this is very hard work to make it work correctly).
  • It may make sense to add a print sequence number or letter in the staff names, e.g. "A Full Score", "B 1st Violin", "C 2nd Violin" etc. This documents the print order; and also helps to easily select the print configuration in the user tools from the keyboard by simply typing A or B or C etc.

For examples, see next posting.

V.0.3:
- Corrected access to bool properties;
- PrintVariation.hmm modifies previous objects so that it is useful for spacers.
V.0.4:
- Corrected label in PrintVariation.hmm for V.0.3 change.
V.0.5:
- Allows limited change of staff names, by using only name part after / (if there is one) for selecting visible staves.
V.0.6:
- Copyright2 is no longer part of a PrintConfiguration; see explanation in posting #16 below.
V.0.7:
- Font sizes are stored!

H.M.
8
Tips & Tricks / Entering lyrics efficiently
It seems that some people have troubles with efficient lyrics handling, e.g. in this posting:

I almost never include lyrics in my Files, mainly because I find that entering them in the separate lyrics window, and then switching back and forth between that and the staff to make sure everything is properly positioned and aligned, is too much hard work.

I describe here how I do it (mostly composing for a choir, so there's lyrics all the time), but any critique or other ways of doing it are certainly welcome here!

There's a small bug/problem in NWC you need to know; and you need a "process" - then it's quite easy-going.

First, I almost never use the notes' "Lyrics Always/Default/Never" feature - it is really too much hassle to jump between the score, the lyrics editor and single note's properties windows for me. So all my notes have "Lyrics" set to "Default". For one use of "Always", see "in-word melismas" below.

(a) Write the score without lyrics. You already add the necessary slurs here. If you follow the old way of using beaming for multiple notes per syllable, you can add markers to make all the slurs invisible on beamed groups. Don't be too perfect - errors are repaired later.

(b) Prepare the whole lyrics for a single verse/line in a text editor, where you add all the necessary hyphens. For a long text, it's often easier e.g. to replace "ing " with "-ing " everywhere, as this suffix is typically hyphenated off. Of course you will miss a few hyphenation points and misspell some words - also that will be corrected later.

(c) Paste the lyrics in the lyrics window and close it with Ok (I always use <Tab><Tab><Enter> for this - using the mouse or touchpad is much slower; NWC is a very keyboard-centric program, which makes it so efficient).

(d) Now start reading until the first point where the lyrics are "off" (not aligned with the notes as intended; or there is a simple typo). Ctrl-L will open the lyrics window and remember the right tab - easy. However, the text cursor will sometimes (I don't know when) be at a totally wrong position - now press left-arrow! (not up, not down!! - that's the NWC problem). This will place the text cursor at the position corresponding to the cursor in the score. Now, you can directly correct what's necessary - typically, add a hyphen, but maybe also add an underscore _ for leaving a note without lyrics. Repairing missing or overly long slurs is done directly in the score, of course (marking the respective notes and pressing semicolon).

A special case are lyrics lines that are empty on a long stretch. For example, in a song which starts with an 8-bar chorus, only the first line is filled with lyrics there; but lateron, the second etc. lines will contain lyrics for the verses. For these lines, just prepare a line of many underscores separated by blanks in the text editor (_ _ _ _ _ _ ...) and paste it before the verse lyrics. That lyrics will now be shoved back way too much (if not, add that _ _ _ line once more; repeat until the lyrics is too far back). Close the lyrics and go, in the score, to the place where the verse lyrics should start; now press Ctrl-L and then left-arrow - voila, the text cursor will be at the exact place where the verse lyrics should actually start. Delete all the _ up to the verse, and all is fine.

Another special case are long sequences of notes on a single in-word(!) syllable ("melismas"). Such lyrics are typically not marked with a melisma line (for that, see Melismatic.nw), but with multiple hyphens spread over the note sequence. This is the one place where I set single notes' "Lyrics"  to "Always" (e.g. on the start of each quarter in a run of sixteenths); and replace the single hyphen in the lyrics with -_-_-_-. Each _ will be placed at one of the "Always" notes, and the hyphens are placed nicely in between them. The slur is left completely alone by this (and can be hidden on beamed notes if so wished).

- Repeat (d) through the whole lyrics.
- Repeat (b) to (d) for each lyrics line (verse).

I find that this is really quick work.

H.M.
9
General Discussion / Is there a program to check harmony rules?
Let's say I'd want to work through Schönberg's, or Hindemith's, or Jadassohn's, or Richter's, or whoever's textbook on harmony. All of these books contain "rules" (whether they are "hard" ones, or softer ones), and quite a lot of these rules could be checked mechanically. Some of the rules are temporary ones for exercises ("in the following exercises, the student must always double the chord's base note"), some are more permanent - e.g. ranges of singers and instruments or the infamous parallel fifths rule.

My question: Are there programs out there where one can formulate such rules and have them checked?* - of any sort: Stand-alone, plugins for music editors, and, of course, plugins or tools for NWC?

Thanks for any enlightenment!

H.M.

* I have an inkling I've already asked this before - but I cannot find where.
11
Object Plugins / NonFlowBar.hmm (0.1)
As an answer to more complicated flows (see e.g. this thread), here is a simple object that draws certain bar lines so that they do not have any "repetition logic". A desired control flow can then be created with tricky "endings", as e.g. Rick has shown in the thread linked above.

For connecting to non-flow bars in the following staff, the staff's "Bars Connected" flag is used. For connection with the staff above, one must check the object's "Connect upwards" flag. There is currently no StaffSig version for this, so one has to do it on every instance of the object - that could be improved, but with copy/pasting the bars around, it should not be really necessary (or is it?).

The object does not have any "bar logic", so there will be no line breaks at it; or a change of the bar counter. If this is desired, one can add hidden single bars before or after the object.

The symbols do not line up with "real" bars, but as I cannot see that one would want "flow logic" on one (visible) staff and "non-flow" on others, this should not be a problem.

One tiny flaw: Back-to-back close and open local repeats do not line up properly with font types MusikDingsSerif and MusikDingsSans - but as local repeats are not used that often, I did not repair this ... could be improved.

Positioning of the bar symbols is done "by brute number force" - if there is a better, "more analytic" way, which is maybe more resilient to some size changes (I did not do much testing), someone let me know so that I can change it.

H.M.
12
Object Plugins / TruncateMaestro.hmm and Truncate.hmm (0.2) - plugins to truncate note playing
NWC has some hard-wired rules how long notes are to be played, depending on the note's articulations. I am not always happy with these - e.g., tenuto bars can sometimes indicate "portato" articulation, where notes are played non-legato; marcato is sometimes used to indicate accented short notes, i.e., it implies a staccato; and, last but not least, equal notes immediately following each other often need a bit more of space between them.

The "TruncateMaestro.hmm" and "Truncate.hmm" plugins are a first experiment to create "note truncation rules" which affect the played length of a note. The sole example attached is for an initial part of R. Pearsall's "In dulci jubilo", where I needed a clearer separation of equal notes for rehearsal voices. I will add more examples in the future when I find time to play with this plugin; but maybe someone is interested in it right now.

Technically, the plugin sends MIDI note-offs which can truncate the notes earlier than NWC; but of course, the plugin cannot make the notes play longer than NWC allows. As a plugin can only send MIDI commands in a small vicinity (of 32 quarters - typically some 5 to 10 measures, depending on the time signature), one has to spread "Truncate" objects throughout the score to make all this work ...

H.M.

P.S. I am not sure "Truncate" is a good name; the plugin was called "Cutoff" for some time - if anyone has an idea for a better name, please let me know!
13
Object Plugins / BarCounter.hmm 0.5
This is my replacement for the original BarCounter.nw object, with a few extended features I found necessary on large scores. I'm very grateful to NWC for the initial code for this plugin, which I only extended at a few places:

  • Hide the number at left margin: This is useful if a bar counter is used on a lower staff in a large (e.g. orchestral) score so that there are no numbers colliding with the vertical line connecting all staves at the left margin.
  • Every n-th bar: Scores for marching bands often have numbers at every other bar (I found this also helpful in our choral scores); some scores are numbered at every fifth bar.
  • Optional suffix: If a score's numbers must correspond with some existing voice or other scores, but e.g. a repeated section is expanded (e.g. to improve page handling; or for differing articulations), it is helpful to distinguish the now equally numbered bars somehow, e.g. with a suffixed "a".
  • Excluded numbers: Sometimes numbers collide with other signs (crescendos in choral scores are notorious for that, as they are usually shown above the staves); easily dropping one or a few numbers can be helpful.
  • Font: Font selector; default is "StaffBold".
  • Scale: Label sizing in percent; default 100%.
  • Check consecutive numbering: Check whether the numbers from a previous BarCounter object are continued at this object; this is helpful to check that bar numbering is correct on all staves; default is true.
  • Last, but not least, this plugin honors the "Exclude From Bar Count" checkbox on bars.

The first attached file shows a few demo cases and explains them. However, the real use of these feature can only be seen in larger scores. If someone is interested in such examples, please let me know. The second file shows the effect of a numbering error.

H.M.
14
Object Plugins / RangePitchMarker.hmm (0.1)
Here is a plugin that highlights notehead depending on their pitch. The most common use is to indicate notes falling outside a given range ("ambitus") of a voice. However, it can also be used to higlight notes inside a range, notes from a fixed list (a "scale") or notes outside a scale.

Each RangePitchMarker object requires one more subsequent chords ("range chords") which define the pitches of the range or scale to be highlighted. No items are allowed between the object and the range chords, with the exception of clefs. Typically, invisible grace chords are used as range chords.

Multiple RangePitchMarkers with different colors can be specified - then, the second RangePitchMarker only marks pitches not marked by the first; the next RangePitchMarker, only those not marked by the previous two; etc. In practice, using three colors red, amber, and green could be useful to highlight unacceptable, somewhat acceptable, and essentially ok pitches.
A marker with the same color replaces the previous specification for that color. The order of colors is not changed by this - it remains the same throughout the staff. Repeating a marker color which is immediately followed by an (invisible grace) rest will stop marking noteheads with this color.

For more and detailed uses, see the attached examples:

  • MarkRanges shows the standard use - both with multiple colors and with "interpolating" marks (this image shows what it looks like; it's also in the attachments);
  • SATB is a possible setup for a choir's ranges;
  • Ave Maria shows a use for the fixed scale of a "31er" crank organ.

"For technical reasons" (see below), RangePitchMarker objects must have class "Span".


A tale of programming this object

I just wanted to implement this "quickly" between other things to do - much music I have to write, and more work on my planned "complete introduction to NWC." However ... implementing this plugin was much harder than I thought - but, admittedly only because I wanted the plugin to work also in print mode. In that case, auto-inserted objects must do the duty of drawing the marker circles; but they still must visit all other RangePitchMarker plugins to find out for which pitches they are responsible. It took me a day or so to find out that only Span-class objects would work: "Standard" objects do not replicate down to subsequent staves on a print page, and hence cannot do drawing down there; "StaffSig" objects forcefully replace all previous objects of the same class, so that only the last marker color would arrive there. However, with Span objects, I had to calculate the span correctly up to the next plugin of the same color - having an infinite span would accumulate the objects on each staff, and I would not know which one is the last one of a certain color (trying this, I found a quirk: math.huge is not a valid span value - it works like 0; however, 1000000 - 1 million - does work; but I needed precise spans anyways). Anyway, these was only the beginning of troubles ...

... because then I found that the drawpos position of auto-inserted Span-class objects behaves quite strangely: It does not start at the auto-insert position (as with StaffSig-class ones), but at the original position. However, doing :find('next') will then jump to the object after the auto-inserted position - and a :find('prior') will jump back to the original position. Thus, with Span-class objects, one cannot iterate over the objects between the original and the auto-inserted position! - which I needed to find out whether other RangeMarkerObjects, of other colors, would claim some pitches. It took me a few hours (i.e., days, because I only have an hour or so per day for this hobby) to pinpoint down all this, which first looked more like a random jumping around. I feel this is a buggy, or at least, unexpected behavior - but by using spcific :indexOffset() values, I finally found a working algorithm. So it goes -

- but now all is fine (I hope).

H.M.
15
Tips & Tricks / Keyboard cheat sheets
Here are three variants of a cheat sheet for Noteworthy 2.75a:
  • English, A4 format
  • English, letter format
  • German, A4 format
Additionally, I have also attached the source if someone wants to add an additional stave for another language.

H.M.
16
Tips & Tricks / Marcato sign - German keyboard shortcut
On German keyboards, ^ is a dead key. Thus, adding or removing marcato signs is not as simple as on English keyboards. This has bugged me for years - but today, I researched (well ...) this problem and came up with the following solution:

Type ^ and then a key that does nothing. The two most useful combinations are, in my opinion:

  • ^ y if you want to use only the left hand;
  • ^ ö if you want to use both hands.

(No, ^ Space does not work, for whatever reason - I suspect NWC captures the space and wants to create a rest, but cannot do that with items selected, so it just ignores the combination ... or the like).

H.M.
17
General Discussion / NWC keyboard cheat sheet?
Does anyone have one? I looked in the Scriptorium, and googled ... but not to avail.
Of course, I'll write one if there is none - also in German for a pupil who wants to learn her first score editor (that's the actual reason - I hope I don't need one ...). But if anyone has got one that would nice - or a nice start ...

H.M.
18
Object Plugins / CueStaff.hmm (0.6)
A cue staff object for NWC

Version 0.6 is a complete rewrite, which makes the object as feature-complete as I could imagine. This documentation has, on the whole, stayed as before, but many details have changed.

After @William Ashworth again mentioned cue staves in a posting, I thought I'd try to implement a full object. The CueStaff object is not easy to use, but it can create acceptable (I think) cue staves for some cases. It must be said that this is a "tricky object" - it puts notes at places you might not have expected, and it tries to undercut NWC at some places to get the desired result. A native NWC cue staff feature would be much easier to use, and create much more consistent results. However, as long as we do not have such a feature in NWC, this is the nearest I came to supplying a comparable functionality via a plugin.

Let me start immediately with the limitations of the CueStaff plugin:

  • Cue staves cannot be played (the notes sound all wrong). You need a separate playing staff to play them correctly.
  • Like the CueHeads.ms plugin, also a CueStaff uses NWC's beaming - which is of course too large for a cue staff. This is a compromise - otherwise, the plugin would have been much harder to implement; and harder to use.
  • Ties are not supported. You must, in general, simulate them with Slur.ms objects. However, in some cases, ties "do just the right thing".
  • Rests and double-stemmed chords are more complex than you'd believe.
  • Placement of accidentals and dots is not as sophisticated as NWC's. Still, it should be good enough in most cases.
  • Placement of clefs and key signatures works only by fiddling with various spacer sizes.
  • Handling of initial and final bars does not always work.

The features of the CueStaff object include:

  • Support for complete cue staves, i.e., the cue staff runs from the beginning to the end of the score (this is typically used in scores with solo instruments or voices), as well as cue segments, i.e., short staff segments above or below a main staff (this is typically used to indicate alternative musical lines, or explanatory notations e.g. for ornaments).
  • Support for single-stemmed and double-stemmed chords, rests, and rest chords.
  • Free scaling from 50% to 150%.
  • Arbitrary number of staff lines.
  • Additional "overhangs" on the left and right of cue segments.
  • Optional dashed or solid connection lines to bar lines on the next staff; transparent bars are not connected.
  • Optional clef and key signatures at the beginning of a cue staff or segment, and on each new system.
  • Separate CueStaffTimeSig object for scaled time signatures in a cue staff.
  • It is possible to suppress the staff scaling, so that only the items are scaled. This allows the placement of cue items of different sizes on a normal staff. An example for this is attached as "OverlaidCueSegment".

Here are four examples that show what can be done with this object (their NWC scores are added as attachments):

CueStaffExperiment_RheinbergerOp150Nr3Gigue.pdf
CueStaff_Chords.pdf
CueStaff_Rests.pdf
OverlaidCueSegment.pdf

The following text tries to explain the concepts behind this plugin, and how to use it.

The current implementation is feature-complete - I believe -, but the placement of some elements is certainly not perfect. I am open to all suggestions on how to create a better-looking score.

Concepts of cue staff drawing

The main concepts behind this object are:

  • The main idea is to write "source items" (notes, chords, rests, bars) in NWC's normal size that are not (or only partially) visible. Instead, these source items control how the visible "cue items" are drawn.
  • The cue staff is overlaid over the source staff. For this to work, the source staff lines are set to zero. Typically, the center cue staff line lies exactly over the center source staff line (which is invisible, because of the zero lines). It is possible to offset the cue staff lines from the source staff lines; this is not used often, but the C.Ph.E.Bach example (in the next posting) shows that by using this feature, one can align the cue staff with a grand staff brace.
  • The source notes and chords are entered with blank noteheads ("Q B" on the keyboard), with invisible dots (-1 as "Extra Dot Spacing" in the note properties) and without any accidentals. However, stems and beaming of notes and chords are visible.
  • For a note, the cue notehead is shown "somewhere near" the invisible source head - I'll explain that in detail below, but the idea is that the visible stem goes almost to the cue notehead. A short line completes the missing stem piece.
  • If the note/chord needs accidentals and/or articulation, an invisible grace note/chord immediately to its left must carry this information (I call this the "grace companion" of the note or chord, which is the "cue chord").
  • The grace companion also carries the additional heads for double-stemmed chords and rest chords, if necessary. The cue chord itself must never have two stems, because the second stem would always be at a wrong place.
  • Invisible source rests create smaller cue rests at about the same position. However, as NWC does not always place invisible items at useful locations, these rests might end up at unexpected places. As a remedy, one can also enter rest chords with a blank head, a whole notehead (or stem length zero) and an invisible rest ("Show Rest" is unchecked), which are placed perfectly by NWC. But this does not work with dotted rests, as "Extra Dot Spacing" is not saved for rest chords (this is an NWC bug) - so in this case, invisible rests must be used.
  • At its start, a cue staff or cue segment can optionally have a clef and key signature. If the cue staff contains one or more system breaks, these elements are repeated at the start of each system.
  • There is a separate CueStaffTimeSig object, which creates a scaled time signature (it looks for a previous CueStaff object to find the scale). The CueStaffTimeSig does not support "common time" signatures.

In order to use this plugin, one must understand how notehead placement works. I'll explain this in a number of steps. The blue elements in this and the subsequent diagrams represent the source items, which are typically invisible in the resulting score (with the exception of stems); the red elements are the resulting items that are drawn by the user object. The examples show the creation of a cue staff of size 75% where the center lines are on the same height.
(I have added a zip of the images to the next posting, in case they are not reachable on my server)


In the first diagram, one sees the basic mapping of a source note:

<Image Link>

First, the position of a "virtual" cue notehead on the cue staff is computed; then, this notehead is moved away from the stem to the nearest valid position. The small gap between the stem's end and the notehead is filled by the plugin with an additional short line. One can see that the note stem is now typically too long - therefore, overriding the stem length with 6 or 5.5 is usually a good idea.

This mapping concept, however, leads to a problem: The possible note positions on the cue staff are denser than on the source staff - so, some cue staff positions apparently cannot be reached from source staff positions! The next diagram shows a five-note scale on the source staff - it ends up with two "holes" on the cue staff:

<Image Link>

The solution is an additional marker that allows a notehead to be mapped one step higher. In the next diagram, this marker is shown as a small blue arrow; for the plugin, one uses the "Tie Direction Downwards" selector of the note (remember that ties are not supported; so, the tie-direction information is "free" for being [mis]used for other purposes). One can see that it is now possible to create a five-note scale on the cue staff by using four different source notes with suitably chosen "shift" markers:

<Image Link>

The direction of a notehead shift is always away from the stem. The reason for this is of course that only then is it possible to add a small segment to complete the stem on the cue staff. However, this leads to the strange effect that merely flipping the stem direction on the source note alters the cue note's pitch, as can be seen in the following diagram:

<Image Link>

I found that I got used to this behavior quite quickly. One adjusts the note position of the note immediately afterwards (with Ctrl-Shift-Up or Ctrl-Shift-Down), and all is well.

Now, let us look at chords. Here, the rule is that, first, the "outermost" nodehead is mapped as described above (i.e., the highest note if the stem points downwards, and the lowest if the stem points upwards). Then, the intervals of the chord are faithfully replicated on the cue chord:

<Image Link>

Again, this will typically lead to overly long stems, so that their length must be overridden.

The stem-flipping effect is much larger for chords, as can be seen in the following example:

<Image Link>

Stem flipping changes the outermost note, and hence, the location of the whole chord on the cue staff varies considerably. Again, I found that moving the chord quickly to the right position is not a problem (of course, sometimes it is necessary to set the "Tie Direction" to "Downward" to place the chord on an otherwise unreachable position).

The rule for assignment of accidentals is: The actual positions of the noteheads on the grace companion are ignored; its noteheads are simply mapped one-by-one in order to the cue chord or note (this picture is wrong: The stems must point in the same direction; I'll repair it soon):

<Image Link>

Articulations (staccato, tenuto, etc.) are simply taken over from the grace companion to the resulting cue note or chord.

Last, one must understand how double stemmed chords (including rest chords) work. Like the accidentals and the articulations, they draw their information from the grace companion. The cue chord (with blank noteheads) only contains the noteheads for the shorter duration (and hence no second stem). The noteheads for the longer duration are copied over from the grace companion. The position of these noteheads is derived from the grace companion's position - this is the only case where its position is important. Rest chords work similarly: The cue chord is a (typically whole) blank notehead with a rest (with "Show Rest" unchecked); the noteheads are copied over from the grace companion.

When creating double stemmed chords or rest chords, ene must make sure that the stem directions of cue chord and grace companion agree, otherwise the results are disturbingly chaotic.


Practical considerations of cue staff writing

In practice, it is a good idea to follow these steps (a user tool might be useful to support the more mechanical steps - I have not yet written one):

  • First, completely write the source staff, and set all stem directions correctly.
  • Then, duplicate the whole staff so that you have (a) a valid source against which you can compare the resulting cue staff; and (b) a staff for playback if needed.
  • Now, create the necessary grace companions for accidentals and articulations. Either you copy the whole note or chord - the keyboard sequence for this is: Shift-Right/Left (to select); Ctrl-C Ctrl-V Ctrl-V (to copy); Shift-Right, = Alt-Enter Ctrl-Tab N Enter (to make it "grace" and then invisible); Right and again Shift-Right and then one or more of 9 8 7 , ' ^ _ (to clear all accidentals and articulations). Or you copy single helper notes (with an accidental, a staccato dot, ... - whatever you need) from some other part of the score or - better yet a "tool staff").
  • For rests, add a separate whole note to create a rest chord (using whole note avoids overriding the stem length with zero).
  • Select the complete staff or segment to be "cued", and (a) in tab "Notes", set "Extra Dot Spacing" to -1 everywhere and select "No Leger Lines"; (b) set all noteheads to blank noteheads ("Q B" on the keyboard does this).
  • Set the "Staff Lines" to zero.
  • Only now the CueStaff object should be inserted, with the intended scaling. Almost all notes and chords will now suddenly have jumped to (musically) wrong positions.
  • Therefore, all chords and notes must now be shifted (again) to their correct position - by simple selecting and shifting with Ctrl-Shift-Up/Down, and maybe additionally by setting the "Tie Direction". The duplicate staff made in step 2 above is very useful for this.
  • Also, accidentals and articulations might show up wrong if the grace companions are not correct - they need to be repaired now.
  • Notehead-dependent elements - slurs and triplets - may need additional position fine-tuning (using NWC "Markers").
  • Then, additional elements like tie-simulating slurs, dynamic-simulating texts etc. need to be placed correctly.
  • Finally, the spacers of the CueStaff object should be configured; usually, this requires checking the layout via "Print Preview" (Alt-F V on the keyboard).

For editing an existing cue staff, the following hints might help: An important NWC feature is the F11 button which toggles between
  • "edit mode" - where all invisible items are shown as grey outlines; which can be helpful, but also confusing -, and
  • "viewer mode" - where items are roughly laid out by NWC as on a print output.

Additionally, there is a "Show Source" flag on the CueStaff objects, which will show the source staff lines and note/chords instead of the cue items. This is mostly useful when correcting chords, where one has to see the original intervals.

Finally, Alt-F V (Print Preview) is your friend if you want to align the cue staff clef and key signature correctly - I have found no other way than to repeatedly play with the spacers and the left overhang and check with Alt-F V, + and cursor keys whether the alignment is good enough. There is a "Show Width" flag on the CueStaff objects which shows the room used by the clef and key signatures; it might help to place them better.

In the end, however, all this is still a kludge: Native cue staff support in NWC would be much easier to use.

H.M.
19
Tips & Tricks / An experiment in tuplets
I did not want to call this "how to write tuplets", because my method has a few drawbacks. Still, it might be useful in one or another situation. Concepts:

  • Dots and double-dots are used as much as possible to distribute the note lengths roughly equally over the tuplet - then, with "extra dot spacing" -1, the dots are suppressed.
  • For some tuplet values, dotting does not work. In that case, tied invisible notes are prepended to the visible notes - prepended so that the ties are not visible; the first note, however, is never preceded by a tied note, because otherwise it would not line up with the beat.
  • And for some values, an invisible triplet spanning the whole tuplet allows a somewhat better distribution of the note values.
  • Drawing the beams is typically done with NWC's builtin beams. However, in a handful of cases, the new version 0.6 of the Beam.hmm object is needed to draw one beam less than the note values would usually request: For example, a septuplet in 3/4 time gets only one beam, even though the "eighths" are a little bit shorter than real eighths (and are therefore created mostly with double-dotted sixteenths).

Of course, this dot/double-dot/triplet combination method always leads to not perfectly divided tuplets when playing - but this is acceptable in many cases, I would say.

For the tuplet bracket, I have for the moment used the LineSpan.nw object, with a manually placed text. It would be nice if the LineSpan object could place a centered text - and place it in its line - out of the box ...

To use one of these tuplets in your scores, I suggest you download the attached NWC file, copy the tuplets to your score and move the notes up or down as needed. Tuplets that do not use 64ths can of course be shrunk by a factor of two (select, then press minus), those not using 32nds can also be shrunk by a factor of 4.

H.M.

20
General Discussion / An idea
I have an idea: I'd like to write a book - "Writing scores with NoteWorthy Composer" - or - "The ultimate guide to writing music with NWC" - or - ....

... and it might be a website, not a book: But not just some random articles about some topics that might be of interest today, but a structured thing, with a plan on what's in there and where, and how it is interlinked, and a common style (e.g.: Many examples, less text; and/or with sidebars for explanations or not; and ... whatever ...).

Who should read it, and how? Everyone who might or does use NWC - it should help everybody over every hurdle that one encounters when using NWC (and there are many hurdles, and of many sorts). Well, not everybody and not every hurdle - but many, and many. So it would be more of a handbook: Not for sequential reading, but for lookup.

And therefore it should be "use-case driven" (not an "enhanced" copy of the manual): I.e. it should be organized by typical usage scenarios - copy an existing score verbatim (or more finegrained: copy an existing single-voice, piano, hymnbook, SATB, canon, ... score); copy a ... score with different size, pagination etc.; extend a score with additional voices; write a large orchestral score (which would include printing a director's score as well as instrument voices) etc. And each of this "for print", "for playback", and "for print and playback".

It would have to be honest: Explain what NWC can't do out of the box, and can't even do with user tools and plugins - and explain how to overcome the gaps and weirdnesses.

First question: Is this worthwhile at all?
Second question: Has anyone already done this - partially or fully?
Third question: Has anyone any suggestions, ideas, convictions, advice on what to include, what not, format, technology, whatever?

Oh yes, it would be a long-term project (years); it might take long and longer, it might fail, it might ... I don't know.

But - I thought I'd ask.

H.M.
21
User Tools / "Remove following rests of same length" user tool (0.1)
This is a companion user tool to the "Extend staff below with rests to cursor" user tool: If one adds new notation into the rest sequence, all elements behind are shoved back (as NWC does not have an overwrite mode). This tool allows the quick deletion of following rests of the same length as a selection.

Here is a short description:

This simple tool removes all rests and the "duration-less" objects between them after the selection for a duration that is equal to the selection's length.
This is helpful if you have added a stretch of notation in a run of rests, but actually did not want to move back everything behind your insertion; think of it as a remedy for NWC's missing "overwrite mode".
If the tool encounters an object with duration during its removal that is not a rest, it stops - it does not want to destroy parts of the score.
Finally, if the removed rests do not sum up to the exact length of the selection, the tool inserts a few small rests for compensation.

To install, download the attached lua file (wherever you want to store user tools), open some NWC score (e.g. a new one), go to "Tools --> User Tools", click "New" and add the following:
  • Group: Whatever you want to keep your user tools organized
  • Name: "Remove following rests of selection length"
  • Command: Browse to location where you saved the downloaded file
  • Input Type: File Text
  • Options: Returns File Text

I have also attached a weird test file to play around with this tool. For a first experiment, select the red notes (which are assumed to be a previous addition) and run the user tool - the following part of the staff should "move up" so that the bars, endings etc. again align nicely. Note that a new sixteenth rest had to be added after the red notes for this alignment.

H.M.
22
User Tools / "Extend staff below with rests to cursor" user tool (0.3)
I have written a small user tool that extends a staff with invisible rests - this is e.g. useful if a staff needs a layered staff late in the score.

Here is a short description:
This simple tool fills the staff below the active staff with invisible rests up to the cursor position.
The following items are copied down from the active staff while filling: All sorts of bars, flow controls, endings, time signatures, and keys. These copied objects keep the visibility from the active staff.
This is e.g helpful when a staff split for layering is necessary later in the score.
Right now, the tool never creates dotted rests.
If the staff below the active staff extends past the cursor position, or there is no staff below the active staff, the score is not altered.

To install, download the attached lua file (wherever you want to store user tools), open some NWC score (e.g. a new one), go to "Tools --> User Tools", click "New" and add the following:
  • Group: Whatever you want to keep your user tools organized
  • Name: "Extend staff below with rests to cursor"
  • Command: Browse to location where you saved the downloaded file
  • Input Type: File Text
  • Options: Returns File Text

I have also attached a weird test file to play around with this tool.

A companion tool "Remove following rests of same length" can help you if you want to insert new notation in the rest stretches, but want to re-align parts after the inserted pieces (NWC has no "overwrite mode", so inserting notation without disturbing the position of staff parts to the right is not possible "out of the box").

(I have not researched whether there are already other tools that can be used for this purpose ... I wanted a very simple tool, both from the viewpoint of usage - no options - and code - as short as possible, and I need to learn to write user tools in Lua anyway, so I took this as a first example).

H.M.
23
User Tools / Bug or wrong documentation at nwcItem:HasDuration()
The documentation says:

Quote
Hint: grace notes do not have duration.

But the following tool,
Code: [Select · Download]
local f = nwcut.loadFile()
for i = 1, #f.Staff do
  for j = 1, #f.Staff[i].Items do
    local item = f.Staff[i].Items[j]
    nwcut.warn(i ..'/'..j ..' --> '..(item:HasDuration() and 'true' or 'false')..'\n')
  end
end
nwcut.status = nwcut.const.rc_Report
when called on a new staff with two grace notes, outputs
Code: [Select · Download]
1/1 --> true
1/2 --> true

I'll use
Code: [Select · Download]
item:HasDuration() and not item.Opts.Dur.Grace
instead - I think this is what the documentation means ...

H.M.
24
Object Plugins / EditMark.hmm (0.2)
I'm afraid of ... no, not Virginia Woolf, but invisible NWC objects - really invisible objects that I would not see in the editor. There are at least two of them: Transparent bars; and whole notes with a blank head. So, I wanted a marker that shows where they are, and maybe also shows some text why I put in these invisibles. But of course, I do not want all this to show up in the printed staff. Thus, I wrote this ...

The EditMark.hmm can be used to add text and dashed marks that only show up in edit mode. This may be especially useful for invisible objects (like transparent bars), almost invisible objects (very small symbols), or just as remarks needed only during editing. The dashed marks are located at the next (presumably invisible) item. Of course, the plugin itself will never be invisible - if the text is empty, a standard symbol (derived from the following item) is shown.

The attached example file shows different uses of the plugin. You might want to check out its interesting print preview.

H.M.
25
General Discussion / Do we need a "CueStaff" plugin?
Some of us have wished that NWC would have an option to have (vertically) smaller staffs - I call them cue staffs, but they are used for multiple purposes (alternative notes for other instruments, or in different manuscripts; solo voices in piano scores; and some more).

I have played with the idea of writing a plugin that can, in some quite limited way, produce such staffs - see the (very incomplete) example in the attachment (produced by actual code - I can scale it, and the noteheads and accidentals already are plaed at about the right spots).

I would still heartily wish that NWC would have this as a built-in feature - but in the meantime (however long it will be), would such a plugin be useful? I ask because writing it would be lots of work - essentially, one has to mimic all the possible printing features of NWC - from chords and notes with their various durations (beamed and with tails) to accidentals, articulations, triplets, slurs, all the different bars, ... etc.

Would this be worthwhile??

H.M.
26
Object Plugins / RepeatMark.test (0.5)
I have taken over Mike's code from that thread (RepeatMark.ms).

The main selection is the "Repeat Type", which can be
  • Single - for a one-bar "simile sign" (centered in the bar) and/or a counting label
  • Double - for a two-bar "simile sign" right over the bar line and/or also a counting label
  • Double with 2 - for a two-bar "simile sign" with a 2 above it (a counting label is possible, but confusing in this case)

The label can have one of two formats - either selected manually or automatically:
  • "Plain" shows the repetition label unadorned;
  • "Parentheses" shows it between (..);
  • "Default" is "Plain" for the two "Double" types and "Parentheses" for type "Single".

The label controls whether it and the sign are visible:
  • 0 - no label, sign is visible
  • > 0 - both label and sign are visible
  • < 0 - label shown (without the minus), but sign is invisible

Additionally, there are some more format options for the label.

For reference, those who have access to E.Gould's "Behind Bars" can look up the rules on pp. 233 and 578.

For convenience, there is a user tool with two "actions" Double and Single to quickly create repeat marks for multiple bars. The three following animated GIFs show three examples of working with the user tool; on the right side, you can see the keys I pressed (I do not use the mouse with NWC).


The GIFs might be a little confusing first, but if you watch them for a few rounds (they loop endlessly) and look at the pressed keys and maybe try them out in NWC, you'll find out how that works - and how quick it works.

There are three very useful initial label values for the user tool (which are all shown in the demos above):
  • 2 - this is useful when one wants customary marks that start with label 2; the selection is from the first repetition onwards.
  • -1 - this is useful when creating "B.B." style marks, i.e., where the initial segment gets label 1; the selection must include that initial segment.
  • 0 - if one does not want any labels (e.g. if the repeat count is only 2 or 3); the selection is from the first repetition onwards.
Other values might also be useful (see e.g. value -5 in one of the examples). There is no user-tool support for non-contiguous labels (e.g., only every second or fourth label); if you need that, just set the labels of some objects to zero afterwards.

Many thanks, of course, go to Mike for his previous version of this tool!; and to David for a long and ongoing list of comments - I believe that the current tool can do everything he wants, and rather quickly - but also everything to fulfil the "B.B." requirements.

H.M.
28
Object Plugins / Breve.hmm (0.6)
Here is a user object that helps with breve notes (double length of whole notes). The plugin should suffice to write the final chords of hymnbook melodies and chants, and maybe some more uses - the examples have some of them. However, it has its limitations, especially if one wants to use ties (not typical with breves), dots (not at all typical with breves), or when playing them.
(The BrevePlayExample needs the Mensurstrich.hmm object - breves go with old music, so this makes sense, I think).

To create a breve, first create two whole notes (semibreves), then place this object to the left of the first semibreve, and finally change the noteheads of both semibreves to blank heads (by selecting both and then e.g. pressing Q B on the keyboard). In the editor, two small vertical lines indicate the position of the now indiscernable two notes - which are, however, technically not "hidden": The reason for this is that NWC will do layouting with the two semibreves, and the breve notehead can be placed accordingly.

The second semibreve can also be a whole rest, or actually any item. The second item is only used by NWC to reserve space for the complete breve. Using a hidden rest as the second item is useful if the breve is tied to another note - however, the ties are not really placed nicely.

The drawing of the noteheads is controlled by available fonts and user selected options: If fonts from Lawrie Pardy's *Dings suites are installed, one can use square and "double bar" noteheads from them. By default, the plugin looks for the fonts MusikDingsSerif and then MusikDingsSans; if neither is found,

  • the double bar notehead is taken from the standard NWC font;
  • the single bar notehead is drawn as a semibreve (whole) notehead with a line on each side;
  • the square notehead is created by two Times New Roman letters 'I' that are rotated by 90 degrees (which makes the notehead a little too short).

It is also possible to have chords of breves, and even chords with two durations do somehow work.

Last, there is also some support for playing. By default, the object is muted, but it can be unmuted. In that case, the two blank semibreves should be muted. Playing does not work with chords with two duration and restchords. Performance marks like staccato etc. are not considered when playing.

This user object does not (yet?) work nicely with the Cueheads.ms object, because that object also uses blank note heads.

H.M.
30
Object Plugins / Beam.hmm (0.91)
NWC is missing cross-staff beams, unison beams, more complex grouping (where some group have one running beam, others two), overhanging fractional beams, beam groups for speed variation, stemlets, single notes with beams, and double beams (double stem chords with beams on both sides). I thought this could be remedied by creating a versatile Beam object, which is attached to this posting.
In addition, there are ten example files, which mainly use examples from "Behind Bars":

  • "UnisonBeams" has three unison beam examples;
  • "CrossStaffBeams" has a percussion example and two piano examples; the last - an excerpt from a piece by Webern - is, I would say, quite interesting ...
  • "OppositeStemDirectionBeams" has some examples with stems in opposite directions (but the previous file also has some ...);
  • "ComplexGrouping" has a single example with different numbers of connecting beams - NWC cannot do this, but I doubt that this is really an important feature;
  • "FractionalBeams" shows an interesting way to indicate complex rhythms, which I have yet to see outside B.B.; and has single notes with beams.

The remaining examples are attached to the next posting.

The maximum span for a Beam object is 16 notes and rests. If a longer beam group is needed, two or more overlapping beam objects can be defined (see example in "ComplexGrouping.nwctxt").

Breaking beams at a line break does not work - you have to provide a separate Beam object for each line.

(If you possess "Behind Bars", I am interested in whether you see problems with my example scores; and if you have suggestions for interesting examples I could or should add).

H.M.
31
General Discussion / My (new, and long) NWC wishlist
I have written a fair amount of NWC scores in the last 18 years - there are about 2300 .nwc and .nwctxt files on my computer, ranging from a few notes to some 50000 items in the largest ones, and almost all of them contain music sketched, arranged or composed by me - for organ, organ and violin, choir and solo vocalists, brass band, flute ensemble, many many crank organ arrangements (for more than 10 years the main purpose why I used NWC) and very few piano pieces. Recently, I also tried my hand at a few user tools and user plugins. So, I think I'm allowed to sketch a few ideas about what I'd like to see in NWC in the years to come. The ideas are grouped into 3 sections, "score creation", "graphic elements", and "playing".
I would think that these features - which, admittedly, range from quite small to visionary - would make NWC more interesting to a wider audience.


Score creation

C-1. Multi-staff selection would be very helpful. Alt-Shift+up/down are not yet used and are easily reached, but this is of course the smallest problem. One needs a definition of how to select items that overlap the selection boundary on other staffs. My expectation would be that wherever the boundary on the staff selected at first is also present, the selection will begin/end exactly there (so that also items on staffs far apart - e.g. with multi-rest staffs in between) get selected "equivalently". For all other objects, I am tolerant what happens.
I would expect that with such a multi-staff selection, one could at least
  • delete it
  • copy it and paste it somewhere else (with accepted shaky semantics if boundaries at source or target location do not line up exactly)
  • change properties (as with current single-staff selections)
I think it is sufficient to have only multi-staff selection over contiguous staffs - especially if the following feature C-2 is also supported.
Layered staffs are hard - one would probably expect them to be "selected together" - but what should happen if e.g. their copy target is not layered in the same fashion? Maybe copying a selection covering layered staffs is only allowed to be copied to a similarly layered staff group ...

C-2. Moving sets of layered staffs up and down together. A simple checkbox e.g. on the Edit menu could control this - doing Alt-E X to switch the "together/not together" option is simple enough.

C-3. "Overwrite mode" - this is customary in many other score editors: The score is implicitly or explicitly filled with (probably invisible) rests; writing of a note replaces the rest (or, most of the time, part of it) with the note. The main reason for this feature is that notes present later in the staff are not shifted - this is extremely helpful for some use-cases like actually composing pieces. It also mimics the way one writes on paper.

C-4. Extend all staffs (or all visible staffs) with invisible whole rests to the cursor position on some other staff. The reason for this feature is the same as C-3 - "write notes anywhere". >> It might be possible to do this as a user tool.

C-5. Staff splitting and combining: Split a staff into two layered staffs, and recombine two layered staffs if possible. >> I think this can be implemented as user tools.

C-6. Staffsig-copying Ctrl-A: With more and more useful Staffsig plugins, setting up a staff becomes more and more cumbersome or even "magic", especially for newbies. "New staff" (Ctrl-A) should create a new staff immediately below the active staff and copy over all the leading Staffsig items (clef, key, and Staffsig plugins) to the new staff (this could be controlled by an option "old-style Ctrl-A" or, like 2. above, by a sticky "Edit" checkbox).

C-7. Factory templates with useful Staffsig plugins: I do not know what the factory-provided templates look like (I have overwritten all of them), but I would expect them to have a host of Staffsig plugins on each staff: PageTxt, Acciaccatura, CueHeads, and maybe more provide standard features needed for even semi-professional scores.

C-8. Better MIDI import: The MIDI Import feature is too limited compared with modern DAWs. I would expect note lengths to remain as in the original MIDI file even when chords are created; and also that triplets are recognized correctly. >> It seems that a completely separate program could be developed for this purpose - after all, the nwctxt format is open and could be created by an arbitrary program.

C-9. Score scanning - "everyone has it" >> Also here, a separate program is sufficient. One could even consider to write a scan-to-MIDI program, with some encoding of notation artifacts in some extendible MIDI event (like text), so that this could be used by other MIDI-reading programs also. And maybe someone has even done this ...


Graphic elements

G-1. Reduced-size staffs.

G-2. Beams between staffs for keyed instruments are not too rarely used. Not having them is, unfortunately, a "missing feature".

G-3. Breves.

G-4. Placing arbitrary images into a score.

G-5. Correct sizing of accidentals and performance marks for cue notes (this probably would mean to have cue heads as a built-in feature).

Scanning through "Behind Bars" will probably unearth a few more features that are expected of a modern score editor (like the small rectangle notation of multi-rests, or numbered simile marks as used in brass band voices).


Playing

P-1. An option to indicate that accidentals are not significant on other octaves ...

P-2. ... and an option to treat double bars like single bars for flow control.

P-3. A builtin option when grace notes start to sound (before the beat or on the beat).

P-4. Explicit control about how the playing duration of notes is computed.

P-5. An "artificial player" - what Wallander's NotePerformer can do with Sibelius. Ok - that's a wide leap; but I'm allowed to have a dream :)


That's it. I think all this is doable. C-1, C-3, G-1 and then P-4 would be my favorites.

H.M.
32
User Tools / Bug (or unfortunate behavior) in nwcItem:Get()?
Calling nwcItem:Get('ControllerName') on
Code: (nwc) [Select · Download]
|User|EnvelopeMaestro.hmm|Pos:-6.5|Class:StaffSig|Bottom:-6|Top:-1|ShowLocation:below|MinValue:60|Pen:dash|PenWidth:0.7|Controller:71|ShowAs:Blend|ControllerName:"Select by number"
yields '"Select by number"' - i.e., a string including the double apostrophes. As these are added by the serialization to the nwc or nwctxt file only for strings with spaces (the string '7:Volume', e.g., is serialized without double apostrophes), I would have expected that this "implementation detail" is not shown when calling :Get().

Also, an embedded \" is returned exactly like that in the string: as two characters, a backslash and a double apostrophe.

Altogether, right now I would have to do some postprocessing on :Get()'s result to get the actual value, wouldn't I?

H.M.
33
Object Plugins / XText.hmm (0.92)
This is the plugin everyone has needed for a long time! ;)  Seriously, I wonder how I survived without this simple object that simply concatenates texts of different fonts. Here is a real world example:

<Image Link>

The plugin allows the concatenation of up to six texts. Additionally, the justification of the text can be selected. With justifications 'Left' and 'Right', there is a corresponding 'preserve width' option which is triggered by selecting 'Left and wide' or 'Right and wide'. For the non-wide justifications, there are boxed variants which draw a box around the text (if the box is too high, try to set a pinch value on StaffSymbols texts to reduce its height).

Multiline texts are supported: Just insert %br% or | (a vertical bar) in a text to indicate a line break. For some fonts, the line sizes get too large - try to increase the "pinch" value to reduce the size of such lines.

With the StaffSymbols or StaffCueSymbols fonts, a number of abbreviations are useful - they are replaced with the corresponding staff character:
  • dynamics: %ppp%, %pp%, %p%, %mp%, %mf%, %f%, %ff%, %fff%
  • notes: %1/2%, %1/4%, %1/8%, %breve%
  • clefs: %gclef%, %fclef%, %cclef%
  • accidentals: %sharp% or %#%, %natural% or %=%, %flat% or %b%, %##% or %x%, %bb%
  • rests: %rbreve%, %r/1%, %r/2%, %r/4%, %r/8%, %r/16%, %r/32%, %r/64%
  • others: %turn%, %tr%, %coda%, %segno%, %|% or %bar%

It is also possible to specify characters via decimal or hexadecimal codes:
  • decimal codes: e.g. %177%
  • hexadecimal codes: e.g. %0xf123%

Then, one can specify an arbitrary font installed in Windows for each segment by putting it between % and :% at the very beginning (in that case, the selected font class is ignored). This is helpful e.g. to use symbols like arrows from the WingDings fonts - and it does not use up one of the six NWC User font classes. See XTextExamples.nwctxt for examples (they need WingDings and WingDings 3 to be installed).

For "negative kerning" (moving the following text to the left), use %---...%. Each minus sign represents a little more than a quarter of a "left-moving" blank. This is useful to create e.g. an "fp" symbol, which can be done with the StaffSymbols text segment %f%%--%%p% (see XText_fp_sffffz_Examples.nwctxt).

Lst, it is possible to "jump back" to the start of a previous text with %-1%, %-2%, ..., or %-6%. This is useful to place text pieces above each other, e.g. for the numbers needed for figured bass or for piano fingering.

The name of the plugin, XText, allows quick selection via keyboard by pressing J X <down> <enter>. The X can be read as "extended" or simply as a reference (and reverence) to NWC's native texts, which are created from the keyboard with a simple X.

As special examples, I have added a score of two measures from Rachmaninov's Prelude in C sharp which is used in the German Wikipedia as a comparison example for score editors (however, the NWC output could not be added there, as only native features may be used, which excludes the "sffff" XText); and an excerpt from Diether de la Motte's "Harmonielehre", which explains the harmonic functions of the final six measures of Bach's famous Air in D. Of course, one can also write degree symbols using similar parameters.

H.M.
34
Object Plugins / Envelope.hmm (1.0) - supporting MIDI envelopes in NWC
Introduction

I have a dream: That I can work with NWC as easily as with a DAW to create music that is fun to listen to.

In these times, this means - I believe - that one can control one or more virtual instruments from NWC, like simple sfz players, a Kontakt container with embedded Kontakt instruments or some standalone instruments. Besides the notes, such instruments need additional control to produce realistic sounds, which is accomplished by the following means:

a) velocity of note-on and note-off;
b) a few predefined commands like "pitch bend";
c) bank selection - I will not talk about this here.
d) 128 MIDI controllers, which can be used to send some arbitrary data to the MIDI channel (and hence the instrument). Some of these have a predefined semantics, like "volume" or "damper pedal", but many others are simply labelled "general purpose" or even "undefined" in the MIDI standard; and especially these are used more and more by virtual instruments to control "breath", "pan", "blend" and whatever terms the instrument designers use for various properties and effects. These are essential to capitalize on the more and more realistic sound production capabilities of such instruments.

Controllers can be used to control effects on a very detailed level, e.g. increasing and decreasing the volume of an instrument in a continuous fashion. This finegrained control requires an intuitive user interface, which is typically provided in the form of "envelopes".

Here is a very simple musical piece as shown in the Reaper DAW:

<Image Link>

It consists of a single note, which is presented as a horizontal line; the green rollercoaster below it is the "volume envelope": It controls how the volume changes over time. The important thing here is that 
  • it is very easy to understand the envelope: It is immediately clear where the volume goes up or down, or where it remains constant.
  • Moreover, it is also very easy to change the envelope: In Reaper, as an example, you just shift-click on it somewhere and pull the line segments up and down with the mouse - "direct manipulation".

This is all fine and well, but for those of us who like to arrange and compose via traditional scores, using a DAW for envelopes does not really work. The problem is that arranging and composing are looping processes: There will always be "some more changes" to the score, and all the location-dependent post-processing in the DAW would be lost if a new version comes down from the score software, i.e., NWC. Thus, it is necessary to integrate these additional instructions into the NWC score. Now, NWC does have some support in the form of "Multi-point controllers" (MPCs), but these objects are, in my opinion, too limited: Not all 128 potential MIDI controllers are supported, and usability of MPCs is quite a lot worse than DAW envelopes.

To overcome these shortcomings, I started to write a new object plugin that would provide as much as possible of the envelope functionality.

NWC envelopes

The concept is as follows:
  • At the beginning of the score, an "EnvelopeMaestro" object defines up to 10 value ranges with their own names (this is useful for showing "ppp"..."fff" for a volume controller - see examples) and some presentation parameters for a controller.
  • The value of each controller is set by "Envelope" objects along the score that define the current value and possibly a value step.
  • The value line is visibly shown, like with DAW envelopes.
  • The value and the step are manipulated directly: The value is derived from the staff position (which can be changed conveniently with ctrl-shift-up and ctrl-shift-down), and the span is controlled by the built-in spinner, i.e., the + and - keys.
  • As a special feature, a step can be "inclined" a little so that the value changes not to abruptly; this so-called "attack" can be changed directly
    with the , and . keys.

Here is a screenshot from NWC of a "single note" piece with varying volume:

<Image Link>

The important feature here is that it is very easy to see and modify the envelope - I repeat this because it is the whole point of the plugin: The following change was accomplished by just selecting the envelope object, pressing ctrl-shift-up about 6 times; and + and then . a few times:

<Image Link>

NWC's GUI immediately shows these changes, and they can be heard when playing the score next time.

Here are two pictures that show the properties of the EnvelopeMaestro and Envelope objects:

<Image Link>

<Image Link>

Here are some suggestions for using the Envelope object:
  • Put each controller on a separate staff with a single line. This allows muting of each staff, which disables the controller; and it allows for more graphical control. On the other hand, the "Staff range", "Line Type" and "Line Offset" options allow placing two or more controllers on a single staff to save "GUI real estate". Last, it is also possible to put the envelope objects into a note staff, e.g. by setting the "Staff range" high above the notes.
  • Use half and eighth rests on the controller staffs to allow for coarser and finer spans. Quarter rests take up a lot of space and are visually more disturbing. Hidden rests do not really work, as they huddle together at the left side of the bars and therefore distort the span slopes.
  • When copying envelopes to another staff, make sure that their Maestros have similar range definitions so that the effect rates do not change.
  • Don't use a volume controller with piano, harpsichord, guitar and other instruments where the volume cannot be arbitrarily changed after note started.

A user tool 'Shift' allows shifting a group of selected envelopes of the same controller. The first Envelope or EnvelopeMaestro in the selection defines the controller to be shifted.

H.M.
35
General Discussion / Sending arbitrary MIDI controllers?
Hi -

I wat to go a little bit more into better sound rendering. So I have a purchased Soundiron's Olympus Choir Micro - and there, one can "do some things" with MIDI controllers 71 to 81 (e.g. "blend" with CC 71 or "offset" with CC 78 & 79).

The question is, of course, how can send such commands from NWC?

  • As I see it, the multi-point controller does only support a predefined list of controllers (1, 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 91, 92, 93, 94, and 95, according to the documentation)
  • So the only way to send a CC 71 etc. seems to be via an object that calls nwcplay.midi(#offsetSPP,'Command',#midiData1,[#midiData2]). The documentation does not indiciate that there are any limits to the sent data, so by using 'controller' as Command, 71 as #midiData1 and some value which the "choir instrument" understands as #midiData2, I should be able to do what I want, shouldn't I?

Is this correct - and if yes, is there already some sort of "generic MIDI controller object" which would support such scenarios?

Thanks for any enlightenment!

H.M.
36
User Tools / Copy corresponding parts of multiple staffs
There was a question about this in the General Forum; and I have felt the need for this also quite a few times. Of course, NWC does not have the concept of a "vertical selection", and it would be hard to define this in general, because there are no obvious "vertical lines" in NWC (and also not in music in general).

What my tool, therefore, does is to place the burden on the score writer: One has to add markers on each staff that delineate the segments. In practice, this can be done very quickly by putting the marker on the top score, copying it with Ctrl-C, and then repeating PgDn and Ctrl-V for all staffs (I do this with rehearsal markers and various dynamics for 2...4...8...20 staffs all the time). Of course, if one hits a "non-aligning object" (an extrem case is a multibar rest), the marker will - and all below - will suddenly land more or less offset to the left or right - that's just as it is. But markers near bars tend to align vertically nicely.

So ... the attachment contains the user tool and an example file. The user tool should be added to nwc2UserTool.ini with three lines, as follows (of course, you must replace the path so that it points to the directory where you store the user tool):

Code: [Select · Download]
C Copy segments=14,php\php.exe C:\Private\MyMusic\MusicalHelpers\hmm_CopySegment.php copy
D Delete segments=14,php\php.exe C:\Private\MyMusic\MusicalHelpers\hmm_CopySegment.php delete
R Reset segments=14,php\php.exe C:\Private\MyMusic\MusicalHelpers\hmm_CopySegment.php reset

Usage is as follows:
  • C copies the segment; two texts .S and .E delineate the segment; .I is the point where the segment is copied to (only the first .I is "seen" by the tool). When the segment is copied, it will be marked with .O at the end (in the same font/color as .I). The script is still a little buggy if the segment is copied to the left of its insertion point - the markers get confused
  • D deletes the segment marked by .S and .E
  • R removes all the markers (.S, .E, .I, .O)
The idea is that you can make the markers really stand out (see the example), so that you do not get confused afterwards what went where even if the segments do not longer line up well.

Unfortunately, Ctrl-Z does not work over the boundary of a user tool (even though NWC recognizes that the score has changed) - if the copying creates something wrong, one has to go back to a saved version.

What do you say? Might this - or something along these lines - be a solution or at least acceptable crutch until NWC gets "vertical selections and copy/pastes" somewhen?

Harald M.

// Edit: Rewritten script in OO way ... now seems to be bug-free  :D
37
General Discussion / Will there be a "isVisible()" API function?
Hi -

after having written my first plugins, I think that I would like a function that says whether an item's visibility would make it visible in the current print (depending on whether a single staff/multiple staffs are printed, or it is the top staff).
Is there any chance that such a function would be added in the future?

Regards
Harald

38
Object Plugins / ConnectBarlines.hmm (0.4)
Problem: In a choral score, you do not want bar lines connecting the staffs, because they interfere with the lyrics. But you want connected bar lines at the end of the staffs, as they help to group the staffs optically. Also, sometimes (e.g. at double bars or at a repetition), you need connected bars in between. See the attached pdf from Durante's Magnificat for an example.

Solution: Unselect "Bars Connected" for all staffs; and use this plugin to connect the bars at each line end and at specific places.

Details: Based on @Lloyd 's simple "ConnectBarlines" code, I have now written a user plugin that connects barlines automatically and with the correct lengths even in the presence of boundary objects that change the size or collapse staffs. The object can be used in two modes:

  • StaffSig - in this mode, the bar line at the end of each printed staff is connected up with the lines below/and or above (as indicated by the selector "Staff Location" with values "Top/Middle/Bottom Staff");
  • Standard - in this mode, the next bar line is connected.

For connecting bars to collapsing staffs, there is a flag "Active after next break" which mimicks the behavior of a "Boundary collapse" (which also collapses the staff after the next break). It's a little hard to explain - the demo score shows how it is used.

The demo score added is a "synthetic example" that shows all the features - it has no musical relevance whatsoever (as it does not contain a single note ...).
Of course, the plugin will automatically connect bars at NWC's automatic line breaks - you do not need a "line break staff" in your score as in the example (I only added it to produce a deterministic behavior for the collapsing section).

Thanks to
- @Lloyd for giving the initial basic solution to my problem; and encouraging the development along the way;
- @Mike for explaining the two iterator types - with that, it suddenly made "click" in my mind how I could do what I wanted;
- NWC, which has an interesting API that makes things possible and even not too difficult I didn't think would be possible.

I have also uploaded a .zip of all the test cases, for anybody who wants to modify the code and needs tests. In each test, it is expected that exactly the double bars are extended; and those going down from the first test staff must extend exactly to the "ending" line marking the boundary of the staff below.

H.M.
39
Object Plugins / Mensurstrich.hmm (0.4)
Here is a plugin that allows for "mensurstrich" bar lines (see e.g. this explanation in the Wikipedia). The plugin builds on code by @Lloyd and me for the "ConnectBarlines.hmm" plugin.

There are three examples attached:

  • Mensurstrich.hmm.Demo is a demo score that shows that the plugin works with boundaries; what to do about collapsing staffs; and how to switch off Mensurstriche.
  • DomineNeInFuroreBeginning shows how to set the first set of lines from Josquin des Prez's "Domine, ne in furore", as shown in this score at WikiMedia (without the handwritten initial symbols).
  • EtExsultavitBeginning shows how to add Mensurstriche to a single voice score. The example is the first line of the first score in a German PDF available here (as of September 2017).

H.M.
40
General Discussion / History does no longer work on Win10 / 2.75a
The history list ("Alt-F H") is now always empty when I start NWC ... It worked on my old Win8.1 laptop - but I think it already crumbled when I upgraded there to beta12 or beta14 ... Anyway, now, on my new (company) Win10 laptop, it is always empty when I start NWC  :'( 

H.M.
41
User Tools / Grace notes in adp_Parts
"Grace chords" are not modified by adp_Parts, as line 530 is
Code: [Select · Download]
elseif ($oType == "Rest" || !timeTaken($o))        // don't filter on rests or grace notes
For splitting my particells into orchestral voices, this is a small nuisance. I just changed the line to
Code: [Select · Download]
elseif ($oType == "Rest")        // don't filter on rests
... so far it seems to do what I want. Does anyone know whether there is some problem with this change (e.g. wrong computation of durations? ... but I will never have grace rest chords, I promise)

H.M.


42
General Discussion / Tiny bug with Ctrl-P in (my older) 2.75a Beta 10
In my NWC version 2.75a Beta 10 (mhm ... I might not have a really good version ...), pressing Ctrl-P for printing sometimes(!) marks the file with the little asterisk for "changed".
Selecting File->Print does not do this, and the asterisk cannot be removed with Ctrl-Z, and there is also no save confirmation when closing the file.
I just record this in case it is still there in newer versions.
I have attached a score where this happens.

H.M.
43
General Discussion / Connected bar only at end of score (and staffs) - is this possible?
Ist there any way to get the bars like in the attached example, i.e.
  • unconnected inside the staffs, but
  • connected at the staff ends?
I would also be satisfied if only the closing bar of the whole piece were connected.

(I tried a few tricksy things with a layered staff with transparent connected bars, where the whole staff is collapsed up to the end, and only the last closing bar is after a "cancel collapse"; but if I put this staff above the real staff, the connect does not work (it connects to the next logical staff, i.e. the one on which the hidden one is layered); and if it is below, the layered staff somehow "inherits" the "connect bar lines" property from the one below, so that once again, all bar lines are connected  :( ).

Did I overlook something obvious, or something not so obvious?

H.M.
44
General Discussion / Writing large scores + voices - NWC is, I have to say, a very good program
I just wanted to show you an example of writing a larger score with NWC; and writing a large score from which one can produce both a conductor's score as well as voices.
Here are links to the relevant files - I put them all in public domain, you can use them as you like (including performing them :-)); but you must cite me as original creator of the music and the files - somuch for the "legalese"):


The score is organized as follows:

  • The group "Skizze" ("sketch") is used (if at all) for writing the first ideas for melodic and harmonic lines (before that, there's usually writing by hand into a small music notebook)
  • The group "Dirigent" ("conductor") contains the "particell", i.e., all voices in "functional groups".
  • From this, single voices are extracted into "Score in C" ("Score in C-" are instruments not needed in the piece); when this is completed, a first MP3 is produced. I heavily use the great adp_Parts user tool for this.
  • Then, the transposed voices for score printing are created in "Standard" (again, "Standard -" are instruments not needed).
  • Finally, I might create special staffs for playback/MP3s in group "Sound".

Some groups contain "Kopierzeile" ("copy-over") staffs to help with transporting and transposing from one group to the next.

From the "Standard" group, I can actually easily print both a conductor's score as well as voices - I am very impressed that this works with NWC features alone, without any additional tooling.
Here are the requirements:
  • The conductor's score (containing all instruments) must have staff labels on each page; and have all (or all odd) measures numbered between the staff groups that have connected bars; must have rehearsal letters above the top staff; must be scaled so that all staffs fit on one page.
  • The single voices must not have staff labels, but instead an instrument name in the left upper corner; must have measure numbers at the beginning of each line; must of course also have rehearsal letters; must be printed on as few pages as possible; must have a staff size of 6 to 6.5mm (17..19pt), preferably equal over all voices; and - peculiar, but so be it - voices must always fill complete pages. The last requirement produces quite condensed voice scores with 14 staffs, whereas a score with 15 staff is split over two pages with staffs very far apart.

All of the switching between the two layouts (conductor vs. voice) can easily be done with "Single Staff Prints" and "Multi Staff Prints" visibility. A separate empty "Top" contains elements only necessary in the conductor's score. It is layered with the top-most voice (piccolo flute, in the example).

To switch between the printings, I have only to do the following in the "Page Setup" dialog:
  • for conductor's score: in "Contents", select "Standard"; in "Fonts", change font size to 11.5pt; in "Options", set "Staff Labels" to "All Systems" and "Measure Numbers" to "None
  • for individual voices: once, in "Fonts" set size to 17pt; in Options, "Staff Labels" to "None" and "Measure Numbers" to "Plain"; in "Contents", select the single instruments (no, I don't have a tool for that; writing the music takes maybe 20 to 40 net hours for a simple march; iterating through the voices is a leisure job of maybe 30 minutes, including a little bit of reviewing ... I won't automate this!)

I found a single feature (with endings) that irritates me a little - I'll post my wish how I'd like to have it changed in another thread.

Right now, I have no instrument that needs more than one staff for its "voice score" - examples would be piano, drums notated on more than one (single-line) staff, or maybe layered staffs in a single-staff notation. Therefore, the "Single" vs. "Multi Staff Prints" selector works perfectly. WHen I need such instruments I think working with "Top Staff Only" and maybe inserting a separate empty staff above such "multi-staff instruments" should do the trick ...

My staff system evolved over a few months, so there might be old elements in there no longer needed - probably not everything makes sense now. But cleaning up is not my first priority - rahter I'd like to write much more music ...

H.M.

P.S. Just that you don't think I am a "single march composer", here are links to MP3 and score of another one: http://www.hmmueller.de/MyMusic/20170113-bl.Argentina-Marsch.mp3, http://www.hmmueller.de/MyMusic/20170113-bl.Argentina-Marsch-Partitur.pdf ... but yes, right now, just learning to do instrumentation for wind orchestra, I (have to, says my teacher) keep closely to a single style and form. Next year, hopefully, I can/will get more creative :-)

45
General Discussion / Multiline staff labels
... is there any way to get them?

I need them for "1st Flute\n(not oblig.)" or "2nd Flute\n(= Eb Clarinet)" etc.

I only need them on the first page, so a little trickery with Text objects would be ok, but they should all nicely have the same line width, orientation etc., both when I print a full score and for a few (or single) voices.

... might be too much what I ask for ...

H.M.
46
General Discussion / A wish: Configuring MIDI playing length of notes
Problem: (Learning) arranging for brass band. I need articulations for two purposes:
  • listening to the result (which is of course always an approximation; but it should come close to reality)
  • printing the score (voices and full score)
However, the playing lengths I get from NWC are not what a (German) brass band would do with the articulation signs: non-slurred notes are played somewhat shorter; the "tenuto" bar is interpreted as a "portato", which means that notes are taken shorter than if non-marked ("between a staccato and a legato"); and the "marcato mark" implicitly is a shortening to a "not too short staccato".

As far as I know, NWC uses the articulations to multiply the note length by some factor - for staccato it's 0.75, for others longer than that. Now, it would be great if one could, in the options, specify the factors for "no sign" and all the various articulations, and maybe also for some important combinations (dot+slur is common); and that, moreover, that "shortening" factor could also be overridden per note (if a note is played, in some context, differently from what the naked sign means).

(Edit: Special wish: It should be possible to assign a separate factor to "Last note under slur", as it is quite common that such notes have an assumed (not too short) staccato dot on them).

If my model (that every note is simply shortened by a factor, without taking into account the note's context) is too simplistic, then maybe still one or two numbers per articulation (and special cases like last under slur; and combinations) could be provided to control that more complicated formula that says when the NOTE OFF occurs ...

Harald
47
Tips & Tricks / De-English-ized Coda notation
The flow control signs for coda have fixed text on them, the one starting the coda says "Coda" (which is still language neutral for latin-character using languages), the one going to the Coda says "To Coda" - not nice in a German score. There, instead, a simple coda sign is used at both places, and it is implicitly understood which one is the "go to point" and which one the "landing point" (see attachment for an example).

For some reason, it took me a year to find the obvious way to repair that: Make the flow controls invisible, and add a coda sign from the "Staff symbols" font at both places.

Maybe this tip helps someone who has the same problem.

H.M.

P.S. I wanted to paste the two pieces of NWC code here - but this seems not possible: The coda character is at the font position of the ligature "fi", and it seems it is impossible to paste a "|Text|..." segment with such a character here - or is it?

// Edit: Added typical gap before coda in attachments.
48
General Discussion / Adding H to ...Chord fonts?
Unfortunately, H is missing from the list of note (or chord) names. It is commonly used in German-speaking countries, but also e.g. in Denmark. Now I recognize that the "H" position in all the chords fonts is already taken - but I wouldn't care if this letter would be at any other place ...
Or is there a possibility that I can do that myself?

H.M.
49
General Discussion / Boundary offset works strangely - and looks strange
A boundary offset, in NWC 2.75, does not work as one would expect: If you insert a boundary effect with exactly the upper and lower offsets of the staff, the effect is not nothing - rather, lyrics are moved in some strange way.

Now, probably all of you know that, and I could accept that as "that's how it works".

The problem is that when I want to use boundary offsets to increase the staff heights at a few places where there are two lyrics lines; and return to the standard size where there is only one lyric line, then the two lines
  • in print are nicely tiled downwards
  • whereas in the staff - where I compose and hence need at least a somewhat legible score - the stacked lyrics are tiled upwards, into the notes and staff, which makes it impossible to read the notes there.

Does anyone have an idea how to overcome this problem? (If I should add an example, I'd like to add my complete arrangement instead of creating a "demo example" - would that be ok?)

H.M.
50
User Tools / "Compactify rests"?
The Parts user tool is helpful, but it leaves rest sequences like the following when a voice is completely deleted:

Code: (nwc) [Select · Download]
!NoteWorthyComposerClip(2.75,Single)
|Rest|Dur:4th
|Rest|Dur:8th,Dotted
|Rest|Dur:16th
|Rest|Dur:8th,Slur
|Rest|Dur:8th
|Rest|Dur:8th,Staccato
|Rest|Dur:8th,Staccato
|Bar
|Rest|Dur:4th
|Rest|Dur:4th
|Rest|Dur:Half
|Bar
!NoteWorthyComposerClip-End

(from this:

Code: (nwc) [Select · Download]
!NoteWorthyComposerClip(2.75,Single)
|Rest|Dur:4th
|Note|Dur:8th,Dotted|Pos:2|Opts:Stem=Down,Beam=First
|Note|Dur:16th|Pos:3|Opts:Stem=Down,Beam=End
|Note|Dur:8th,Slur|Pos:4|Opts:Stem=Down,Beam=First
|Note|Dur:8th|Pos:3|Opts:Stem=Down,Beam
|Note|Dur:8th,Staccato|Pos:2|Opts:Stem=Down,Beam
|Note|Dur:8th,Staccato|Pos:1|Opts:Stem=Down,Beam=End
|Bar
|Note|Dur:4th|Pos:0
|Rest|Dur:4th
|Rest|Dur:Half
|Bar
!NoteWorthyComposerClip-End

Is there an easy way (read: a tool) to rewrite these rest sequences (and, more generally, also sequences of identical notes and chords) to the shortest possible rest/note/chord?

(Additional "possible hiccup": Musically, it is not ok to span a note over a "beat boundary", e.g., the 4th and 5th eighth in a 4/4 measure - they must be written as two tied eights. But then again, in some rhythms - e.g. when the 4/4 measures are split into 3+3+2 eighths -, it is ok to write a single quarter note. I do not know which and how many additional parameters one would need to control this - a string of the form "2+2/4" for a standard 4/4 time signature or "3+3+2/8" with semantics "no note spanning the boundaries indicated by +" might be the most versatile ...

//Edit: No, this is not enough; one needs such a string for each subdivision: 1/1, 2/2, [none for /4], 3+3+2/8, 2/16 as a shortcut for the repeated group 2+2+2+2+2+2+2+2/16, meaning that no eights can start at an odd sixteenths; etc.

// Edit^2: I think this is about the 3rd or 4th time I invent this, isn't it?? - including the Edit^2 idea :) ... I should use "search" more often and not invent so many things ...).

Thanks for help!
Harald