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

551
General Discussion / Re: Reassigning function keys?
My new Fujitsu laptop has a toggle feature: Pressing Fn + Esc toggles whether the function keys (a) do the normal function key work; or (b) do the hardware-specific work. Of course, the factory setting was in mode (b) ... After a few expletive-triggering experiences, I downloaded & started to read the manual and found this (it even has a 4th "lock" LED that shows whether the "Fn lock" is on or off) ... maybe yours has a similar feature that saves you pressing Fn every time you need a function key working as a straight function key .

H.M.
 
552
General Discussion / Re: Not able to save songs
Sorry - I cannot reproduce this - I tried to rename the folder for song files, to replace it in NWC options ... but the messages I got had other texts. It seems the Noteworthy staff needs to explain what's going on ...

H.M.
553
Object Plugins / Re: Acciaccatura.ms (version 1.1)
I mean a time "rest" between the end of the grace note and the start of the normal note that follows ... I have no idea if this makes any sense musically ...
No, this doesn't make sense. On all instruments I know (strings, keys, wind), acciaccaturas are played "quickly", which requires that are they played with a single "movement" (or air breath). If a composer or arranger wanted a gap, she or he could always write it with standard notation - which has become useful, and later customary, anyway from maybe the mid-1800s onward.

H.M.
554
Object Plugins / Re: Acciaccatura.ms (version 1.1)
OT: I like the "could" in "could result in a causality violation." You might add ", thereby possibly bringing the known universe to an immediate end" or the like  ;D  :o
555
Object Plugins / Re: Acciaccatura.ms (version 1.1)
Sorry if I chime in - I think you will (or have to) open a can of worms with play back of ornaments (at least, I'm going to open it ...).

First, currently, NWC plays grace notes "wrongly" - by default, they are in today's music almost always played before the beat (so that the main note is on the beat), but NWC plays the grace note on the beat. But at least in older music, and if one wants to stress the ornament, playing it nearer to or right on the beat is also useful or even "correct".

But then, all note playing by NWC is a huge (and, often, not too good) compromise. Just singling out the grace note and maybe the arpeggio may help a few here with a few pieces, but actually the whole concept of "what does it mean to render a score" needs to be revisited. For example, it is, in general, certainly wrong in many cases to play notes exactly as long as they are notated (i.e., up to the start of the next beat minus an epsilon to create an audible break to the next note); and it is often not even clear that notes are to be started when the score says so ("laid back" and "laid forward" playing are typical styles even in classical music!).

To "go meta" even more, I think that one even needs to know for what purpose a sound rendition is made. Even with live performing, you will sing or play very differently if you want to get a crisp and clear rhythm e.g. in early rehearsals - whereas in the actual concert, many decisions on where notes start and how long they sound will be different.

I use NWC to create rehearsal voices for our choir - there, I need "mathematical placement of notes". But I also try to do "more artistic renditions" - and see and hear many limits there.

In some other thread, someone asked about hooking up Kontakt to NWC - I have looked at Kontakt (and some other virtual instruments) a little and found that parameterizing them is a software project of its own. I have some ideas on how this should be done - but mainly I think that revisiting "how to play music from a notation program" needs a "holistic" approach.

For the current topic and plugin, I would therefore say that there is not too much to be gained from deep research - rather, some compromise that makes a few users somewhat more happy would actually be fine.

(I "criticized" the trill object also some time back on the grounds that it is too limited to play "real" or "really good" trills. But exactly because it is not easy - if possible at all - to design a trill that can do "all trills needed", I am happy with the current, simple version. If I need something more versatile - well, I'll probably have to do it - or at least, specify it! - myself ...).

H.M.

P.S. On re-reading, this is sort of rambling along - forgive me if it does not make too much sense ...
556
General Discussion / Re: Double Bar Line should not affect flow (serious bug)
Yes - this is one of the two NWC surprises with playback (the other is that accidentals shift also notes an octave higher and lower).

My solution is that I now don't use double bars, but two single bars with a spacer of length 0.25 in between:

Code: (nwc) [Select · Download]
!NoteWorthyComposerClip(2.751,Single)
|Note|Dur:4th|Pos:0|Opts:Stem=Down
|Note|Dur:4th|Pos:0|Opts:Stem=Down
|Note|Dur:4th|Pos:0|Opts:Stem=Down
|Note|Dur:4th|Pos:0|Opts:Stem=Down
|Bar
|Spacer|Width:25
|Bar
|Note|Dur:4th|Pos:0|Opts:Stem=Down
|Note|Dur:4th|Pos:0|Opts:Stem=Down
|Note|Dur:4th|Pos:0|Opts:Stem=Down
|Note|Dur:4th|Pos:0|Opts:Stem=Down
|Bar
!NoteWorthyComposerClip-End

The attachment shows that measure numbers are still correct with this trick; and that line breaks work as expected (i.e., both single bars end up in the upper line).

H.M.
557
General Discussion / Re: Will there be a "isVisible()" API function?
Ah - thanks - I have missed this while scanning up and down the function lists. I'll try whether it does what I need!

// Edit:
I think you thought a little more ahead than I did - isHidden() does not do what I want for boundaries: A boundary (that sets sizes) will influence the height of all following printed staffs if it is visible at the point where it is defined - therefore, ConnectBarlines.hmm scans the whole score back to the beginning to find previous boundary objects. But isHidden() - being defined in drawpos - works only for the current printed staff ...

I learned something; but my original question still stands ...

H.M.
558
General Discussion / Will there be a "isVisible()" API function?
Hi -

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

Regards
Harald

560
General Discussion / Re: NWC Viewer Soundfont Crash
I dont have the FluidR3.GM.sf2pack around (should it have been installed with the Viewer? where?).
But with the (my) regular FluidR3 GM.sf2, it has now worked beautifully and without problems 3 times ...
I am running a 64bit Win10 Enterprise 1703.

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

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

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

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

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

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

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

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

H.M.
568
Object Plugins / Re: Mensurstrich.test
Thanks for quick review - of course, I forgot about the fonts, and then the wrong name (misusing Lloyd's ...) -> I have corrected the score ... and added the "Single" option.
My request for hmm(!) will go out in a minute :-)

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

There are three examples attached:

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

H.M.
570
General Discussion / Re: Connected bar only at end of score (and staffs) - is this possible?
OK - multiple points:

a) I think I found a non-deterministic bug in either "nwcdraw.barSegment" or our ConnectBarLines code: The upper segment must be drawn with nwcdraw.barSegment(barType,y+yPosTop,y+4), not with nwcdraw.barSegment(barType,y+4,y+yPosTop). In my somewhat extended experiments, the latter code at some point stopped drawing anything; and the documentation says "Y1 and Y2 determine the upper and lower end points for the bar segment" - it does not specify that happens if Y1 is below Y2. Still, it worked up to now ... so something might be fishy in nwcdraw ...

b) I have a horrendous piece of code that searches backwards to matching Boundary objects to get the current upper and lower heights (see below; attached is also my test score). I have no idea why this actually searches to the beginning of the whole score - I copied it from Mike's NWC's "BarCounter", which can do this. In my much simpler first attempt, :find only searched in the printed part of the staff, i.e., not far enough - I would be happy if someone could (somewhere else?) explain to me why my "find('prior', ...) stopped much sooner, and what the code does ...
... but it seems that my code does not find what it should. I'll try to find out what goes on there (but tomorrow morning, we will be on our way back from the Bretagne to Germany, so it might take two or three days ...).

