Skip to main content

Show Posts

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

Messages - Opagust

I've recently started having that message pop up when saving that the program is unable to save a BAK file, and do I want to save anyway (which I do). It's possible that I have changed something I shouldn't during a computer housecleaning episode.
I've had the same message and after investigating the properties of the BAK file I discovered it was read-only. When testing my tool 'File Organization' I had locked and unlocked the original nwc file. I presume that the BAK file was last created when the original file was locked.
User Tools / Re: File Organization
Thanks for developing this tool. I'm going to try it out later today.
I noticed you've been quite busy these days, but I wonder: have you already found time to try this tool?
I'm curious if it satisfies your needs.
Let me know if it can be improved.
User Tools / Re: File Organization
:-[ I think it works now (for me it does!)
See the topic in the user tool subforum:File Organization
User Tools / File Organization
The purpose of this tool is to provide a sort of 'version management'.
A possible scenario:
- When you think a draft version of your score is ready to be 'promoted' or secured,
you can register the date last modified in the File Info comments section, create a
read-only copy in a dedicated folder, with one or more suffixes added to the file
name to see at a glance the date last modified, the creation date of the copy and/or
a 'version text'.
- Then you can safely continue working with the original draft version.
- If you want to work again with the secured version, you could unlock it, or leave
it locked and create a new, writable copy in your 'working' folder. 

The tool window:
- The date modified, shown at the top of the window, is extracted from the Windows
file system.
- The 'File Info Comments' frame shows the comment section of the 'File Info' from
the input file. 
- The actions that you select in the 'Actions' frame are not accomplished until you
click one of the buttons 'Save changes' or 'Save copy'.

If you save a copy of the input file, you can add one or more suffixes:
- #m, followed by the date modified
- #c, followed by the creation date of the copy
- #v, followed by a self chosen text
(Remark: Any suffixes of the input file are not retained in the name of the copy.)
Via a popup window you can choose the folder for the copy. (Remark: If the folder
doesn't exist, you'll be ask if it should be created.)

Since the script is written in the Python programming language, it can't be run directly in the NWC Tools environment, so I have build an executable file from it (file_organization.exe) and a Windows installation file.
I can't attach it here, bt you can find the zipped installation file in my website:
After you have downloaded that file, you can unpack and run it. It will install the tool as a Windows application. It will suggest a folder, but you can change that. Copy that folder name.
The next step is the installation in NWC:
- Open the User Tools window (via Tools/User Tool...)
- Click 'New...' and fill in the dialog box:
  - Choose e group and a name
  - In the command line, paste the folder name where the tool is installed, followed by '/file_organization.exe' (without the quotes)
   - Choose 'File Text' as Input Type
   - In the Options section: leave 'Compress Input' unchecked and chek the other ones.
- Click 'OK'
I only see 2 concerns:
1) you would need to install a python interpreter - not really a big deal I wouldn't think.
2) it needs to be run manually each time you go to edit the file whereas an object would just happen.
1) I plan to create a windows installer for it. So after running that, the result will be an executable file.
2) It doesn't run automatically like a user object, but it can do things a user object can't do. That's the reality we have to deal with. But you won't have to run it each time you edit the file, just when you think you have a 'tentative final version'. ::)
And it may look like this:
I have an idea for a tool I could write in the Python language, with which you could do some or all of the the following things:

- Add the 'date modified' to the File info comments.
- Insert a User Object 'PageTxt.nw'(+ PageTxtMaestro.nw, if not yet present) in the first not-hidden staff, that will print the' date modified' at the bottom left of each page.
- Save a read-only copy of the file with the date modified (or a 'blocking date'?) added as suffix to the file name.

A second (or the same tool) could take the read-only file as input, and save a new, writable version with an extra suffix to indicate the 'unblocking date'.
I have an idea for a tool I could write in the Python language, with which you could do some or all of the the following things:

- Add the 'date modified' to the File info comments.
- Insert a User Object 'PageTxt.nw'(+ PageTxtMaestro.nw, if not yet present) in the first not-hidden staff, that will print the' date modified' at the bottom left of each page.
- Save a read-only copy of the file with the date modified (or a 'blocking date'?) added as suffix to the file name.

