Skip to main content

Show Posts

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

Messages - hmmueller

General Discussion / Re: Is there a program to check harmony rules?
Thank you also SEBC and Bart. I started looking at SEBC's links. Of course, I want to formulate my own rules, first - and not so important - as there are no real standard rules (not even that "no parallel fifths/eights" - there are at least Mozart fifths, but if you read Schönberg's treatise on harmony, even these "rules" are more a sort of "customs" and "perceived beauty"), but second, as Schönberg (and Hindemith? - I'll have to take a look) require additional rules for their first exercises which I'd also like check, as far as this is possible. So I'll look onto "flexible", programmable tools or the like more than others ... Bart, I'll certainly check out and try yours!

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!


* I have an inkling I've already asked this before - but I cannot find where.
General Discussion / Re: how to deal with orphan notes on a staff stretching to the right margin
First, in general, is not really a good idea to write independent pieces in a single score and then try to present them "separately enough". A better way is to write each piece separately and then paste the resulting images or WMFs into e.g. a Microsoft Word "master document". Yes, the workflow is not nice - with every change in your music, you must copy the resulting score into the master document, which might then need reformatting (I don't know whether one could include "linked images" in MS Word, so that the master document is updated automatically ...).

If you really want to put separate pieces into one NWC score, you can use "Gaps" - this is a sub-type of the "Boundary" object, which is created via Insert->Boundary Change or keyboard shortcut ]. At the bottom, you find the "Gap" option. What I often do, is to add a Gap and then a Transparent Bar with "Force System Break" enabled; by playing with the Gap's width, you can format the "orphan line" to a nice note spacing. But it's some trial and error ...

For a somewhat intricate example of such a score, see the attached (German) "Liturgieblatt", which I wrote for my church services.

Object Plugins / Re: Markup.rg
It did for me - if I (a) name the staff Tenors    (with about 3 spaces after the name), (b) set "Staff Labels" to e.g. First System and (c) view it with Alt-F-V (Viewer Mode, i.e. F11, doesn't show anything to the left of the staff's beginning, it seems). Nice usage as a StaffSig, BTW - I didn't think about that ...

Object Plugins / Re: Markup.rg
I have now completed all 8 sections. I'd wait for your suggestions & critique; and then, after some consensus, move it to the topmost posting I can change. Also, there is the question of whether, and how, to enable the object's "hidden options".

Object Plugins / Re: Markup.rg
Rick used whiteout cover large sections of unwanted staves – a typical instruction being /f-9/y-6/c9608.18/h0/y20/a270/c9608.8.
Interesting. However, for MarkupPage.rg, he invented a different markup language - e.g. with the repetition feature; and so he did not have to use the whiteout text property in such cases, it seems. Anyone going to write a manual for MarkupPage.rg?

Object Plugins / Re: Markup.rg
I would remove the word "somehow".
...I believe that Rick has used the command as its actual namesake, to "white out" some actual notation so it can be redrawn "properly". This take careful positioning.  Anyway, you might include one or more of these examples in your manual.
I have added this suggestion (with your name  :D ). I would rather not add more examples, but leave it with the few I have attached. Adding "intricate usage examples" could be done in additional postings, I'd say ...

Thanks for feedback!

Object Plugins / Re: Markup.rg - documentation proposal - part 1
This is my first proposal of a documentation of Rick's Markup.rg plugin. I have now completed all 8 sections; and invite you to criticize and amend it them, because, among others: I certainly do not understand all the object's possibilities; my first language is not English; I might misconstrue Rick's intentions; etc. Lastly, my explanations tend to be wordy - so if someone has suggestions (or merely suggests) to make them shorter, I'll try to heed such advice. Thanks for any help!


1. Basic functionality
Edit: Started on July 17th, 13:40

Rick's "Markup.rg" is a small plugin that can draw text - including music notation - with many parameters into a staff. The "how" and "where" of the text is specified with small commands - something like write the following text in italics, 3 staff spaces higher and at an angle of 45 degrees. Each markup is provided as a sequence of text commands, interspersed with the text to be shown - this is what is called a markup language, where language is a computer science term meaning "something textual with certain rules". As an example, we use such a markup language in this forum to make text bold with [ b ] ... [ /b ] or quoting a text with [ quote ] ... [ /quote ]. For controlling the text and line drawing with his Markup.rg object, Rick invented a small markup language of his own, which I'll explain in the following.

The "Markup.rg language" consists of small commands, where each command looks as follows:


  • Each command starts with a slash.
  • The following letter is, mostly, the beginning of a word describing what the command does. For example, there is a command starting with /f to set the font of the following text; or another command /a which changes the angle of a subsequent text (i.e., the text is written on an upwards or downwards slope).
  • The number after the command letter is interpreted differently by each command - I'll explain this for each command separately.

A complete markup consists of a sequence of texts and commands. Here is a first example:


This markup consists of five elements:
  • plain text small;
  • the markup command /m2, where /m is the command for "magnify", which changes the size of following texts. The number 2 in this command multiplies the font size by a factor of 2, i.e., following texts will have double size;
  • the word large;
  • /m1.5 changes the font size once again, this time increasing it by another 50% (it is now three times the size of the first "small" text, as 2 times 1.5 equals 3);
  • finally, the word huge.
The result of this markup can be seen in the attached file MarkupExample1_SmallLargeHuge.png. One can see that large is twice as large as small, and huge is 50% larger than large.

2. "State", or what a sequence of commands "remembers"
Edit: Added on July 17th, 17:07; edited July 18th, 15:25

The small-large-huge example above shows that while processing the commands and text pieces, the Markup object remembers the last size of the text, so that the /m command can multiply it by some factor. Actually, there is more information remembered:
  • Text information: Mainly, a current magnification, current font, and a current font style (italic and bold); in addition, a current text angle, a "whiteout state", a "stroke state" and a "lyrics offset" are also remembered.
  • Position information: Most important is the current position (a horizontal and a vertical coordinate) where drawing is done; additionally, a "home position" (only a horizontal coordinate) is also remembered - see more below under "Location commands".
The text information is only changed by explicit commands. The position information is updated by text drawing itself so that the text pieces are drawn nicely one after the other (and not on top of each other). However, it can also be changed with commands - in that case, drawing will continue "somewhere else" - a very useful feature.

The remembered information must start out with initial values. Those are:
  • Magnification = 100%; font = "Staff Italic" (font no.3); font style = regular, i.e. neither italic nor bold; text angle = 0, i.e. horizontal; whiteout = no, i.e. black text; stroke = no, i.e. standard text drawing; lyrics offset = 0.
  • Current position: horizontal position is at the previous symbol in the staff - this means that typically, one puts a Markup object after the symbols to be adorned with text or music notation; vertical position is the height of the object on the staff (which can be changed as usual with the Position value in the object's dialog or via selecting and pressing Ctrl-Shift-Up or -Down). The home location is initially at the same place.
As a side note, there is no color in the state; the color of the symbols drawn is selected in the Visibility tab of NWC's object dialog, and hence it cannot be changed inside the markup.

3. Text commands
Edit: Added on July 17th, 18:03; edited July 18th, 15:25

Here is a list of the text commands, in alphabetical order. Commands that are important in my opinion are in boldface. I'll give a few simple examples below:
  • /aangle: Change text angle. The current angle, in degrees, is set to the value provided.
  • /ccharacternumber: This draws the character with the given number. This is very useful if the character does not have a visible representation in the text box, which happens for special characters.
  • /ffontnumber: Change font. The fonts are numbered as in the drop-down box for a text, i.e., 1="Staff Symbols", 2="Staff Cue Symbols", 3="Staff Italic" (initial setting), 4="Staff Bold" etc.
  • /kstroking: If stroking is the number 1, text is written as an outline, i.e., only the boundaries of the symbols (characters or musical notation) is drawn. Setting it to 0 activates standard drawing.
  • /mmagnification: Change font size. The current size is multipled by the magnification factor to yield the new size.
  • /sstylenumber: Change style. The styles are numbered as follows: 1=regular (neither italic nor bold), 2=bold, 3=italic, 4=bold and italic.
  • /wwhiteout: If whiteout is the number 1, text is written in white. Mike suggests that this could be use to actually white-out notation as drawn by NWC, and then redraw at some better place in special circumstances. Setting it to 0 activates standard drawing.
Here are some examples - you can view them in the MarkupExamples2_Text.nwctxt and MarkupExamples2_Text.png attachments of this posting:
  • /a22.5upwards!/a-30down first sets the angle to 22.5 degrees and draws the text upwards!; then it does the same going down -30 degrees.
  • /f1  /c123 sets the font to "Staff Symbols", then draws two spaces and character 123. In normal text, this would be the { character, but in NWC's font, this is a block (two-bar) rest.
  • /f5reg/s2 bold/k1 stroked: With font 5 = "Staff Lyric", draw text "reg"; then, set style to 2 = bold and draw text " bold"; finally, activate stroking (while keeping style bold) and draw " stroked".
Each example is anchored to a "Broken Single" bar to the left of it.

4. Location (placement) commands
Edit: Added on July 17th, 19:41, extended 20:33

There are five of these. I present them in logical order. The first two influence only the current position:
  • /xhor.distance: Increase the horizontal position by distance; if distance is negative, this will shift the position to the left. In addition to this command, the horizontal position is shifted to the right by the text's width when a piece of text is drawn (there is one small bug here, which can be seen in the /a example above: If the text is going up or down, especially vertically, the horizontal position should only be shifted by the length of the projection of the text. But this is rarely a problem).
  • /yvert.location: Set the vertical position. Note that /x increases (or decreases) the position, whereas /y sets it.
The next two manipulate and use the "home position". This is useful if one wants an "anchor" that is different from the default home position:
  • /hhor.offset: Set the home position to the initial horizontal position offset by distance. In addition, this also sets the current horizontal position.
  • /rvert.location: Return the horizontal position to the home position; and set the vertical position.
Finally, there is a command for setting a "lyrics vertical position"
  • /vvert.location: ___NOT YET RESEARCHED___
The location commands are useful to place texts e.g. in multiple lines, as in the following example:


/h1 places the home position one notehead width to the right of the previous item (the broken bar, in my examples). After drawing "reg", /r-3 returns to this horizontal position, but now at vertical position -3, which is about one text line lower, to draw "bold". After this, /r-6 again returns to the home position still farther down for drawing "stroked". The result is shown as the last example in the MarkupExamples2_Text.nwctxt and MarkupExamples2_Text.png .

However, all the location commands are more important, and outright necessary to create complex musical symbols - see the respective section below.

5. Musical symbols
Edit: Added on July 17th, 19:41, extended 21:27

Musical symbols, in NWC, are nothing else than text, in a special font. Thus, Rick's Markup object can be used to create (non-sounding) musical notation, from simple to complex. In order to write such notation, it is useful to know the characters by heart that create musical symbols*. Therefore, here is a short list of the most important ones:
  • space (character 32) ... normal space
  • C (character 67) ... short horizontal line
  • F (character 70) ... tiny half note
  • G (character 71) ... tiny quarter note
  • H (character 72) ... tiny eighth note
  • _ (character 95) ... short space
  • d (character 100) ... sharp symbol
  • e (character 101) ... natural symbol
  • f (character 102) ... flat symbol
  • g (character 103) ... double-sharp symbol
  • h (character 104) ... double-flat symbol
  • i (character 105) ... whole notehead
  • j (character 106) ... half notehead
  • k (character 107) ... standard notehead
  • l...r (characters 108...114) ... rest symbols
  • | (character 124) ... short segment of a notestem
Open attachment AllSymbols.nwctxt for all other symbols - shown, incidentally, by using Markup.rg.
With these symbols, one can e.g. create Rick's first example:

  /f4Andante Expressivo  /f2/y0.5k/x-0.03/y1/c124/y2/c124/y0/f4 = 76-88

Here is a breakdown of the commands:
  • /f4 sets the font to "Staff Bold" for the subsequent text.
  • /f2 starts the "symbol part", with symbols reduced to cue size.
  • Placed a little bit above the base line (/y0.5), k represents a notehead.
  • Going minimally back with /x and up (/y1), the lower part of the stem is drawn (/c124).
  • Going up once more (/y2), another /c124 completes the stem.
  • /y0 returns to the base line, and with /f4 the rest of the text can be drawn.
For the result, see Rick's first posting in this thread (I'm not sure why Rick created the quarter note "from scratch", instead of using symbol G; however, it seems that his result has a more prominent notehead, which might be what he wanted).

* Unfortunately, you cannot use the "Char Map" feature of the Text item for this, as - for whatever reason - the numbers are offset by 61440 (hexadecimal F000) there.

6. Drawing lines
Edit: Added on July 18th, 13:30

Lines, like everything, are also text. The list above shows the characters in the "Staff Symbols" font that can be used for lines: C for the line, and space and _ for long and short empty spaces. With these, one can create lines as follows:
  • solid line: /f1CCCCCC
  • dashed line with large gaps: /f1C C C C
  • dashed line with short gaps: /f1C__C__C__C
  • dashed line with tiny gaps: /f1C_C_C_C
Using /f2, i.e. "Staff Cue Symbols", will scale down the line.

Using such lines, one can e.g. draw an open hairpin, which could be used for a crescendo after a system break:


Here is breakdown of the commands:
  • /f2 ... select staff font
  • /a4 ... slant upwards
  • CCCC... upper line
  • /r-2 ... return to home
  • /a-4 ... slant downwards
  • CCCC... lower line
The markup can be seen and studied at the end of attachments MarkupExamples3_Notation.nwctxt and MarkupExamples3_Notation.png. Rick's initial posting contains some more examples with line drawing in them.

7. How to create complex musical symbols
Edit: Added on July 18th, 15:25

I have, actually, already covered the assembly of complex notation in all the previous examples. But let me explain the conceptual idea here more explicitly: For a complex symbol, one creates a sequence of command groups, each of which consists of up to three parts:

    move to position; select font and other text properties; draw text
For example, the open hairpin above has two of these groups, one for each line:
  • first group: /f2/a4CCCC... positioning is implicit (we start at the note); then, set font and angle; finally emit the first line.
  • second group: /r-2/a-4CCCC... position somewhat below home; set new angle (font remains the same); and draw second line.
Using this group strategy, one can create arbitrarily complex notation. Here is, as a final example, Rick's creation of a cluster chord from p.248 of "Behind Bars" - see again attachments MarkupExamples3_Notation.nwctxt and MarkupExamples3_Notation.png:


It consists of the following groups:
  • /f1/h1k ... set font and home position; and draw first notehead (see bar 2 in the attachment. Home is positioned one notehead width to the right, so that we can attach noteheads and the slanted line conveniently; bar 3 shows that without that, the first notehead would end up to the left and need additional positioning);
  • /r1/x-1.8e ... place natural symbol (bar 4);
  • /x2.35d ... place sharp symbol (bar 5);
  • /r1/x-1k ... place next notehead;
  • /x2k ... and another one;
  • /r2k ... and the last one (bar 6);
  • /r5/a336/m0.55CCCCC ... draw a thin slanted line connecting the f-sharp to the chord (bar 7);
Incidentally, this "group think" is also very helpful when decoding a markup written by someone else (e.g. Rick): Splitting the object after each text helps to understand the structure of the symbol; and if this still is not enough, one can experimentally drop later groups and thereby find out what the earlier ones do, as shown in the "deconstruction" of the cluster chord.

This concludes my manual of Rick's versatile Markup.rg object - I hope you have learned how to tackle it, and how to create useful, but also esoteric musical notation for all sorts of purposes.

8. Features that are not active
Edit: Added on July 18th, 20:53

Rick's code contains a number of options that could be set to various values for modifying the drawn text. However, the code currently misses the necessary declarations to make these parameters visible to the user. These options are:
  • Width ... set the width used by NWC's layout to a value larger than 0.
  • Media ... show text only in certain contexts; these can be: edit, view, print, or selector;
  • Anchor ... use different anchor for text; the anchor method can be one of xyAlignAnchor, xyAnchor, xyStemAnchor, or xyStemTip (if I understand the code correctly);
  • Box ... surround the text with a rectangular box;
  • Ellipse ...  surround the text with a round box;
  • Index ... anchor text not to previous item, but to some other item farther away;
  • Justify ... adjust text; possible values are Right and Center.
  • Pen ... set pen for text drawing;
  • PgLeft ... use alternate location if at the left of the page (I do not yet understand how this works);
  • PrintWidth ... use different width for printing.
(Maybe we discuss enabling these options below.)

Object Plugins / Re: Markup.rg
@Mike - yes, of course.

But - being just a little bit confused - does this mean that you are against documenting it? I mean, this plugin has gotten its fair share of thumb-downs because of its arcane syntax (for non-programmers, at least) and "only Rick knows ...", but, on the other hand, one can definitely do some nice things with it. And it's small enough that documenting it takes just a few hours, I'd say ...

Object Plugins / Re: RepeatMark.test (0.5)
I just saw your question. Hm ... could you share (part of) your score? (and yes, NWC formatting of symbols via user objects has it's problems ...). How do you extract the parts?


Object Plugins / Re: Markup.rg
After my little experiment to recreate jfb's 5/8 tempo marker with this plugin, I have - once again - thought about "salvaging" this object, even if only to pay respect to Rick's expertise.

Rick designed a object for "computer wizards", with five very typical design decisions:
  • "imperative command" semantics - you do not say what you want; but what steps an "interpreter" should do to arrive at the result;
  • not caring for readable parameters for special values like notation and other symbols;
  • very terse single letter commands;
  • the semantics (behavior) are based on, and can modify an internal state.
  • no consideration for other readability issues, like comments or line breaks.
All these decisions are typical for "power user" languages - I could share examples of very useful languages I have designed myself according to exactly these principles (one is used in our company by a large number of software engineers building our flagship product).
However, all five, but especially the latter three, make the object almost impossible to use for people not accustomed to "computer think".

When I designed my XText.hmm object, I knew I would run into exactly these decisions and problems. It took me hours to find a user interface design that (barely) scrapes by (I hope) these problems, by, for example,
  • disguising the "imperative structure" as 6 visible "command areas";
  • having a more limited command repertoire visible as fixed parameters (Rick's y command is my "offset" field, for example);
  • adding special notation for important symbols (like %ff% for fortissimo, %1/4%, for a quarter note etc.);
  • no internal state besides the "obvious" "text position"; and only a single sort of command that modifies this state, namely the "jump back" %-1%, %-2% etc. (but even this may be beyond the grasp of a typical user ...).

From that experience, I thought about possible enhancement options for Markup.rg. Here are a few that seem to make sense to me:
  • I could just document what it does.
  • The code shows that there are a few possibilities that can, right now, not be used out of the box. I could enable that code (and, probably, fix bugs with it that did not surface until now);
  • ... however, part of that code seems not really useful: E.g., specifying that a Markup object is only active during Print or during Edit.
  • Usability makeover 1: One could split the "markup steps" into separate fields, somewhat like in my XText.hmm object. Because NWC has a limitation of 32 input fields, and Rick has 10 special fields in his code, this would limit the numer of steps to 22; however, in all his examples, the maximum number of steps is 13, so this would be sufficient. The single letter commands would either survive, but adding longer names (e.g. font= instead of /f) would be helpful.
  • Usability makeover 2: Separate name and parameters into fields; this would allow to select the command from a drop-down box, but the parameters would still remain terse text; and only 11 commands would then be possible.

Object Plugins / Re: (version 2.0)
Hi -

here is my solution, using the XText.hmm object. I use 4 text parts (but they are all in a single XText, so the whole thingy can be moved around easily):

1. The prefix text up to and including the (, with font StaffBold.
2. The two note symbols with font Staffsymbols (%1/2% and %1/8% for a half and eighth note, respectively, with a space character in between); they need a substantial "offset" downwards so that they are about at the same vertical height as the text parts.
3. A jump back to the start of the second text (%-2%) so that the Unicode symbol 035C (a sort of tie - I skimmed through the Windows character table to find it) can be placed between the notes with a few space characters; with font StaffBold.
4. Finally, the = 72) part.

By playing around with the spaces and the text part sizes, one can "format" the text somewhat so that the symbols are at the right place.

General Discussion / Re: Melisma
Hi Lorenzo -

Re images:

On Windows, there is a software called "Snipping Tool" (if you press the Windows key and then type snip, you should see it; Enter will start it). With it, you can take a "photograph" of a part of the screen, just as you see it. Crtl-S ("Save") will save it as a PNG (or a JPG, if you select this).

If you want to show the print result of an NWC score, it is often enough to press F11 (switch to/from "Viewer Mode") to get an acceptable image.

General Discussion / Re: Melisma (or, rather, slurs)
Hi -

Here are a few variants, using "slur markers" ("Insert" -> "Marker").
In each example, there is a marker in front of each of the three notes for lyrics "-tor", especially in front of the middle one: By this, you can pull the slur down, even into the stem of the note - see third example!

The third attachment (VariousSlursEditMode.PNG) shows the markers - they are visible in NWC as little triangles. I have marked three of them in yellow as they are a little bit hard to find  ;)

The fourth variant uses a beam with somewhat shortened stems.

The fifth version separates the slur logic (for the melisma) from the drawn slur:
  • There is a single "slur marker" in front of the first note, which is set to "Visibility=Never"; by this, the NWC slur becomes invisible (it is visible in grey in the ...EditMode image);
  • Separately, a slur is drawn with the user object, which can have any form you want.

General Discussion / Re: Staff scaling
Hi -

This can really only be known if one knows the source code. But a little bit of guesswork about possible problem spots:

- Scaling of glyphs ("things on the staff") is probably easy.
- Vertical layout will be hard if the "vertical granularity" is too coarse-grained (e.g., in staff size units); if it is using "double" or a fine-grained "int", it should be easy.
- Horizontal layout could be very hard, and very much work: Obviously, a smaller staff cannot be as "beautiful" regarding spacing - it must mainly follow the spacing of any larger staff and e.g. stretch distances between quarters so that they align with other staves. But of course, it is not simply possible to discard them in horizontal layouting (there might be space-defining sixteenths in it ...).

The problem is mainly that both vertically and horizontally, two concepts must be partially decoupled that are currently coupled: Ths size of things, and the spacing of things. But of course, they must remain coupled "where necessary", i.e. where size implies spacing. It depends solely on the current design (and maybe even architecture) of the source code whether this is "just work" or a "major rewrite of the base engine".

General Discussion / Re: About NWC and W10
Also no fundamental problems, for at least 4 years now. However, MIDI input for a "driverless" MIDI kyeboard does not work as of now. On the other hand, connecting to a MidiSport Uno 1x1 is no problem.

General Discussion / Re: Midi messages
Hi Jmoly -

what you want to do on some first level, is more or less similar to me, when I drive my crank organ directly from NoteWorthy. What I use:
- A Midisport UNO
- and a j-omega "MIDI-to-parallel" board, which has a single output for every note.

Whether you actually want the latter, or replace it with something you design yourself, you must decide: When you want to signal to your hands, you need to know which note is played by which finger, i.e., the "fingering" comes into play. But, by default, Noteworthy does not know this, so it would not know which finger should be signalled ... from here on, this will be a research project:

- Do you want to add information to an NWC score about the fingering (e.g. as text), which is then somehow transmitted in the MIDI channel to your device (not easy - NWC does not transmit the text)
- or do you want to add some "artificial intelligence" on your side that calculates fingering (very hard, I'll tell you!)
- or can you add the fingering as NWC lyrics, which are then transmitted in the NWC stream? (are they? - I don't know off hand)
- or ... whatever else ...

Another idea: Don't signal the note length, but signal only the "beat" (quarters or whatever). Let Noteworthy play the piece (slowly!) in front of you, so that you see the notes to be played; and at the same time let a "beat track" send beats to your hand, so that you can feel the beat and thus feel when you must go on to the next note (oh, of course you must learn to recognize the note lengths - but there are not that many different ones, so you'll manage this).

I hope you find some way forward!

Harald M.
Tips & Tricks / Re: How to make multiple repeats for multiple verses
Hi -

An invisible "local repeat" at the end, with the necessary "repeat count", should do what you want. See attached example ... (I have added a "VerseNumbers" object at the beginning - but this is of course not necessary).

Many regards!
General Discussion / Re: Hiding objects on a staff
Isn't setting "Extra Dot Spacing" to -1 (minus one) for alle notes sufficient?

Edit: Sorry, this will not remove the top beam :-( - I think there's no way to do this. The only idea I have is

Code: (nwc) [Select · Download]
|SongInfo|Title:""|Author:"<Name>"|Lyricist:""|Copyright1:"Copyright © 2021 <Name>"|Copyright2:"All Rights Reserved"
|Font|Style:StaffItalic|Typeface:"Times New Roman"|Size:10|Bold:Y|Italic:Y|CharSet:0
|Font|Style:StaffBold|Typeface:"Times New Roman"|Size:8|Bold:Y|Italic:N|CharSet:0
|Font|Style:StaffLyric|Typeface:"Times New Roman"|Size:7.2|Bold:N|Italic:N|CharSet:0
|Font|Style:PageTitleText|Typeface:"Times New Roman"|Size:24|Bold:Y|Italic:N|CharSet:0
|Font|Style:PageText|Typeface:"Times New Roman"|Size:12|Bold:N|Italic:N|CharSet:0
|Font|Style:PageSmallText|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|Font|Style:User1|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|Font|Style:User2|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|Font|Style:User3|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|Font|Style:User4|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|Font|Style:User5|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|Font|Style:User6|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|StaffProperties|EndingBar:Section Close|Visible:Y|BoundaryTop:12|BoundaryBottom:12|Lines:5|Color:Default
|StaffProperties|EndingBar:Section Close|Visible:Y|BoundaryTop:10|BoundaryBottom:10|Lines:5|Color:Default

(oops - missing clefs. Assume that the lower staff has a bass clef ;) )

General Discussion / Re: Custom Templates in NWC 1.75
Under Tools-->Options-->tab Folders, you can see the entry "Templates:". This is the directory where NWC looks for templates.
Subfolders of this directory are shown as tabs in the "Song Templates" dialog that comes up on "New...".

General Discussion / Re: any tricks for tied note decrecendo or crescendo?
You need a "multi-point controller". I have added an example; you might want "linear sweep" instead of "absolute", and it will typically - of course? - not work for piano, but only for instruments that actually can change their volume within a longer note.

The whole thing is a PITA; I have written a user object "Envelope.hmm" that dreams of a simple handling of MIDI controllers - volume being one of them.
But the plugin itself, and the problems subsequent synthesizers might have with rendering the resulting MIDI number stream, makes this more of a challenge than I'd like ...

General Discussion / Re: Why do fermatas and pedal markers only occasionally export properly?
* No, I have never had any export problem with tempo markers, and I use them extensively. However, for the last few years, I always use the following setup: (a) a separate tempo staff for the tempos, with only rests in it, which will not be printed; (b) typically XTexts for the visible tempo markers on the visible staffs. Thus, I never have two tempo markers at the same time - which will lead to random results.
What you can do, is to insert a "Breath mark" with delay 0 between the tempos - then, as far as I know, the order of the tempos will be preserved. See attached example.

* Re the fermatas, could you upload a file that has this export problem? The main problem I have with fermatas is that if you have them on multiple staves, then the delay of all of them are added up; for me, this is contraintuitive - I somehow expect the longest one to "win". Anyway, with my tempo staff approach, I now always give fermatas on the visible staves a delay of zero, and only the one on the tempo staff gets the desired delay.

* Re pedals - I don't use them, because I don't write for piano. But could you also upload a file that has this export problem?

General Discussion / Re: MIDI export to include Note_off
Oh sorry - didn't read about your specific pain. Well, I never heard of that - but there's a first for everything.

I don't know how technically savvy you are, but a typical script would look like this:

Code: [Select · Download]
midi2csv yourFile | sed 's/some regex with note_on 0/result with note_off/' | csv2midi.exe resultfile

where sed is a unix tool that is available in various Windows utilities. If this is too vague for you (which I'd suspect), I can look into a more concrete solution.

// Edit:
Ok - here is a solution that worked for a test file for me. You need the following 4 files all in the same directory:

(a) midicsv.exe and csvmidi.exe - I assume you have them both.
(b) The following VBS script in a file NoteOn0ToNoteOff.vbs:
Code: [Select · Download]
Set rxp = new RegExp
rxp.Multiline = False
rxp.Pattern = "Note_on_c, (.*), 0"
Do While Not WScript.StdIn.AtEndOfStream
  inp = WScript.StdIn.ReadLine()
  WScript.Echo rxp.Replace(inp, "Note_off_c, $1, 0")
(c) The following small batch file, e.g. as NoteOn0ToNoteOff.bat:
Code: [Select · Download]
@midicsv %1 | cscript //NoLogo NoteOn0ToNoteOff.vbs | csvmidi - %2

Now you can e.g. do
Code: [Select · Download]
NoteOn0ToNoteOff.bat Test.mid TestOff.mid
on the command line, and then TestOff.mid will be the same as Test.mid, except that Note-On-Zeros are replaced with Note-Offs.

- There is no error handling in my script, e.g. if you forget to mention one of the two files or if you specify the same filename twice.
- I think the tool does not handle non-ASCII characters (e.g. in titles or copyrights) correctly, because these are UTF-8 in the MIDI file (I think), but VBScript does not know this, or it does know it and outputs them in some other code ...

Maybe this helps as a starting point.

If someone is interested, the midicsv/csvmidi file format is documented at

General Discussion / Re: instrument setting
In MIDI, Channel 10 always is the percussion channel - it uses percussion sounds by default.
So, just select another channel in F2 (staff properties) --> Midi tab --> Channel (bottommost field).

Why does this happen? By default, NWC increments the channel number for each new staff, so your staves get channel numbers 1, 2, 3, ... For the first 9 staves (Staff, Staff-1, Staff-2, etc. up to Staff-8) , all is fine. But then - oh - comes the tenth staff (which is called Staff-9 - you can change these names, BTW! - and you should use names that are more musically inclined, e.g. S, A, T, B, Violins, etc.); and that staff gets MIDI channel 10, and there you are.

But, there is typically* no problem if multiple staves use the same MIDI channel, if the staves use the same instrument**. So, you can open F2->Midi immediately after adding a new staff (e.g. with Ctrl-A) and set its channel number e.g. to 1 for all vocals***, 2 for all strings, 3 for all piano staves, 4 for all organ staves, and so on. If you have more than 15 voices at the same time, then ... well, it gets complicated (you need "multiple virtual MIDI cables" then, says me). But even Mozarts later symphonies are below this threshold, methinks.

* Of course, there are more advanced setups, with different virtual instruments, where one needs different channel numbers. But as long as you do not want to know too much about virtual instruments or soundfonts, you dont need them, I'd say.

** I wrote nonsense before about using only one channel - sorry!

*** There is a problem if the same note is played on different staves with the same channel if the note lengths are different: Then the first ending of the same notes will truncate that note on that channel; if this happens, you ... well ... need different channels again for the staves. Back to square 1.

(This whole text got out of control. I wanted to give you a one-line answer. Then I made a mistake. And then I started explaining away. Sorry.)

General Discussion / Re: Using Soundfonts with NoteWorthy Composer
I'm using MIDI in a handful of configurations - driving a MIDI-controlled crank organ from it, composing and feeding it into Reaper (a DAW), recording MIDI streams from two keyboards, and in between using non-MIDI audio from keyboard to (physical) mixer to computer. The result, in a word: It's a nightmare. If you change anything, it won't work - or it will. No idea when the first, and when the latter.

Essentially, the standard behaviour after some change - any change: add/remove USB-interface; listen to audio with Reaper, then with VLC; etc. - of either the mixer or the USB-MIDI interface or Windows (that sleep mode, for example) or Reaper or some other program I need is that it does not recognize some channel. Once in a while, I believe I have found the "real trick" (order of switching/enabling/starting programs and options) so that I can deterministically start some recording or playing session ... but max 3 attempts later, it won't work.

My rule now is: Plan at least half an hour, better one hour for getting all gear up and running. If it doesn't, switch off and on everything from left to right, and then right to left, and finally in random attempts until it somehow starts working (it always does, or did up to now); and finally (when doing a session with other people) always have something to do in that hour if it works like a charm after a minute, for whichever reasons beyond my understanding, until those others arrive an hour later.

Not very helpful, probably, that rant of mine; but ok - it's a hobby.

General Discussion / Re: Rehearsal Marks
Harald, do you usually put the marks in each part? I have been putting them with the instrumental part (as in a flute part) but not with the piano part or choral part. The score for the pianist and choir will be printed with all parts.  I will print the instrument part alone, for ease in playing with less page turns. My composition prof told me to give the instrumentalist the full score, though, but the players don't seem to prefer that for the performance.
I put the marks in each part with "Visibility: Top staff only", so they come out on top regardless of which scores I assemble for various people. One exception: For a larger score (already 4 choir voices + 4 strings + organ = 10 staves), I'd put a layered staff with invisible rests for "distancing" above the organ with all the marks "always visible"; this staff is only printed in the full score, so there, the marks are also "8 staves down there".

And, I now always print measure numbers every other measure at the same places, i.e. on top and "some 8 staves lower" - I hated to wait for consensus on the public computation attempts "Ok, let's start in measure - ah, 57, 55, ok ... that's, well, 52 - (choir, from basses and one soprano:) no, you mean 53 - (conductor:) ah, yes ... (lifts hand) (choir: starts singing at two, sometimes even three different places)".

Re the various scores, for our(!) choir, the result of various discussions was:
  • Choir doesn't want to see anything instrumental - most of them cannot read/follow it - so they get a "pure choir score", with a few cue notes before an entrance if they are silent longer than say 4 measures.
  • Also I, typically playing organ or piano, do not want a full score, but a rather thin one - usually piano/organ with soprano voice and/or a leading soloist or something like that.
  • Even our conductor sometimes gets only a "condensed score" - she is more of a choir conductress and lumps e.g. all strings together - so she likes two piano-like staves for the strings more (and neither she nor I can fluently read a viola clef, so we are happy to bury that voice in the cello staff ...)
But of course, this is "specialized established practice for this choir" ...

General Discussion / Re: Rehearsal Marks
Here is an attempt at a trivial example; I also use BarCounter.hmm, because I have found that putting a measure number on every other(!) barline helps immensely in rehearsals.

General Discussion / Re: Changing Page Size
What you can do:

(a) Make the margins a little smaller - maybe this tweaking is enough.

(b) Tweak the staff labels - it helped me sometimes to remove e.g. a dot after P. (piano) or the like.

(c) Change the page size: Install a separate - preferably PDF - printer (e.g. PDFCreator), go to its (advanced) settings and select "User-defined size", where you can define an arbitrary page size. You'll get then a PDF with that size; how you get this to real paper, is another problem (typically, you would either scale it down to "fit the page" - e.g. letter -, or print it on larger paper - e.g. A3 - and cut the paper down). If you use this PDF printer only for NWC, it doesn't interfere with the rest of your Windows (e.g. Office) use - otherwise, you have to switch the printer and page-size every time you use the printer.
If I do things like that, I write a documentation for myself into the "Comments" of the "File Info" (Ctrl-I), e.g. "For printing, use PDFCreator with a user-defined size of 200x400mm" ...

General Discussion / Re: Beaming compound-time
I have added pages 172-181 to the PDF behind the link in the posting above - although there's not much in there we could use here, I think: constancy of timing at changing metres is a tempo issue, polymetres and non-coinciding bars [NWC can do that :) ] as well as polytempi do not have an effect on note lengths and beaming. Ok, variable stress from p.179 is something I consider above (the 4/4 + 8/8 remark); and mixed metres can of course be done with hidden time signatures. Non-power-of-two denominators, however, are out of our scope (Gould writes "traditional multiples of two", but, mathematically, means powers of two, of course; as she gives a non-traditional example of 4/6 in the next sentence).

General Discussion / Notelength and beam auditing - a first attempt of a specification
I have thought about this for a day or two, and scribbled various things on a few pages of notation and programming notes - here is what I arrived at. This specification tries to be as general as possible, i.e., it treats the problem somewhat "mathematically" (typically, in my experience this leads to less complex programs, which therefore are quicker to complete and easier to test - hopefully :) ). Thinking about a few details has convinced me that it would take a few (say 3 or so?) full days to get this up and running, a time which I do not have right now; therefore I write this specification, so that I or whoever else can use it as a stepping stone later-on - but of course also for discussion.

Here is a short overview what this audit function might do:

  • Note, chord and rest lengths should be distributed in each measure according to standard rules (see e.g. Elaine Gould, Behind Bars, pp. 160-164, 166-169, 171; here is a scan of the relevant pages, also for the following references).
  • Beams should connect notes and chords according to standard rules (see e.g. Elaine Gould, Behind Bars, pp. 153-155).
  • Auditing should be possible for a complete score, or for a selected section of a staff.
  • It should be possible to mark measures as "do not audit" (in the same way that existing beams prevent NWC's "Automatic Beams" function from beaming notes differently).
  • The semantics of the score should not be changed - this is a complicated topic, see for example the attached file "NotTheSame.nwctxt".
  • It should be possible to specify whether dotted and double-dotted rests should be used or not.
  • Support for rest chords and "two-voice chords" with different lengths of the two voices may be restricted.
  • The main and secondary beat patterns should be derived from the currently active time signature.
  • It should be possible to specify alternative beat patterns for a time signature (e.g. 3/8 + 3/8 + 2/8 for a 4/4 time signature); a scale of eight eighths would then be beamed as 3+3+2; and two half notes would be rewritten as a dotted fourth tied to an eight and then two tied fourths.
  • Alternative beat patterns should be remembered in pieces with changing time signatures; thus, one could use e.g. a 4/4 and a hidden 8/8 to alternate between beat patterns (see e.g. Elaine Gould, Behind Bars, pp. 179-180).
  • The beat pattern for a measure (i.e., all the notes and rests between two barlines) that is shorter than the current time signature indicates should be the left part of the full beat pattern, except for the first measure of the score or selection, which should use the right part of the full beat pattern (this might be is helpful for incomplete first measures); the beat pattern for a measure that is longer than the current time signature indicates should repeat the complete pattern from start (this, and also the shorter measure logic, is certainly an edge case; the definitions are here "just to be complete"; typically, with varying lengths, one should use hidden time signatures to specify the intended beat pattern).
  • Transparent barlines should not be used for measure demarcation; however, chords and rests should be split at a transparent barline (a custom use of transparent barlines is to split long musical measures onto two lines).
  • Repeat barlines not at the end of a measure as defined by the current time signature should be handled like transparent barlines.
  • Beaming that cannot be done with NWC's built-in beaming (which would therefore require e.g. Beam.hmm objects) need not be supported (this might be a version 2 feature; see e.g. Elaine Gould, Behind Bars, pp. 156-157).
  • Rewriting segments that cannot be written with NWC's built-in two-voice chords (without staff overlaying) need not be supported; for an example that requires a chord with three different note lengths see the attachment VeryHardToRewrite.nwctxt.

Even though there are some requirements in that list that seem very special or even esoteric, removing them does not significantly change the complexity of the algorithms, as far as I can see. Only adding the "need not be supported" items would create major additional algorithmic design.

I'll leave it at that - unfortunately, my days until January 6th are already packed with this and that and even more, so I will not start this multi-day software adventure so soon. But maybe "soon enough"  ;D
General Discussion / Re: Beaming compound-time
The problem, in a nutshell, is that there are actually no hard rules. It might seem so, but the main rule - also according to Elaine Gould - is that the main beats must be recognizable; but of course, there's 4/4 music where the main beats are distributed as 3+3+2/8, and which the player thus expects to be notated as such.

However, there is of course a host of "common patterns" for music printed in the 19th to 21st century that follow relatively simple rules - e.g. the 6/8 patterns David expects to see. Most probably, someone already has compiled a decent type of abstraction and a resulting list of such patterns depending on "rhythm structures" (anyone here?) - but it shouldn't be too hard to get an 80% list that could be made 90% or so useful ...

General Discussion / Re: Beaming compound-time
I actually started writing such a beast 2 or 3 years ago, not so much for notes, but mainly for rests: Various "deletion tools" (e.g. the - for me - all-important adp_Parts.php tool), if removing all voices, leave behind many small rests, which need to be combined according to those "beat rules" ...

... but I've never finished it, mainly because it gets "interesting" with different-notelength chords. Might be a Christmas home exercise - I'll look into it.

General Discussion / Re: Very Sad news.
That's very sad to hear. We will always have his postings here, and learn from them also for future scores - may he rest in peace.
General Discussion / Re: Creating a .bat file to convert all files of a folder to NWCTXT.
Yes, in Windows, three-letters extension patterns match also longer  filename extensions. What you can do:
Code: [Select · Download]
for /F %i in ('dir /b *.nwc ^| findstr /e .nwc') do ...

Re the "goto EOF:", this is no real goto, but .bat's code for "return".

And my version with CALL and a separate block for the things to do is , I think, helpful if you want to execute more than one command in the loop. This is already helpful for adding some echo's for debugging. There is also a different method with parentheses
Code: [Select · Download]
for /F %i in (...) do (

Here are some links:


// Edit: | in for loop needs a ^ in front of it. Aha.
General Discussion / Re: Creating a .bat file to convert all files of a folder to NWCTXT.
Put something like this in your .bat file:

Code: [Select · Download]
for %%F in (%1\*.nwc) do call :DoIt %%F %2
goto :EOF

echo %1 %2
goto :EOF

Instead of echo %1 %2, do your work there: %1 is the nwc file in the input folder, %2 the output folder. There are ways to create a "naked" filename from %1 ... I'll look them up, but my battery is running low ... so I'm in a hurry ....

General Discussion / Re: Impossible composition, Beethoven style | Composed by AI | Musica ex Machina
Nice. I like m. 71! It sounds a little bit like the "pieces" I improvised on the piano when I was 16 - loud, fast, "Beethovenian", resulting in much headache for my mother (she was a musician - singer - and prone to headache) ...

One can see the patterns (harmonic; harmonic progressions; melodic; rhythmic) the machine has learned, and also some obvious ones (especially longer-range ones) it completely missed.

What I somehow wonder: Was this intended as a piano piece for one player? If so, doesn't the program have some idea of how large my hands are?

And: The 3/4 time signature is obviously and blatantly wrong for most parts (some have no rhythmic structure at all, there you can't tell). Did you add the 3/4 after the fact, or did the AI believe this was what it used when "composing"?

There is this article in the Guardian about a text written by an AI - it seems somewhat similar in that also there, one can see the "patterns that made it"; and how only huge editing gets you an acceptable result.

Of course, "doing things like XY" will be done by a machine at some point of time - just as power dredges completely replace people for excavating. Money to be made there, and "copying composers" will lose their jobs, just as all the (poor) shovelling people.

General Discussion / Re: Piano Key Touch Playback Settings
I think this was when you asked "I need to make the piano sound (a lot) softer" some time back.

By definition of a real piano, there is no way to do this. You cannot go to a Bösendorfer grand and tell it "play softer" (with the keys pressed the same as before). The only thing that the piano player can change (besides timing and pedals, of course) is the velocity of the hammer striking the string.

With electronic equivalents, the rules could be arbitrarily different - but they mostly aren't, or aren't in a simple way: I.e., a computer simulation of a piano could do anything it likes with the MIDI commands it gets. But this behaviour is outside the realm of NWC - you need to use the right piano synthesizer. There are at least hundreds of piano synthesizers out there - from simple soundfonts (where you cannot change the softness, because they are typically recorded from a single instrument; but you can select the soundfont you like) to elaborate software "virtual instruments" that simulate the physics of a real piano, which have typically many parameters to adjust the overall sound - so you should be able to change softness with such a beast.

So, if you want to select the right softness, you need to find a synthesizer (be it a soundfont or a virtual instrument software) with the softness you want (on a software, you might - as I saied - be able to control it with some GUI controls). If you want to change the softness in the course of a piece, you either need to use a virtual instrument that can do that (typically, virtual instruments allow you to change all their parameters with NRPN messages), or you must change between various instruments (which would then be mapped to e.g. different soundfonts that you collected and selected beforehand) along the way with instrument changes.

Just as examples, on my Casio keyboard, I have about 10 different pianos from which I can select; on my small Yamaha synthesizer, I have more than 20 (I think), and I can (or could) control about 12 parameters of them - I never tried out all of them; and here on my laptop, I have some 10 or so piano soundfonts. Among all these, there are very soft ones, and very hard ones, and some that are soft in the lower range and harder in the upper range ... I select what I find necessary; and I could even change between them along a piece with NWC instrument changes - but I have not yet done that.

Summing up: Welcome to the infinite and, for me, horrifyingly large world of sound production. It can cost you a lifetime, and a fortune ...

Announcements / Re: Forum/Server Upgraded (August 2020)
It works for me - I just tried it, and I could connect; and then online-sync and another one.

Firewall problem? Rules of your local VPN (if you are in one - my company has had quite weird exclusions at times)?

General Discussion / Re: Quarter note equals quarter note, etc.
I'm not seeing any font that allows me to input [quarter note]=[half note]. I see the quarter note and half note symbols in several fonts, but these fonts seem to lack an "=" symbol.
In addition to Mike's object, the XText.hmm object is designed to combine arbitrary text snippets from various fonts as a single object. The example file XTextExamples.nwctxt in that posting has a few examples of tempo equations.

Tips & Tricks / Re: How to hide rests to prevent collisions with notes in layered staffs
where to find |Rest Properties|Visibility (tab)
The properties dialog of anything (a rest, a note, a bar, ...) can always be opened like that (this is exactly like in all other programs in Windows - NWC is a very Windows-conformant program!):

(a) highlight the object, e.g. the rest - you do that by placing the cursor to the left of it and pressing Shift-right_arrow (right_arrow is the key to go right).
(b) then you either press Alt-Enter; or you press right-click on your mouse, which shows a small menu - the last entry is "Properties ...".

For a rest, you will there see a tab "Visibility" (you can either get there by clicking on it; or - also as always in Windows with tabs - by pressing Ctrl-Tab ... where Tab is the computer keyboard key with the two arrows on it).
And there, you see the "Show on printed" combobox, where you can select "Never".

I have added a small gif that shows what to do ...