c) What do we want?
1) should there still be a "Standard" functionality that works only on the immediately following bar?
2) should the object draw something in edit mode (right now, my modification is totally silent ... but one could draw e.g. "BrokenSingle" bars everywhere to indicated what would happen at the right end of each printed staff?)

and finally
d) is this the right place to discuss this sort of (very) experimental programming? - or should I continue this somewhere else on the forum or in private messages?

Edit: Lloyd & me will continue this offline somewhat ... when something working turns up, we'll be back ...

H.M.

Current experimental code of "ConnectBarLines" that tries to heed Boundary heights - but does not ...

Code: [Select · Download]
-- Version 0.1

--[[--------------------------------------------------------------------------

This plugin will connect barlines with the staff below. You must specify if the current staff is Upper, Middle or Lower staff in order to draw connections correctly.

--]]--------------------------------------------------------------------------


local userObjTypeName = ...
local nextBar = nwc.drawpos.new()
local prevBoundary = nwc.drawpos.new()
local drawpos = nwcdraw.user


local drawidx1 = nwc.drawpos
local objidx = nwc.ntnidx
local searchidx = objidx.new()
local c = nwcdraw


local object_spec = {
{ id='System', label='Staff Location', type='enum', default='Top Staff', list={'Top Staff', 'Middle Staff', 'Bottom Staff'}},
}