A second (or the same tool) could take the read-only file as input, and save a new, writable version with an extra suffix to indicate the 'unblocking date'.
I have a 'déja vu' experience.
I remember I wrote a user tool enharmonic.og.lua, see:
Enharmonic Spelling - Note Entry
If you want to make a list what's important when you're programming:
  • 0:  Always start counting from 0.
  • 1: In lua, start from 1.
User Tools / Re: AddRestMeasures
OK, Rick, I follow. One can always unhide a staff, if needed.
New version in original post
Thanks, Rick!

Checking 'Prompts for User Input' solved my problem.
Why didn't I thought about that?
But of course, you're always there to help the ignorents!

I'm experimenting with a user tool written in Python, since I like Python more then Lua. In this tool I use the module PySimpleGui to create a popup  window to accept some user input (see attachment 'Knipsel1'). The problem is: there seems to a timeout after about 10 seconds. If nothing is entered within that time, the tool aborts (see attachment 'Knipsel2').
I use the module PySimpleGui in other Python scripts and never had that problem. So I think the timeout is generated by the user tool environment of NWC.
Is there anyone who has an idea how to solve this?
User Tools / Re: AddRestMeasures
IMO, the tool should only affect visible staves. A command line switch is not really needed.
Any other opinions? ::)
User Tools / Re: AddRestMeasures
Maybe just a single question whether to include hidden staves. Is there a way for a user tool to have a parameter passed in on the command line, so that the tool won't prompt for it when it is run? That would allow people to customize it so it doesn't ask questions that they will always answer the same.
I think that's possible. I'll look into it.
Any suggestion for the command line parameter, something like 'hidden=no'?
User Tools / Re: AddRestMeasures
Does it affect ALL inactive staves, or only the visible ones?

I ask because I use templates that often have many more staves than I might use for any particular work and filling staves I'm not going to use would be something of a nuisance I reckon.

Yes, it affects all inactive staves. May seem a nuisance, but who cares? Do you?
I could add a dialog to indicate the staves (not) to be affected, but that would make the tool less handy.
I like to win ;D , so I wrote a new tool: AddRestMeasures.og
User Tools / AddRestMeasures
The reason I wrote this tool is this topic.
This tool add 'rest measures' to every visible staff that has less measures then the active staff. Each 'rest measure' contains a copy of the corresponding measure in the active staff, replacing notes, chords and restchords with rests of the same duration.
Edit 03/05/2020: hidden staves remain unchanged
Installation: download the attached script, start NWC, open any file and drag anddrop the downloaded script onto the NWC window.
And this is one I wrote 6 years ago: ExtendStaff
I discovered a little typo: '64h' instead of '64th' (in two places) :))
General Discussion / Chorus online
Message to all the singers: you can join a GLOBAL CHORUS!
General Discussion / Re: Multi staves
Is there a way of transferring common features from the top stave to all subsequent.

I wrote a tool that may do what you want.
To install: download the attached lua file, open any file in NWC an drag and drop the lua file onto the NWC window.
With the Beam.hmm object, it's not too hard, I'd say - see example.

I agree it's not too hard, but nevertheless I thought 'Maybe it can be made even easier', so I wrote ColoringBeamsSlursTriplets.og

Credits for @Rick G. and @hmmueller !
Quote from @fathafluff in topic Note Color Question

When I select the notes and change the color, the note heads, stems and accents change to the new color, but the beams, slurs and leger lines do not.

Thanks to the replies of @Rick G. and @hmmueller, we know there are workarounds: markers for slurs and triplets, user object beam.hmm for the beams (with the appropriate color set).

With this tool, the necessary markers and beam objects are cretaed. It contains an algorithm to determine the position and final stemlength of the beam object and the position af the triplet marker, but maybe you need to change them for an optimal result.

Installation: After downloading this tool, start NWC, open any file and drag and drop the tool onto the NWC window and confirm.

Use: Select a group of notes ( only the first note needs to be colored), and press ALt-F8 to run the tool.
User Tools / Re: ExportImportMeasures.og
Thanks Horst, for these useful remarks.

