Skip to main content

Messages

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

Messages - hmmueller

501
Object Plugins / Re: Breve.test (0.1)
In my experience, while NWC does remove all space for a note on the current staff when you mark it as not visible. However, when there are multiple staves, it does seem to keep them lined up with the same note position on the other staves.
Mhm - I wrote a minimal user tool + example (see attachments) to check what happens - the result is quite chaotic even with two staffs, I think.
// Edit: ... but for whole notes only, the alignment should work - with the exception of a dotted whole note on another staff, I assume. However, I would also like my breves to be aligned usefully for a single staff ...

But back to the breves: I honestly tried using the letters in various fonts for the "square" notehead - but nwcdraw.text does not output characters with code > 127  >:( ... does anyone know why this might be the case? (the breve heads are at 177 in Lawrie's suites). I have uploaded a version 0.2 which would support these chars, but - well - it does not work :(

And I have another question: Can a plugin somehow detect whether a font is actually installed? .setFont does not return any "success" value, and even querying .getTypeFace() afterwards just returns the set typeface, even if it is 'asdfghj' or some other nonsense. This seems to be the way the Windows font system works ... but I would like to give the user some - any - feedback if the square breve head cannot be drawn (my ugly kicked-over I's, on the other hand, always work ... as long as a "Times New Roman" font is present ...).


Re the ready-made glyphs (whole notehead and 2 or 4 vertical bars): I do, right now, not bother that much with them - drawing the bars is really no problem; and I started the whole object actually only because of the square head (I only found out later about the other ones - we do not use them here). But of course, I might use them if my primary problems are solved ...

H.M.
502
Object Plugins / Re: Breve.test (0.1)
.. doing a short break, so I'm online :)

(a) CueHeads detecting Breve should be possible - I already thought of this, but the creators of both would have to disucuss this :)

(b) Implementing width and marking the chords as hidden: I actually started with this, but it did not work out at all (maybe I did not try all possibilities). The main problem is that hidden notes are not aligned by NWC with other notes, and therefore it is alsmost impossible to place the breves lined up with notes on other staffs; it gets worse with (*) accidentals, (*) the "increase spacing" option in the page setup, (*) lyrics (breves are mostly useful for vocal music) etc. That's why I ended up with the blank noteheads ...

(In the course of this and - upcoming - considerations about RepeatMarks, I would wish that (x) NWC had more than one - distinguishable - "quite" blank heads; and (y) a way to insert additional, note-aligned spacers when drawing (my idea would be that width(t) could return some more sophisticated result ... but that's long-term ...)

H.M.
503
Object Plugins / Re: Breve.test (0.1)
That's why I like this ".test" idea - try something out, get told that there are better ways - improve, rinse & repeat until it's finally something which might be usable :)

Thanks to both of you - we'll drive home now (5 hours drive) ... then I'll use this glyphs.

H.M.
504
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.
506
Object Plugins / Re: Beam.hmm (0.4)
Thanks (I had a wrong option in my string search ...) - I have now replaced the file with one that has all User Fonts set to Times New Roman.

H.M.
507
Object Plugins / Re: Beam.hmm (0.4)
I have now looked into the plugin and into the examples - none of them contains any string that contains the letters "German" anywhere. So how can it be David stumbles over that font??? :o - any help is appreciated!

H.M.
510
Object Plugins / Re: Beam.hmm (0.4)
1.  I don't have MusikChordSansGermanic and it isn't listed in the Fonts section of the Scriptorium.  Where can I download it? Does it need to be set up as Userfont1, or something else in Page Setup Fonts?
Dont set it up - I'll repair the examples so that they dont need it ... just my error. But this is no problem for your scores.

3.  Alert = "Detected 4 unknown user objects in Stemlets.nwctxt"
If you go to Tools-->Options-->Folders, what is the folder near "Object Plugins"? Is this exactly the folder where you installed (copied) the Beam.hmm.nwcuser.lua file to?
  • If not, then this is the problem: The file is not where NWC looks for user plugins. Place the file in that folder, and then hopefully all works fine.
  • If it is, please check whether you installed it under some non-admin rights, so that it is not visible under normal Windows user rights. I confess I dont fully understand Windows here, but I know form first-hand experience that such things happen - I then open a cmd shell as "Administrator" and do the copying of the file in it, and then all works ... maybe you could try that.

4.  See attached Stemlets.PHN (9.79 KB) 
Thanks - that's why I am quite sure that the plugin is "somewhere else" than NWC looks for plugins.

5.  I opened the nwctxt file in an already open NWC2 session.  NWC2 never generates error messages for me when I open the program.
Good to know! - if that had happened, there would be an error in some source code which NWC finds on startup.

I hope that helps ...

H.M.



512
Object Plugins / Re: Beam.hmm (0.4)
Hi -

I don't think it has to do with fonts. First, the .nwctxt files do contain the font names embedded, so one should see in the page setup whether there would be any unusual fonts.
But second and more important, I do not use fonts, but rather draw the beams with NWC's plugin machinery (in concrete, the nwcdraw module; the code for drawing a beam is copied verbatim from the nwcdraw documentation).

Just to make sure - I use NWC version 2.75a.2.

And I have attached an image on how "Stemlets.nwctxt" looks in my NWC ... what does yours look like?

//Edit:
Do you see any alerts - either
  • when opening NWC (which would indicate a problem with Beam.hmm's source code),
  • or when opening an example .nwctxt file (which would either indicate that Beam.hmm is not installed at the expected folder, or again an error in the source code which for some reason does not occur on my computer)?

H.M.
513
Object Plugins / Re: Beam.hmm (0.4)
I have now upgraded the Beam object from .test to .hmm. There are quite a few changes for this first "production ready" version:

  • Most important, the beam options for notes and rests under the beam have been changed from obscure symbols to (somewhat) understandable texts.
  • The selection of the number of beams for a beam group is now on the start note of the beam group , i.e. the note after the reduced number of beams (similar to NWC's "Beam group start" option) - this seems a little more intuitive than the previous attempt, where one specified the beam reduction on its left side.
  • The maximum span of a Beam object is now 16 notes and rests. If a longer beam group is needed, two or more overlapping beam objects can be defined (see extreme example in "ComplexGrouping.nwctxt").
  • A span of 1 is also supported; this can be used for single beamed notes (see last example in "FractionalBeams.nwctxt").
  • Stemlets for rests compute their length correctly.
  • There is a rudimentary option for stemlets on notes (see last example in "Stemlets.nwctxt").
  • Some more examples have been added.

As always, I'm happy about any comments!

H.M.
514
Object Plugins / Re: Beam.test (0.3)
0.3 has rounding at some crucial places, so that one can always (I hope) create horizontal beams; and, after the suggestion of Mike, the spinner now uses 0.5 increments. Also, I added another example file.

H.M.
515
Object Plugins / Re: Beam.test (0.91)
0.2 has an additional property to keep non-through-running beams together - the problem came up with an example on page 315 of B.B.
0.91 provides smaller beams for grace notes as well as CueHead notes.

Here are the six remaining example files:

  • "SpeedVariationBeams" shows a notation that would drive our church choir crazy. This notation requires that all notes are eighths, because otherwise each user object (there is one for each slanting beam) would draw a second, unwanted parallel bar; if one wanted to play this, the varying tempo would have to be created by a tempo track.
  • "Stemlets" shows a notation that connects rests to a beamed group. E.Gould writes: "This notation is helpful for passages of complex rhythms, especially where rests occupy the start or finish of a subdivision of a beat". One could also use it to mark special notes under a beam, as my last example shows.
  • "DoubleBeams" shows double beams on a single staff, which can e.g. help with quickly notating SATB scores on two staffs.
  • "Tuplets" shows how with tuplets, one can e.g. draw one single beam above somewhat lengthened sixteenth to create the impression of "short eighths".
  • "DoubleStemmedBeams" (since 0.7) shows overlapping beams, with additional non-beamed notes on double-stemmed chords.
  • "GraceBeams" (since 0.91) shows small to tiny beams with grace notes as well as CueHeads.

H.M.
516
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.
517
Object Plugins / Re: XText.hmm (0.7)
Another update (I think it's the last one): I added explicit negative kerning, i.e., the possibility to move a piece of text to the left. A simple example is the composition of an "fp" dynamic signature from the existing f and p dynamics, which can be done with the StaffSymbols text segment %f%%---%%p%.

The attachments of the primary posting show some more example usages.

The addition of this feature required a complete rewrite of the internal logic, so I may have introduced new bugs - if you find any, let me know!

H.M.
518
Object Plugins / Re: XText.hmm (0.6)
Ha - you got me! ... yes, I considered it for a second, but I have not yet "interned" (in my mind) the Lua patterns (too much experience with the "big" regexps of C# etc.), so I am a little too cautious there. But right after uploading the script, I thought that the following much simpler code should work:
Code: [Select · Download]
  ['%%1/8%%']     = 'H',
  ['%%ppp%%']     = 'P',
...
    for k, v in pairs(replacements) do
      text = string.gsub(text, k, v)
    end
If you read this - do you have any complaints? - if not, I'll simply replace 0.6 (no functional change).

... I just did it :)

H.M.
519
Object Plugins / Re: XText.hmm (0.5)
As Lawrie points out, the dynamic signs are in the StaffSymbols font, so you could just find them there ...

... however, in version 0.6 I have added a number of abbreviations for quite a few characters from that font: Just select font StaffSymbols, and then use e.g. %ppp% or %f% or %cclef% or %#% etc. For all symbols, look into the help text. If you want some more symbols added, just tell me (including the abbreviation name you think is helpful).

XTextExamples.nwctxt (attached to the primary posting) contains some examples for this, e.g. the "sempre pp" xtext.


A technical remark and question: The code simply replaces the abbreviations with single letters, as defined in a table with entries like
Code: [Select · Download]
  ['%1/8%']     = 'H',
  ['%ppp%']     = 'P',
Thus, for %ppp%, the character P is substituted, which has hex code 0x50. However, when I look into the CharMap of the standard StaffSymbols font NWC2STDA, the ppp symbol has character code 0xf050. Yet, my code works ... but I am not really sure why; and whether there might be circumstances when it does not work. Could someone tell me what's going on here? - thanks!

H.M.
520
General Discussion / Re: My (new, and long) NWC wishlist
Thanks for comments - especially those regarding scanning and MusicXML: When I have time, I'll certainly try them out ... at least out of interest, but maybe then for actual use!

... for the rest of my and our items, I hope to get from NWC/Eric at least a little by the way of replies ...

H.M.
521
General Discussion / Re: Beyond Bars Lyric sizes
Are you talking about the size of lyrics (so it says in the subject) or about text sizes in general (as you mention "text instructions" in your question)?

First of all, find out what you want or like: Just take a number of printed scores (I'd say at least 20; and preferably recent ones; and of course professional ones), decide which you like for their readability, measure the sizes they use - and there you are.
Most publishers have at least the first pages of scores available on the internet - often with water marks or the like to prevent copying, but that's of no concern to you.
Measuring font sizes is tricky - a standard ruler with millimeter granularity is not fine enough. But I think it should be easy to enlarge a pdf or a scanned page e.g. exactly by a factor of 5 (500%) and then measure the sizes.

Here is what "Behind Bars" says for lyrics (p.438): Regarding fonts, it says
Quote
Place the text below the vocal line, in roman type. Italic may be used to differentiate sounds that are not part of the literary text, such as mm and ah ...
And regarding size, it says:
Quote
TEXT SIZE
The text must be at a comfortable size to read easily. Do not reduce its size to accommodate lengthy syllables for short note-values. A good proprotion for the height of a lower-case letter (such as 'm') is one stave-space.
That's all there is (or I found).

In practice, I found that people in our choir are happy when I increase the font size for lyrics by one point from NWC's default sizes. A recent score of mine has a "staff metrics" of 15.5pt and a lyrics font size of 9.5pt, and no-one complained. Typically, I now go for 10pt for the lyrics size and even 11pt for some pieces, with correspondingly larger staff metrics.

Hope that helps a little ...

H.M.
522
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.
523
Object Plugins / Re: Envelope.hmm (0.8) - supporting envelopes in NWC
Version 0.8 now has an added user tool for shifting envelopes points of a single controller.

I tried the oval presentation for Maestros (thanks Mike!), but I do not use them as I need a clear readability for the Maestro objects (their controller number is important); and as they should typically be on separate envelope staffs anyway, there is no need to distinguish them visually from texts.

And the version should now be 0.8 everywhere :)

H.M.

524
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.
525
Object Plugins / Re: XText.hmm (0.5)
You're welcome.

In 0.5, I have added a justification 'Left and wide' to get left-justification and "preserve width" behavior. However, this shows that with multiline support, there is now an overlapping, or unclear, or muddled semantics for justifications: The "left" and "right" are used for both "justification relative to left side of text block" and "justification relative to plugin position". Therefore, the "left and wide" justification is actually a "right" justification with respect to the plugin's loction. But I'm not going to "correct" this (by introducing two independent "justifications"), mainly because the plugin right now needs all 32 possible properties; but also as there are already enough possibilities to format the text, I think - the workaround for other layouts is, as before, to use standard texts and placing them as needed.

H.M.
527
Object Plugins / Re: XText.hmm (0.3)
Version 0.3 now has multiline support.

It also has a properties dialog that looks like the control panel for a medium-sized nuclear reactor. I hope that people aren't put off by it, but I did not see any other way to get the necessary information.

And, it may be that the size computations are too simplistic - I did not try to learn what "descent" means, and how it should be used in computing the text layout.

Still, happy texting - and feel free to comment on my attempt (but I'd rather go back to the Envelope plugin, which is, as I see it, more satisfying from a musical perspective).

H.M.

P.S. And yes, the Bach is ok now (I'll see whether the couple likes it tomorrow), and the scores are transposed, and the recitative rewritten ... :)
528
Object Plugins / Re: XText.hmm (0.2)
I'll work on it - it's a pure algorithmic problem, i.e., what I like most about programming!

But it will take a day or two, as I have to play organ at three occasions this weekend (a wedding and two confirmations at our church), and that Bach does not yet really work = I need some more practice time today ...; oh, and I have to transpose three scores one  or two semitones up or down for our choir - NWC does it in a snap, but at one place this requires rewriting a recitative, as our solo tenor cannot go even higher ...

H.M.
530
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.
532
Object Plugins / Re: Envelope.hmm (0.6) - supporting envelopes in NWC
Version 0.6 has now lost the ".test" status and is fully ".hmm". I have modified all the scores in the previous postings - I hope they do their work. Changes in 0.6 are:
  • Controller selection is now via a drop down list for predefined controllers; and, additionally, by number if one selects 'Select by number' in the dropdown. I think this is a good compromise between pure "magic numbers" and the necessary flexibility for accessing arbitrary CCs (like my 71).*
  • Text fonts are still fixed, but a scale can be used to make texts larger or smaller.
  • Both plugins got useful header comments.**

H.M.

* The source code, however, is even worse now, as I had to copy-paste the enum list into both plugins, plus two additional functions. Is there any way that two plugins can share some code (an immutable list; and two functions) ?? ???
And there is still the copy-paste problem in Envelope.hmm, that essentially the same functions are duplicated for the "draw..." and the "play..." objects - any idea how to improve this?

** Question: Where does one see the comments after @... properties? I knew that once, I believe - but have not found that explanation ...
533
Object Plugins / Re: Envelope.test (0.4) - supporting envelopes in NWC
Here is something you couldn't do with NWC up to now (I think ...):  Changing the value of "Sound Controller 2 (Harmonic Content)" (CC 71).

Why would you (or I) want to do that?

Well, the "Soundiron Olympus Micro Choir" Kontakt virtual instrument allows the selection of two different "styles" for a voice, which can then be "blended together". Two generic styles are "oo" and "ah", and blending them with more oo or more ah yields a more or less "sharp" voice; on the whole, I find the "ah" quite ugly, but the "oo" is too soft, and mixing in some "ah" gives it more clearness. Here is a link to a picture of the GUI of this virtual instrument, with highlights around the style selections and the blend control. And according to the documentation, the blend control can be "automated" (i.e., controlled from a MIDI command stream) via CC71!

Now, I started to compose a gospel (based on Psalm 114), which begins with a long crescendo chord. After that, the basses sing a melody over S+A+T chords. The lyrics interlace so that there are more text lines ("stay in the faith ...", "stay with me", "pray with me"); and therefore the voices need to say their words with some emphasis. I wanted to create at least a little bit of that impression with the simple micro choir, and I found that for the long chord, I wanted more "oo" in the basses, but more "ah" later when they take the melody.

- I have attached the score of the first 7 measures below. If you want to see the envelopes, you have to enable the "Controllers" staffs in "Page Setup -> Contents".
- Here is a link to the resulting MP3 (yes, it ends quite abruptly).
- In this (silent) GIF you can see how the volume (near the upper right) and the blend controls move while playing.

This is also an example of two controller envelopes on a single staff - I could have placed them on two, but I wanted to try this out.
I hope this gives you an additional understanding of why I develop this plugin ...

H.M.
534
Object Plugins / Re: Envelope.test (0.5) - supporting envelopes in NWC
Version 0.5 has a few improvements:
a) It is now possible to show the text below the envelope;
b) The locations where the lines begin/end; and where MIDI emitting begins/ends are now exactly at the start of the next note or rest - this is what one expects.

H.M.
535
Object Plugins / Re: Envelope.test (0.4) - supporting envelopes in NWC
I have uploaded a version 0.4, with some small presentation improvements: There is a short line at the end of a slope which helps if the envelopes are shown in a smal scale; the text shortens itself somewhat if there is not enough space; and the text shows < or >, depending on whether the value increases or decreases.

However, I have spent most of my time on putting volumes into my composition. The user tool for shifting selected envelope ranges up and down would have come in handy, but my mind was not on programming ...
If someone is interested: I have attached the piece's NWC score here, and here are two links to a version with, and one without volume control (just muting the "Controller" staffs produces the latter):


There is one more reason why I think this plugin is useful: The various effects on virtual instruments require lots of experimentation until one understands what can (and cannot) be done with which knob/controller. Typically, one does first experiments via some GUI knobs - but eventually, one has to play around with the controls via some sort of "script", or "score". I believe (but have yet to learn and do that myself) that doing it directly in an NWC score is more intuitive than via some MIDI tools ...

H.M.
536
Object Plugins / Re: Envelope.test (0.3) - supporting envelopes in NWC
Ok - then no implicit color transfer from maestro to players - so be it. Thanks!

I found that I will need some user tool(s) anyway - at least one for the purpose of shifting a whole range of controllers up or down: This does not work in NWC, as only the rests selected in between are shifted - and if there are different controllers on one staff; I would like to shift only one "selected" anyway ...

H.M.
537
Object Plugins / Re: Envelope.test (0.3) - supporting envelopes in NWC
I hope this is not too shameless a plug if I get a little bit excited about this plugin: I started to try it out on a choral composition I wrote (and am still writing) - here is an experiment I did this morning with the first few bars, for the first soprano.
First, here is a score image of this voice  - I have added two volume envelopes, for experimentation (of course, when playing, only one of them is unmuted - the other is muted and does not send any MIDI commands):

<Image Link>

And here are three renditions as MP3s:


My setup, by the way, is:
  • (free) loopMIDI as virtual MIDI cable
  • Reaper 5.80 as VST container
  • (free) Kontakt Player 5.0 as instrument container for the choir; (free) sfz player for SFZ soundfonts
  • Soundiron Olympus Micro Choir for choir voices
  • (free) Sonatina Symphony Orchestra Keyboard sound for piano

And here are two renditions of all four voices (the score is in the attachment). The Olympus choir voices are not at all bad out of the box, but ...:


... don't you agree that that soprano crescendo on that last "stärkt" but one is much more "elating" (or "creepy"?) in the latter MP3?!

Of course, the same effects could also have done with a standard volume MPC - but I have to tell you I would not have had much fun playing around with that many controllers for an hour; whereas moving up and down those envelope objects is so quick ...

H.M.
539
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.
540
General Discussion / Re: Sending arbitrary MIDI controllers?
Thanks a lot! - I searched for "controller" - not much to find - and "CC" - hopelessly overloaded by that - and some other keywords but did not immediately stumble over something useful. I'll take a look!

H.M.
541
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.
542
General Discussion / Re: Chord Splitting Plugin? :D
My setup for this very important tool is as follows: For each useful combination of parameters, I have a separate line in the nwc2UserTools.ini file, as follows (the HMM is just the section for my convenience tools):

Code: [Select · Download]
[HMM]
1 Remove Top NoSingle=2,php\php.exe scripts\adp_Parts.php remove top nosingle
2 Remove Top=2,php\php.exe scripts\adp_Parts.php remove top
3 Retain Top=2,php\php.exe scripts\adp_Parts.php retain top
4 Retain Bottom=2,php\php.exe scripts\adp_Parts.php retain bottom
5 Remove Bottom=2,php\php.exe scripts\adp_Parts.php remove bottom
6 Remove Bottom NoSingle=2,php\php.exe scripts\adp_Parts.php remove bottom nosingle

When composing, this looks as follows:

<Image Link>

  • The top staff shows a segment newly composed in "chord notation"
  • The three staffs below were created from it, by first copying in the upper staff (or a piece of it), then selecting (highlighting) some segment, and then execute suitable user tools; e.g. for the middle staff "Remove Top" and "Retain Top" (or "Remove Bottom")
I have written huge scores (25 staffs; and some 100s of measures) with this method.

Good luck!
H.M.

P.S. Editing nwc2UserTools.ini requires Windows admin rights, otherwise you see/edit a local copy of the file, and NWC does not see the added tools. I have been stung by this a few times ...

P.P.S. Ahem ... the image is a little bit of a fake; and so the voices do not correspond perfectly. But you get the idea, I hope ...
543
General Discussion / Re: hiding line
If you put the "Cancel/forbid" in measure 14 past the invisible bar line, it works (at least for me).

In your score, the "very short segment" between the "Cancel/forbid" and the bar line is visible, so NWC has to print the whole staff.

H.M.
544
General Discussion / Re: new computer recommendations
But I think my laptop is bothering my shoulders and back because I’m using it as a desktop since the battery is toast and the power cord keeps falling out.

Buy a new battery? Not that cheap - but cheaper than a new laptop, and does not need new setup, new learning curve, new whatever ... if you can live with the old one some more time.

H.M.
545
General Discussion / Re: Silly notation
I agree - if the grace note would also be an e natural ... (and the B grace note could even get a courtesy natural, if this part "feels" like F ...).

I also do not see why one would not also change the key signature, even for 4 measures or so - the whole passage is in F (or maybe C), after all. But this "very sticky key signatures with many "hand-drawn accidentals" have been a tradition since Beethoven, it seems - I just read through some part of a symphony of his which is ugly (for me) to read ...

H.M.
546
General Discussion / Re: Fixing Transposition Playback Issues
It is also on the Find menu.
.. another place I have never seen (hint for newbies [like me, at times? ;-) - it took me a few attempts until I noticed that menu]: Ctrl-F -> tab -> space will beam you there, Scotty, where "Octave Accidental Unassigned" is the topmost entry ... Maybe I should read sequentially through the help file, as an evening pastime ...).

H.M.
548
General Discussion / Re: Fixing Transposition Playback Issues
... are Rick and I the only ones who use Score Review?...
Well, I don't use it - but I wouldn't know what for. The mention above is the first time I saw a useful application - but my transpositions dont get mixed up ... MIDI/instrument assignments and, most of the time, muting remain totally fixed for my scores; visibility can be seen in the Contents tab; bar count - what for? Thus, I don't seem to have any use for it. What do I miss? - enlighten me (and us) :)

H.M.
549
General Discussion / Re: Quick rest insertion/note deletion and lyric placement
Re your first question - just a quick answer without really reading all your details: Would the adp_parts user tool with option nosingle do what you want? (I have it configured as
    Remove Top NoSingle=2,php\php.exe scripts\adp_Parts.php remove top nosingle
)

Re your second question:

Solution (a): Instead of adding millions of _, and guessing their number, you can just select the notes/chords and then in their property window (Alt-Enter) set "Lyric Syllable" to "Never" - all the notes have now "vanished" with regards to lyrics.

Solution (b): Add a million of _; then place your cursor at the note where you want the lyrics to start; and now open (Ctrl-L) the lyrics box and then press right-arrow - your cursor in the lyrics box will be show up at the position corresponding to the note cursor! - so now you can simply remove all the underscores after this point.

Hope this helps, or at least gives you an idea where and how to dig further ...

H.M.
550
General Discussion / Re: Creative process
Nice.

I have a single file on my laptop (with multiple backups) I use to record lyrics I get or invent, also ideas.
But the main "tool" is a musical sketchbook my daughter gave me as a present two years ago (and another one more recently) whch I take with me everywhere. Only since I have this, I started to write down enough ideas!
...both these are for "rough (small and large) ideas and sketches".

My actual process of creating a piece of music is much more focussed and organized - it would take some time to explain it - but essentially I "do" all the "aspects" of music systematically: Form, "harmonic language", "melodic language", motifs, "harmonic rhythm", "small rhythm", polyphony, harmonics, ...., sound/instrumentation, ..., "surpriseness" -  ah, I see I have some terms here I use for me, of which I dont know whether there are any "offical terms" for them - I never learned composing from a composer, so I ended up with that ... much I'd have to explain in more detail, I suppose ... Also, if at all possible, I do it "like work": Even though I hate some parts of it (checking voices ...), I force myself to do it as meticuosly and only with short breaks to get a glass of water. It's a 9-to-5 job.

But I have only written 10 or 15 pieces which I consider "acceptable" - all the rest, from previous years, was more planless playing around, seen from today.

H.M.