local function do_create(t)
    t.Class = 'StaffSig'
end

local function do_draw(t)
  local w = nwc.toolbox.drawStaffSigLabel('BarLines3')
  if not nwcdraw.isDrawing() then return w end
  -- if nwcdraw.getTarget() ~= 'print' then return end
  if drawpos:isHidden() then return end

  local yPosTop
  local yPosBottom

  local setTopIfNil = function(value)
    if not yPosTop then
      yPosTop = value
    end
  end

  local setBottomIfNil = function(value)
    if not yPosBottom then
      yPosBottom = value
    end
  end

  local drawSegment = function(x,y,bType)
    if t.System == 'Top Staff' then
      nwcdraw.moveTo(x,y)
      nwcdraw.barSegment(bType,y-4,y-yPosBottom)
    elseif t.System == 'Middle Staff' then
      nwcdraw.moveTo(x,y)
      nwcdraw.barSegment(bType,y+yPosTop,y+4)
      nwcdraw.moveTo(x,y)
      nwcdraw.barSegment(bType,y-4,y-yPosBottom)
    elseif t.System == 'Bottom Staff' then
      nwcdraw.moveTo(x,y)
      nwcdraw.barSegment(bType,y+yPosTop,y+4)
    end
  end
--- I do not understand the following (copied from BarCounter)
  local me = c.user
  local me_autoins = me:isAutoInsert()

  drawidx1:reset()

    -- don't do anything when hidden
    if me:isHidden() then return end

    if me_autoins then
      drawidx1:find('first')
    else
      drawidx1:find('prior','bar')
    end

  if me_autoins and drawidx1:find('first','noteOrRest') then
    if drawidx1:isAutoInsert() and (drawidx1:objType() == 'RestMultiBar') then
      pendingBar = drawidx1:barCounter()
    end
  else
    drawidx1:reset()
  end

  -- start from the first note and count bars backwards
  objidx:reset()
  searchidx:find(drawidx1)
  while searchidx:find('prior') and (searchidx > objidx) do
--- end "I do not understand"
   
    if searchidx:objType() == 'Boundary' and searchidx:objProp('Style') == 'NewSize' then
      setTopIfNil(searchidx:objProp('Upper'))
      setBottomIfNil(searchidx:objProp('Lower'))
      nwc.debug("c2", yPosTop, yPosBottom)
    elseif searchidx:objType() == 'Boundary' and searchidx:objProp('Style') == 'Reset' then
      setTopIfNil(nwcdraw.getStaffProp('BoundaryTop'))
      setBottomIfNil(nwcdraw.getStaffProp('BoundaryBottom'))
      nwc.debug("c3", yPosTop, yPosBottom)
    end
  end

  setTopIfNil(nwcdraw.getStaffProp('BoundaryTop'))
  setBottomIfNil(nwcdraw.getStaffProp('BoundaryBottom'))
  nwc.debug("c5", yPosTop, yPosBottom)

  nextBar:reset()
  local found = nextBar:find('last', 'bar')
  if found then
    found = nextBar:find('next', 'bar')
  end
 
  if found then   
    local x,y = nextBar:xyAnchor()
    local barType = nextBar:objProp('Style')

    drawSegment(x, y, barType)
  end

  nextBar:reset()
  while nextBar:find('next', 'bar') do
    local x,y = nextBar:xyAnchor()
    drawSegment(x, y, 'BrokenDouble')
  end
end

return {
  spec  = object_spec,
  create  = do_create,
  width  = do_draw,
  draw  = do_draw,
}

571
General Discussion / Re: Connected bar only at end of score (and staffs) - is this possible?
The following questions should maybe be asked under user plugins - but it concerns not a specific plugin but the API, so I continue here ...

Lloyd's plugin was a god's send - but I found that I needed the functionality that it draws the connected bars automatically at the end of each line. The reason is that I typically produce two scores from an arrangement: One for the singers, with the vocal voices only; and one for the director, with vocal voices and (e.g.) piano staffs. Of course, these two scores break their lines at different places ...