Just one small clarification: the size restriction is not on the clipboard, but on the input box of the user tool environment, during import. After some trial and error, I found that the maximum size was something above 5000 characters. Since the output size during export doesn't have that restriction, my tool now checks for that limit in the export phase (after a suggestion of you, Horst).
User Tools / Re: ExportImportMeasures.og
Version 2.0 is now available (see original post).
It has been thorougly test by Horst H., thanks!

Apart from fixing some bugs, following modifications are added:
* Extending incomplete staves, not only before, but also after the import.
* Warning at the export stage for possible exceeding the maximum length for import.
* The medley title in the commnents section should be in the last line. This is now added in the help text.
General Discussion / Re: NWC on Facebook
Me three.  A very long time ago I had a Facebook account, but I chose to delete it, and have never gone back.

Hi Mike,
The NoteWorthy Composer Facebook account published this today:
Hey! What about Ukulele Chord Charts?
Insert: Object (0.5)
User Tools / Re: ExportImportMeasures.og
Hmm.  Not sure what I'm doing wrong but on a simple 2 staff, one lyric song I get the following error message when trying to import the results to a new file:

C:\ProgramData\Noteworthy Software\nwc2\UserPlugins\ExportImportMeasures.lua:121: bad argument #1 to 'sub' (string expected, got nil)

I took a quick look and I think this error occurs when the comments section in the SongInfo panel is empty. I wait for the next comments of Horst to include that change. In the mean time, maybe you can just enter something in the comments section (a space would be enough). If you retry whithout the error occurring, then my suspect was right.
I've put the final(? ::) ) version in a seperate post.

See ExportImportMeasures.og.

All comments or bug reports are welcome.
User Tools / ExportImportMeasures.og
Version 2.0 is now added.
Apart from fixing some bugs, following modifications are added:
* Extending incomplete staves, not only before, but also after the import.
* Warning at the export stage for possible exceeding the maximum length for import.
* The medley title in the commnents section should be in the last line. This is now added in the help text.

* With this tool you can copy all or selected measures (of all staves), including the lyrics, and pasting them in another file. A possible use is to reassemble a medley from its separate songs.

* In order to do this, you have to run the tool from a source file to 'export' a selection or all measures.
You'll be shown an output window, which you have to copy into your clipboard.

* Then you have to rerun the tool from your 'destination file' to import (append or insert after a specified measure) the exported items . An input window will be presented where you have to paste the content of your clipboard.

* The input screen for the import seems to be limited. The tool will check if the input contains the trailer line and ends with an error message if not. In that case, use smaller selections for exporting.

* In the selection box for last measure to export, a default value of 1024 is prefilled. Leave that unchanged if you want to specify the last measure of your file.

* Linking the import staves to the corresponding staves in the destination file is done by comparing the staff labels.
If no matching is found, you'll be presented two options: specify the staff to link with, or add a new staff.
If you have specified a linking staff, you'll be asked wich label has to be withheld.

* A text marker with the song title will be added in the first imported measure of the first staff. 

*It's recommended that, before importing, you add the medley title as a line in the comments section of the Song Info window. This line should start with "MedleyTitle:", without a space.
You can start with a copy of the first song as destination file. At the fist import (of the second song), the song title of the first song will be added as a text marker in the first measure, and the medley title from the comments will be used as new song title.

* The following properties of a staff will be compared with those in its corresponding imported staff: visibility, muted, layered, ending bar, volume, stereopan, channel, play back device, instrument, default dynamic velocities and trasposition.
Difference will be reported and you have the choice to proceed or cancel. If you proceed, the propertied of the destination file will be withheld.
* Before appending or inserting the imported staves, incomplete staves in the destination file will be extended with measures containins rests, up to the insertion measure.

* If a stave contains few lyric lines than the corresponding imported staff, the number of lyric lines of the destination file will be augmented and the lower boundary increased accordingly.
* Incomplete lyric lines in the destination files will be filled with underscores, separated with blanks.
I also get these messages each time I change a template, but that does'nt prevent me to save the change anyway.
Don't know why your save isn't succesful.

Maybe the object/user tool combination rehearsal.og can be helpful.
Its purpose is creating seperate files for the different voices, by specifyng a.o foreground and background volumes and stereo pan.