... so I set out to do this. I now have a solution (code is below; attached is an example score with the two created PDFs), but I am somewhat flabbergasted why it works, for I do not at all understand two effects of the API:

a) It seems that when printing, the draw event is called once per staff line. I thought that I would have to write a loop for my "draw at each bar that is at the end of a staff line", and already had in place a more or less convoluted logic using getSystemCounter() to find the line breaks ... but the plugin code is actually much simpler. Only - is this so intended? or is my code based on some more or less fishy feature of the API??

// Edit: I re-read the documentation, and it says as the meaning of "StaffSig":
The nearest instance of this object will always be added at the front of each printed staff system...
Now, these "added objects" in turn will trigger a call to the draw method, so - yes, in effect, draw is called once per "printed staff" (what I called "staff line" above). So I'd now say that my code is legal. ... slowly, understanding dawns ...

b) Still, finding that last bar is a little different from what I expected. When I simple wrote

  local found = nextBar:find('last', 'bar')

the current object was the last bar but one! But with the current code, which reads

  local found = nextBar:find('last', 'bar')
  found = nextBar:find('next', 'bar')

I end up at exactly that "last bar" that I want to extend with Lloyd's drawing code. Is this intended - maybe because I am now not at the "last bar", but actually at the first bar of the next staff line, which is just "mimicked back" to the previous line?

Anyway - Lloyd, could we together (or you) make this now a publishable plugin? what else would have to be done?

Here is the code:
Code: [Select · Download]
-- ConnectBarLines2 - derived from Lloyd's ConnectBarLines 
-- Version 0.1

--[[--------------------------------------------------------------------------

This plugin will connect barlines with the staff below. You must specify if the current staff is Upper, Middle or Lower staff in order to draw connections correctly.

--]]--------------------------------------------------------------------------

local userObjTypeName = ...
local nextBar = nwc.drawpos.new()
local afterBar = nwc.drawpos.new()
local drawpos = nwcdraw.user

local object_spec = {
{ id='System', label='Staff Location', type='enum', default='Top Staff', list={'Top Staff', 'Middle Staff', 'Bottom Staff'}},
}

local function do_create(t)
    t.Class = 'StaffSig'
end

local function do_draw(t)
  local w = nwc.toolbox.drawStaffSigLabel('BarLines')
  if not nwcdraw.isDrawing() then return w end
  if drawpos:isHidden() then return end

  local yPosTop = nwcdraw.getStaffProp('BoundaryTop')
  local yPosBottom = nwcdraw.getStaffProp('BoundaryBottom')

  local found = nextBar:find('last', 'bar')
  found = nextBar:find('next', 'bar')

  if found then   
    local x,y = nextBar:xyAnchor()
    local barType = nextBar:objProp('Style')

    if t.System == 'Top Staff' then
      nwcdraw.moveTo(x,y)
      nwcdraw.barSegment(barType,y-4,y-yPosBottom)
    elseif t.System == 'Middle Staff' then
      nwcdraw.moveTo(x,y)
      nwcdraw.barSegment(barType,y+4,y+yPosTop)
      nwcdraw.moveTo(x,y)
      nwcdraw.barSegment(barType,y-4,y-yPosBottom)
    elseif t.System == 'Bottom Staff' then
      nwcdraw.moveTo(x,y)
      nwcdraw.barSegment(barType,y+4,y+yPosTop)
    end
  end
end

return {
  spec  = object_spec,
  create  = do_create,
  width  = do_draw,
  draw  = do_draw,
}
573
General Discussion / Re: History does no longer work on Win10 / 2.75a
Thx for the quick answer ...
... it points to :localappdata:\Noteworthy Software\nwc2
Under my user account, I have a folder AppData with subfolders Local, LocalLow, Roaming - none of which contains a folder "Noteworthy Software".
C:\ProgramData\Noteworthy Software\nwc2 exists, but I would not assume this is ":localappdata:"; and there is no .dat file there.

Manually creating Noteworthy Software\nwc2 below my user's AppData also did not create a .dat file when I opened and closed NWC.
Might have something to do with folder ownership? ... I'll at least restart my computer and check what happens ...

// Edit:
Also didn't change anything.

So I redirected it to the directory where my music files sit - and now it works = FileMRU.dat now exists. Thanks for explanation ... whatever is wrong here on my laptop ... but it's fine as it is now ...

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

H.M.
575
General Discussion / Re: Second time only
Of course I heard you  ;) - loud and clear. So I thought, let's post it ... But I have to try the multipoint controller approach (should work with my large scores, where instrument are assigned channels) - I have to get used to them anyway ...

H.M.
576
General Discussion / Re: Second time only - how-to
Especially in brass band music, it is common to have segments in a repeated part that are to be played only the second time around ("play only 2nd time", in German typically marked "nur 2.x").
It's not too hard to
  • have NWC print the score in such a fashion
  • and also play it correctly -
but as I did not find a "how to" example in the forum I thought I'd add one --> see the attachments!

H.M.

(Yes, that's a very ... very very old thread - but its title fits perfectly :) - and adding NWCTXT was not yet possible then ...)
577
Object Plugins / Re: CueHeads.ms (0.3)
I assume you want to tell me that even though the score looks like this,
Code: (nwc) [Select · Download]
!NoteWorthyComposerClip(2.751,Single)
|User|CueHeads.ms|Pos:-1|Class:StaffSig
|Chord|Dur:4th|Pos:-1!1,1|Opts:Stem=Up
|Chord|Dur:4th,Grace|Pos:-1!1,1
|Chord|Dur:4th|Pos:-1z!1,1z|Opts:Stem=Up
!NoteWorthyComposerClip-End
(note the !1 on all three notes on position -1), I have to live with the result in the attachment ... well then, so be it ...
Thanks!

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

H.M.


579
Object Plugins / Re: CueHeads.ms (0.3)
I have a little problem with CueHeads in conjunction with my "ShowRanges" user tool: Cueheads does not show the heads in the note head's color (if the note head has a special color; in the text representation, this is indicated with !#, where # is 1...7 for Highlight1...Highlight7)

I searched the API documentation for "simply setting the font's color" - but I did not find anything that would help me.

So my question is: Is there a possibility to add correct notehead coloring to cueheads?

// Edit:
Mhm - one should read the thread, even if it is more than two years old ... it says "colored noteheads" 3 postings above - but I cannot make it work :(

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

H.M.
582
General Discussion / Re: Problem with online object sync.
... as a (retired) IT person I have a particular aversion to the direction m$ are taking with all versions of windoze from Vista onwards.
I look beyond the immediate changes to so-called security, reliability and speed and see a much bigger and scarier picture.
Put simply, IMHO, NONE of the major tech companies are to be trusted.

Well, I can understand these sentiments, as a non-retired IT person in a company that has - I think - a Gold partner status or something like that with MS, using only their platforms. Well, I get paid for that, and I am used to it. On these grand questions, I cannot - therefore and at all - give you more confidence. I only wanted to say that, right now, for me, on the whole, Win 8.1 does the work it's supposed to do ...

H.M.
584
Object Plugins / Re: BarCounter.nw
Another addition I made to my local copy: An "optional suffix" that is added to the bar numbers.
An example can be seen in the score at http://www.hmmueller.de/MyMusic/20170602b-ch.DuranteMagnificatSSAB_5.pdf, where I had to number the last 9 measures with 1a...9a because of a split of parts 5 and 6 that is different in another score used by the soloists.
(The code changes are trivial - adding the parameter; and concatenating it with barcounter at two .text() calls).

H.M.

P.S. The score also uses @Lloyd 's ConnectBarLines - adding them went ahead quite quickly with the help of UltraEdit to set the "Staff Location" in each staff ... many thanks again for this!)
585
General Discussion / Re: Connected bar only at end of score (and staffs) - is this possible?
Wow - works perfect for my score! - thanks a lot ... this also helps me in a discussion we have currently about how to produce good-looking and useful scores for our choir!
I will also need it for a score with about 14 pages = 14*12 = 168 staffs ... it will take a little bit of work to add them manually, but that's ok (also the notes needed to be added manually, and there are many more of them  :) ).

Many thanks!

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

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

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

H.M.
587
Object Plugins / Re: BarCounter.nw
Answer to myself: "Exclude Bar Count" does currently not work with BarCounter. But I made it work by changing line 142 of the script from
Code: [Select · Download]
local isBar = (objt == 'Bar')
to
Code: [Select · Download]
local isBar = (objt == 'Bar' and drawidx1:objProp('XBarCnt') ~= 'Y')
Maybe this could be integrated into the official version of the plugin (the flag isBar could be renamed to isCountingBar to make its intent clearer).

Edit: (At least) also line 111 needs to change - otherwise one gets funny jumping measure numbers:
Code: [Select · Download]
elseif objt == 'Bar' and obj:objProp('XBarCnt') ~= 'Y' then

H.M.
588
General Discussion / Re: Writing large scores + voices - NWC is, I have to say, a very good program
I've drawn Guade Oide Zeid to the attention of two concert band leaders and hopefully one or the other will play it. 
Wow ... thanks a lot - but - I have to redo it: There are too many things in it that are simply not ok (says my teacher, and do I now understand). I hope to have a useful draft in a week or so ... I'll replace the files with better ones then.
... after all, I'm still a beginner in instrumentation, and it's hard work, I can tell you ...

When I feel a little more confident, and have done 2 or 3 more marches, I'll certainly put pieces into public domain - it's a pure hobby, after all!

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


The score is organized as follows:

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

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

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

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

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

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

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

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

H.M.

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

590
General Discussion / Re: Can't see verse three notechase with da capo & coda
Yes, I did: Is it the rule "If there is no ending with the current repetition number, then continue playing after the last master repeat close matching the master repeat open where repeating started"? Then I understand that the third time around, playing continues after that hidden repeat!

So essentially, this method doesn't care for segnos and da capos and emulates all this with repeats and closings ... whereas I tried to make the da capo/segno machinery to do its work and still, "on the side", make the verse number jump. I see now that this are two quite different approaches.

Thx
H.M.
591
General Discussion / Re: Can't see verse three notechase with da capo & coda
Encountering a D.S. doesn't increment the verse counter.
The verse counter increments when playback encounters a Master Repeat Close.
Try this for Staff-1:...

I dont see how this could work:
  • Either you dont put in a D.S.al Coda (or you put it after the hidden master repeat close): Then the coda instruction will not be triggered, and the verse will be played 4 times.
  • Or you place a D.S. al Code before the master repeat close - then highlighting the verse 3 lyrics wont happen.
Or do I miss something?

Edit: Here is my solution, with weird invisible 3. and D.S. and 1.+2. (the order is important!) at the beginning of the repeat - it seems to work:

Code: (nwc) [Select · Download]
!NoteWorthyComposer(2.751)
|Editor|ActiveStaff:1|CaretIndex:1|CaretPos:0
|SongInfo|Title:""|Author:"<Name>"|Lyricist:""|Copyright1:"Copyright © 2008 <Name>"|Copyright2:"All Rights Reserved"
|PgSetup|StaffSize:16|Zoom:4|TitlePage:Y|JustifyVertically:Y|PrintSystemSepMark:N|ExtendLastSystem:N|DurationPadding:Y|PageNumbers:0|StaffLabels:None|BarNumbers:None|StartingBar:1
|Font|Style:StaffItalic|Typeface:"Times New Roman"|Size:10|Bold:Y|Italic:Y|CharSet:0
|Font|Style:StaffBold|Typeface:"Times New Roman"|Size:8|Bold:Y|Italic:N|CharSet:0
|Font|Style:StaffLyric|Typeface:"Times New Roman"|Size:7|Bold:N|Italic:N|CharSet:0
|Font|Style:PageTitleText|Typeface:"Times New Roman"|Size:24|Bold:Y|Italic:N|CharSet:0
|Font|Style:PageText|Typeface:"Times New Roman"|Size:12|Bold:N|Italic:N|CharSet:0
|Font|Style:PageSmallText|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|Font|Style:User1|Typeface:"Boxmark2"|Size:16|Bold:N|Italic:N|CharSet:0
|Font|Style:User2|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|Font|Style:User3|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|Font|Style:User4|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|Font|Style:User5|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|Font|Style:User6|Typeface:"Times New Roman"|Size:8|Bold:N|Italic:N|CharSet:0
|PgMargins|Left:1.27|Top:1.27|Right:1.27|Bottom:1.27|Mirror:N
|AddStaff|Name:"Staff-1"|Group:"Standard"
|StaffProperties|EndingBar:Section Close|Visible:Y|BoundaryTop:10|BoundaryBottom:22|Lines:5|Color:Default
|StaffProperties|Muted:N|Volume:127|StereoPan:64|Device:0|Channel:2
|StaffInstrument|Trans:0|DynVel:10,30,45,60,75,92,108,127
|Lyrics|Placement:Bottom|Align:Standard Rules|Offset:0
|Lyric1|Text:"verse one verse one verse one verse one verse one verse one verse one verse one verse one verse one\n"
|Lyric2|Text:"verse two verse two verse two verse two verse two verse two verse twoverse two verse two verse two verse two verse two verse two verse two\n"
|Lyric3|Text:"verse three verse three verse three verse three verse three verse three verse three verse three verse three verse three verse three verse three end_of_three\n"
|Tempo|Tempo:400|Pos:12
|Clef|Type:Treble
|TimeSig|Signature:4/4
|Rest|Dur:Whole
|Bar
|Rest|Dur:Half
|Rest|Dur:4th
|Rest|Dur:8th
|Note|Dur:8th|Pos:-2
|Bar|Style:MasterRepeatOpen
|Ending|Endings:3|Visibility:Never
|Flow|Style:DSalCoda|Pos:8|Justify:Right|Placement:BestFitForward|Visibility:Never
|Ending|Endings:1,2|Visibility:Never
|Flow|Style:Segno|Pos:11|Wide:Y
|Note|Dur:8th|Pos:-1|Opts:Stem=Up,Beam=First
|Note|Dur:8th|Pos:0|Opts:Stem=Up,Beam=End
|Note|Dur:8th|Pos:1|Opts:Stem=Down,Beam=First
|Note|Dur:8th|Pos:2|Opts:Stem=Down,Beam=End
|Note|Dur:4th|Pos:3
|Note|Dur:4th|Pos:2
|Bar
|Note|Dur:8th|Pos:-1|Opts:Stem=Up,Beam=First
|Note|Dur:8th|Pos:0|Opts:Stem=Up,Beam=End
|Note|Dur:8th|Pos:1|Opts:Stem=Down,Beam=First
|Note|Dur:8th|Pos:2|Opts:Stem=Down,Beam=End
|Note|Dur:4th|Pos:3
|Note|Dur:4th|Pos:2
|Flow|Style:ToCoda|Pos:5|Wide:Y
|Bar
|Ending|Endings:1
|Note|Dur:8th|Pos:3|Opts:Stem=Down,Beam=First
|Note|Dur:8th|Pos:2|Opts:Stem=Down,Beam=End
|Note|Dur:8th|Pos:1|Opts:Stem=Down,Beam=First
|Note|Dur:8th|Pos:0|Opts:Stem=Down,Beam=End
|Note|Dur:4th|Pos:-1
|Note|Dur:4th|Pos:0
|Bar|Style:MasterRepeatClose
|Ending|Endings:2
|Note|Dur:8th|Pos:3|Opts:Stem=Down,Beam=First
|Note|Dur:8th|Pos:2|Opts:Stem=Down,Beam=End
|Note|Dur:8th|Pos:1|Opts:Stem=Down,Beam=First
|Note|Dur:8th|Pos:0|Opts:Stem=Down,Beam=End
|Note|Dur:Half|Pos:-1
|Bar
|Rest|Dur:Whole
|Bar
|Rest|Dur:Whole
|Bar|Style:MasterRepeatClose|Visibility:Never
|Flow|Style:DSalCoda|Pos:8|Justify:Right|Placement:BestFitForward|Visibility:Always
|Bar|Style:Double
|Flow|Style:Coda|Pos:8|Wide:Y
|Note|Dur:Whole|Pos:-1
!NoteWorthyComposer-End

H.M.
594
User Tools / Re: How to (1) alter code and (2) get it back into the notation file
...I don't think it's possible to insert a RestChord in NWC itself. 
Of course it is - everything you can see in an NWC score can be entered!
For rest chords, see help topic (F1, then search for it) "Chord Member Command", where it says in item 4.:
Quote
A chord containing a rest is created by first placing the rest, and then adding one or more notes to that rest. The duration of the rest must be smaller than that of the notes that are added to it. The stem direction assigned to the rest must be different (opposite) than the note that is being added, or the operation will fail.
and then, after item 5,
Quote
Chord members can be added most efficiently by pressing <Ctrl Enter> from the computer keyboard.
Also, if your chords do not follow the rules above (rest shorter than added notes), you can create almost anything in the score with layered staffs - look them up in the help!
Hope that helps!
H.M.
595
User Tools / Re: How to (1) alter code and (2) get it back into the notation file
If(!) you are a power-user of some good text editor (UltraEdit is my favorite; NotePad++ is a free one), then you can easily
  • mark a selection in NWC
  • copy it into the editor - it will turn up as text there
  • modify it; regular expressions, in particular, are a very powerful tool; scripting in the editor might be another one;
  • mark all the text in the editor
  • and copy it back into NWC.
Likewise, you can just edit the .nwctxt file with that powerful editor. However, if you do not know, or cannot really work with such an editor (the standard Windows notepad is not meant by that - it is a crutch), then this is not for you ...

H.M.
596
Object Plugins / Re: BarCounter.nw
Hello all -

Does the "Exclude from Bar Count" feature work with this - and does it if the bar to be excluded is not a simple bar, but a Master Repeat Open or Close?

Thanks for any advice!

// Edit: Added some more courtesy after having fired off the posting too quickly before hurrying to a rehearsal ...
597
General Discussion / Re: general format lay-out sheet music
The problem is that when setting music, usually contradicting requirements have to be fulfilled: Use as little space (so that printing is not too expensive; and with a few page turns as possible), but make everything as clearly visible as possible. Different editors have different ideas and experiences and (budget and other) constraints, so the result differ widely.
We sing a few John Rutter songs in our choir - the scores make heavy use of compressing identical lines (e.g. of soprano and tenor) into a single system, with small arrows at line breaks to indicate where to continue below - a nightmare. Typical sheet music of jazz arrangements has all voices and the piano on too small pages, with sometimes only 6 measures per page - another nightmare (especially for the pianist), the more so if sheets are not stapled in the center - more than once some pages ended up on my pedal foot and had to be rescued while playing. A 100 and more years ago, scores were compressed extremely to save paper (you can find many of those at IMSLP).
I have (from having played and sung music now for more than 40 years) my own ideas about what is better and worse in scores - but not too rarely I meet people with different ideas (for example, when our eye-sight gets worse, we accept more page-turns in return for larger fonts ...); so it seems that there are no "ideal" distances, sizes etc.

H.M.
599
General Discussion / Re: RANT: user tools = useless tools
Additional thoughts/rants (it's a forum, after all?): Musical typesetting is a complicated and extensive topic.
But a tool for such a complicated topic only gets really good with a combination of power users + software developers that write the (complex!) tools that the power users envision and awkwardly try to describe and hope for.

However, most probably, 99% of all musical scores (NWC and others) created are experiments by medium-interested and medium-capable medium-frequency users which do not need much functionality, or even do not know what they need and want.

NWC, being a not-too well-known software, has a much too small base of power users and software engineers behind it - I would guess maybe 10 of the former (zero of which are the "multiplying power-users" like music publishers), and around 3 of the latter (Eric, Mike, Lawrie ... whom did I forget?).

The latter might be ok (you people are very ok! - it's the number I talk about); but the former number is (much?!) too small, it seems, to create that critical mass of critical and persistent and creative-destructive users that push developers to rewrite and rewrite again tools to reach the necessary usefulness, usability and robustness. That's the reason, I think, why most NWC user tools are at the moment too developer-oriented or very entry-level; and sometimes simply "old"; and it's not easy to change this.

Harald
600
General Discussion / Re: RANT: user tools = useless tools
I tend to agree with Bill. The only two tools I found useful (i.e., necessary - if a tool is not necessary, I won't use it and "rather write music", as Bill says) in my 17 years of NWC, are adp_Parts (thanks to Lawrie for pointing out how to lay out commands to call it in a usable way; after rearranging and prefixing them with 1...6, I can now call them with 3 key hits, which is essential; and of course to ADP who wrote it) and my own ShowRanges (some other tools were useful to understand how to write this one - thanks to those who wrote them ...).

And yes, even for me - a software developer and software architect ("the guy with the big picture; who knows about usability; and who can write a compiler"  :D) - finding out how and where to set up the tools was experimenting. A non-software person would never care or be able to do this.

@Mike, what do you man by "the embedded tools that are part of the user objects"? Do you mean those under ".Plugins" in the user tool dialog?

Harald