(I myself am not a musician, but a tech guy who likes to sing in a choir, and with that tool I've become much more confident during the repetitions (and performances).)
I'm popping to say that I look forward to trying out this tool, and to ask if you could let me know when you've finished the tweaks (posting in this thread should be enough). I was using your other cut/paste tool recently and thinking again about how thankful I was for the time savings!
Best wishes with your surgery recovery.
I'm still working on it, but I want it to be as good as I think it can be, so there's also quite a bit testing involved.
As to my surgery recovery: better than I thought it would be  :D , but as a consequence I spent less time in my sofa with my laptop >:( .
So please a little patience.

Hi Horst,

Here are my thaughts on your comments:

- Bar Lines: I think I should insert a double bar if neither the end of the  destination staff ends, nor the start of the imported staff starts with a bar of some type.
- Song Titles: I use the font 'Staff Title Text', the actual size depends on the options of the destination file, but by definition it will always be large. Scaling to 75% is indeed a good idea, as is moving it to position 21.
- Quotaion marks within text markers: I don't see that im my test files. I'm using NWC version 2.8 Beta 1, maybe that's the reason. I will look if I can intercept it.
- Medley Title: I have the following idea, that might solve this problem.
Add a line with the medley title in the comments area of each of the separate songs, in the form 'medley title:' + the title.
If you take the first song file as destination file to start with, then on the first import (of the 2nd song), the destination file will still have it's original song title. The tool can copy that title to a text marker in the first measure, and change the song title to the medley title. It then copies the song title of the 2nd song in the first measure of the imported song. On te next imports, the song title of the destination file will match tke medley title in the comments area of the imported song, so only the song title of the imported song will be copied to a text marker. It will be necessary of course that all songs contain the medley title.
I hope I did clearly explain my thaughts about this.
- Truncation of overflowing text: Unfortunaly, when the import is truncated, it will not leave a clean result that can be pasted, because the truncation will occur somewhere in the middle of a staff, so some staves may be complete, while others won't be.
- Incomplete or fewer lyric lines in the destination file: the tool will take care of that.
- The same applies to incomplete or fewer staves.
Congratulations, Opagust: You've made it!
I have just completed the first medley out of 5 songs. The look of it appears really OK after a few manual modifications.
Sound check will follow tomorrow, and then, of course, a couple of comments.
Hope I can find sleep now, excited as I am...
Hi Horst,
I'm glad it worked out well for you!

Now I'm working on a new version, after some thoughts of David PalmQuist.
This version includes:
* more elaborate checking and reporting on staf property mismatches
* automatically extend incomplete lyric lines in the destination file with spaces and underscores
The coding for these additions is done, testing seems OK.
Next I will try to accomplish the automatically extension or creation  of incomplete or absent staves in the destination file.
If that woks out well, I expect the manual modifications to be reduced to a minimum.
Hi David, thanks for your response.

First of all: this isn't an object, but a tool. The difference might not be clear for every user, so let me explain:
* an object is inserted in a file, you do it once, and it'll do whatever it's supposed to do every time the file is shwon, printed, played.
* a tool can be invoked from within a file and does then his job with the file, but the tool itself is not permanently included in the file.

That said, let me comment on your thoughts:

1.I have been thinking of it, but I wanted to keep the dialog short. The user can easily insert a system or page break himself.

2. At the start of the first measure of the top staf of the imported part, the tool will insert a text marker above the staff with the song title with the font 'Page Title Text'. Again, the user might insert a boundary offset change, if needed.

3. For as it is now, the tool checks that, for every staff in the imported part, there's a staff in the destination file wit the same name. If not, the tool ends with a simple error message (on the first mismatch). If all the imported staves have a match, they inherit all properties of the matching staff in the destination file.
Maybe I should check more then the name alone and provide more elaborate information when there's a mismatch. The properties shown in the score review panel might be an inspiration?

4. The song title is now a text marker at the beginning. Maybe I can also insert the song tile + ' - end' in a text market at the end (with a smaller font).

Again, thanks for your input,


(And whoever wants to comment on this, please don't hesitate!
So here is my first version of  'ExportImportMeasures.og'. Please let me know if it covers your needs or you've find any bugs.
When running, you can choose Action = 'Show Help' and 'Show Conditions' for further useful information.

I'm looking forward for your response(s).
A final version will be published in a separate post.

I'm in the stage of testing a new tool 'ExportImportMeasures'.
The bridge between the export and the import should ideally be the clipboard, but I don't think that's possible in a lua user tool. So one has to copy the exported side from the output screen and then pasting it back in the input screen for the import run.
But there seems to be a size limit on the input screen, so that a part or the exported part can be lost. So it will be necessary to check if the import is complete. If negative, you should use partial import/exports.
I know lua must have a library for copying and pasting to/from the windows clipboard, but within a user tool libraries can't be included. So I suppose it's not possible?
Some people (e.g. my wife ...) inadvertently touch the touchpad while using the keyboard, and then weird things start to happen

After a long time of suffering from the same problem, I found for myself a solution: in the settings of the touchpad, I unchecked "tap with one finger to click". Since then inadvertently touching the touchpad isn't causing any weird things anymore, like suddenly  jumping to the mouse pointer when typing text.
Just as a note: I'm quite opposed to using measure numbers in a tool. Measure numbers are for musicians in the final product; but while editing, they are ill-defined, especially over multiple staves. Better, in my experience, are simple text markers put into the staves - they remain stable even when things are added or removed before them; and can easily by copied and removed by small helper tools.


In the tool I'm writing now, measure numbers are used as 'coördinates' to know which part of a file is to be exported, and where in the destination file the import has to be inserted. There will be no manipulation of measure numbers. The only and logical effect will be that NWC will adjust the measure numbers in the destination file.
Wow, Opagust: You appear already deeply immersed in my issue!
My pleasure! (I'm recovering from a hip implant, so I have some free time to spend)

I have some more questions for the import side:
- Should the exported stuff always be added at the end of the destination file or have I to provide an option to insert after a specific measure?
- If desirable, I could add a text item above the first imported measure with the song title.

After rereading your replies, I think I'm gonna write a seperate tool for this.

- As I understand, your aim is to export all measures and lyrics from all staves of a 'source file' and import them at the end of a 'destination file'?  Or should there be a possibility to select the staves and the measures, as in CopyPasteMeasures?

- You're talking about "types varying between SAB and SSAATTBB". So it will be necessary to provide all the voices in the first song of the medley (wich will be your destination file). The other songs that have to be added may have less voice parts, but the staff names will have to match with one of the destination file. The staves of the destination file that are not present in the source file, can then be extended with a boundary collapse and a multimeasure rest.

- I suppose the number of verses of the seperate songs can vary. That also will necassitate special treatment.
Doesn't that cry for a synthesis?
CopyPasteMeasures.og would need another option of 'Just Copy' which should finally provide the address of the copied stuff.
Then, the 'Paste' part of that tool would have to be separated into a stand-alone tool, to be operated from the destination file  and receiving the 'clipboard' address. It would, however, have to ask for the starting point in terms of first staff to be pasted to, and start measure (but why not, just the cursor position?).

I don't promise anything by now, but I think it's possible to extend the tool to satisfy your needs.

A usertool can only be run within an open NWC file and can only do things with that file.
But 3 years ago Rick G. has written 2 tools:
1. for copying a staff from one file
2. for pasting that staff into another file

I think that's what you need.
The playlist feature alone is much more useful than trying to use a simple PDF reader.

I'm experimenting now with Xodo PDF Reader & Annotator and I discovered a feature to merge multiple PDFs. If I then save them as 'my playlist', I can read it in as one file.
So, for the time being, I'll stick with this free program, thanks to Mike.

I downloaded MusicreaderPDF and at first glance, I don't like it:
  • Odd user interface
  • few contrast, pale score
  • last staff on last page was cutten off
  • I don't need clouds, I prefer the sunlight
I use a free program called Xodo PDF Reader & Annotator on my Surface Pro tablet, which has a stylus. It has very nice annotation features, including automatic recognition of the stylus for marking up PDFs. I use it for choir music (much of which is NWC scores). You can check it out at
Thanks, Mike.
I downloaded it and experimented a bit on my old laptop and it seems very good. On my new computer I will have a touch screen and a stylus pen, so I think this will do the job well!
Thanks again.