Skip to main content
Topic: Working with *.nwctxt files (Read 250360 times) previous topic - next topic

Re: Working with *.nwctxt files

Reply #50
No (to my knowledge; but I have seen a few 100 textual file formats in my life, so I guess I should have recognized a similar one). It's  an "enhanced" "CSV" format, using bars as "commas", commas as secondary separators, : and = as value assignments, and an implicit semantic block structure defined by AddStaff directives. I'd say it's about as adhoc as Microsoft's (old) VisualStudio format.

H.M.

Re: Working with *.nwctxt files

Reply #51
Yeah, I was afraid of that.  But when I realized Lilypond files were just TeX, I got a glimmer of hope that nwctxt was following some convention, like maybe something defined by the Lua language.  Oh well.

Re: Working with *.nwctxt files

Reply #52
Why "afraid", and "hope"? It's just another text file format - it can be parsed and written like any new format. And it is simple enough to be fully understood from a few dozen example files ...

H.M.


Re: Working with *.nwctxt files

Reply #54
Because examples have to be exhaustive in order for the format to be “understood”.  Without direct knowledge, there is no way to know if any selection of “example” files are exhaustive.

Re: Working with *.nwctxt files

Reply #55
Hope, because lasconic’s .nwctxt -> MusicXML converter makes mistakes when multiple lyric lines use voices to change rhythms on a man additional verse.  Without that bug fixed (and it doesn’t look likely), my users will be unable to import the content they created in NWC unless I write an importer from scratch.  And without proper documentation on what might appear in the file, interpreting my users files will be “best guess” instead of reliable.

Re: Working with *.nwctxt files

Reply #56
Well ... this might be becoming a fundamental debate about transport of information. But in all cases I have seen, the semantics is the much more complicated and interesting part than the syntax. The number of "simple XML formats" that define a catastrophic representation of the actual information is enormous - for example, Microsoft's second Visual Studio format. Having information in a "Tex" format is quite useless in writing a useful algorithm on that information; and, in many cases, I have seen syntactical biases essentially kill the understandability of many formats - many people operate under the assumption that if it saved as as TeX/XML/CSV/relational data, therefore it must follow the concepts of Tex/XML/CSV/rel.data. A famous example of such an ill-conceived format is the use of XML in Ant - a custom language would have been a much better choice.

... which is not to say that nwctxt is a highly professionally designed language; but using any other family of meta-format wouldn't have helped in the least.

H.M.

Re: Working with *.nwctxt files

Reply #57
Yes, that's the real problem - not because of any sort of format or meta-format, but because there is no complete semantics description. But no-one, up to now, seems to have found time to write such a beast ... any volunteers?

H.M.

Re: Working with *.nwctxt files

Reply #58
many people operate under the assumption that if it saved as as TeX/XML/CSV/relational data, therefore it must follow the concepts of Tex/XML/CSV/rel.data. A famous example of such an ill-conceived format is the use of XML in Ant - a custom language would have been a much better choice.

Oh, don't get me wrong, I hate TeX, but at least there are probably documented rules for writing parsers on it, along with open-source reference implementations.
And anyway, there are enough well-designed meta formats that it's really a waste of everybody's time to write a custom one for almost any application.  And if the meta format is popular enough, OSs have a built-in parser.  At least json has a standardized character encoding, and xml has a way to explicitly specify the character encoding, something the nwctxt format does not account for.  Which means my app has to GUESS.  I mean, I hate MusicXML, and have posted on my blog often about it's laughably-poor design, but at least there's an XML parser built in to the OS on all my users' devices, and I don't have to worry about whether the metaformat reads properly.  And extensive documentation on what represented values can be.  It's just they sometimes leave out the parts about what those values mean....

Re: Working with *.nwctxt files

Reply #59
Well, then we agree on quite a few things. However, ...

... NWC is, and that's a nice thing, not a software that considers itself as an "open tool for programmers". It is a music editor, with some technical interfaces that sort of do its work for solving some smaller common problems. So we'll, on this front, live with it as it is, I'd assume.

Those who want to integrate it in the "larger world of processing anything and everything" (be it musically; or technically) will probably skin their knees and elbows, here and there ...

H.M.

Re: Working with *.nwctxt files

Reply #60
My users are going to need content, and there is a huge amount of .nwc content out there.  hymnary.org, for instance, has at least a thousand well-formatted .nwc files.  I just want the work which went into creating the content to be useful.  And right now there is no technical solution to be able to use any of that content in my app without downloading, installing learning to use a 3rd party composition tool to correct almost every single lyric in an entire composition.  And when faced with that level of work, my potential users will simply never use the product.  That is unless lasconic (or someone else who knows java and understands how .nwctxt assigns lyrics to notes) fixes the bug in his converter, or I write an importer from scratch.

Re: Working with *.nwctxt files

Reply #61
Because examples have to be exhaustive in order for the format to be “understood”.  Without direct knowledge, there is no way to know if any selection of “example” files are exhaustive.
Long long ago there was a "NWCTEXT_Really_complete_example_file.nwctxt" but it became incomplete soon after being created.
Guess how it is today!  ;D

Re: Working with *.nwctxt files

Reply #62
Do you happen to know what was incomplete about it?  :-)

Re: Working with *.nwctxt files

Reply #63
In a few words: a lot.  :(
Think that we are talking of about ten years ago, probably when the textual format (nwctxt) was just introduced.

Re: Working with *.nwctxt files

Reply #64
Hope, because lasconic’s .nwctxt -> MusicXML converter makes mistakes when multiple lyric lines use voices to change rhythms on a man additional verse.  Without that bug fixed (and it doesn’t look likely), my users will be unable to import the content they created in NWC unless I write an importer from scratch.  And without proper documentation on what might appear in the file, interpreting my users files will be “best guess” instead of reliable.
It would probably help us understand your needs if you would tell us who your users/potential are, Ben? 

What is it you're trying to achieve? 

What do you expect your users will be doing that they can't do with the free  NoteWorthy Composer Viewer, available at https://noteworthycomposer.com/nwc2/viewer.htm ?

Re: Working with *.nwctxt files

Reply #65
Hi Ben,
I'd just like to chip in here to say that I have written an nwctxt importer/converter using php and JavaScript from scratch (check out qwikkey under user tools at scriptorium), and the nwctxt format is really quite self-explanatory and easy to understand. The variable names and valid parameter settings are all named in full like the Basic language, and follow on from the same option names as via the application menu. So if one does not know the valid settings for a given variable, e.g. Note, length, position, etc, one can just refer to the application menu options. If in doubt, I would just create a simple nwctxt file with just a few notes, and then analyze the nwctxt file. You'd find that it's so easy, you'd get the hang of it pretty quickly.
Hope this helps.     ???
my youtube channel

Re: Working with *.nwctxt files

Reply #66
I did attempt to post a long detailed answer to David Palmquist's question a few days ago.  However, I see now that it's not here.  Suffice it to say that the viewer does not even attempt to do any of the things I want.

Re: Working with *.nwctxt files

Reply #67
I'm sorry your reply was lost; I am interested in knowing what features are missing from the NWC Viewer that your users need. Is there any chance you could post a "short and sweet" version of your previous reply?

Re: Working with *.nwctxt files

Reply #68
I’m building a Mac app to help people sing along in church.  The vast majority are not musicians and will never be musicians.  It will export videos of a designed-from-scratch notation I am patenting, which people “just get” instinctively, with no formal training.  The app will be operated by untrained volunteers,  secretaries, and graphic artists; most of whom have no training in reading (or editing) conventional notation.  They will need an authoritative source of content, and hymnary.org has at least a 1000 well-formatted NWC files.  As long as lasconic’s NWC-> MusicXML converter has the bug about assigning lyrics to rhythms in subsequent voices, it will be useless for the vast majority of my customers.  Going through midi would lose lyrics and section-definition information which the users will need to re-order sections into alternate forms with no notation experience.

Re: Working with *.nwctxt files

Reply #69
I'm not familiar with lasconic's converter.  Maybe the problem is the converter rather than NWC.

Have you tried Niversoft's?  It will create MusicXML from nwctext files (I don't know how it works with lyrics.  Not my thing..
https://www.niversoft.com/products/xml2nwc/#conversion





Re: Working with *.nwctxt files

Reply #70
Yes, the bug is in the converter, not NWC.  NWC displays the files fine.

Re: Working with *.nwctxt files

Reply #71
Unfortunately, Niversoft's converter says "Binary NWC files cannot be converted here.", and I don't think my users will know how to extract a  binary deflate stream and inflate it.

Re: Working with *.nwctxt files

Reply #72
I don't think my users will know how to extract a  binary deflate stream and inflate it.
It is a simple process for anyone with NoteWorthy Composer. Open the binary file and save it as nwctxt.
Registered user since 1996

 

Re: Working with *.nwctxt files

Reply #73
According to data from another company who sells other kinds of content to the same market, my users will predominantly have Mac's.  For them to run NWC, they'd have to buy & install a few hundred $ of software (a vm solution, a license to windows) like I did, and for that price, they may as well buy Finale (churches get a 42% discount!), which I also did (without the discount), and then they can open the Finale files sold from praisecharts.com and lifewayworship.com and export to MusicXML (which my app can import, if poorly), and that would also give them access to newer popular songs (which I've also been doing for testing, and wow, automated detection of pick-up beats in Chris Tomlin songs is next to impossible.).  And that would assume that their corporate machine would allow them to install a vm or boot camp, which it probably won't.  The better solution is they download the original file and just import it into my app, and voila, nothing else to do.

The level of work I'm already asking them to do is 5 times more complicated than what most of them will likely do. Surf the web for content?  Download specific file formats?  "Import a file"?  "Pick a video codec" "Set a resolution on a video export"? Import the video into ProPresenter or MediaShout?  For lyrics only, all they have to do right now in their Christian presentation apps is log-in with their CCLI credentials once, then whenever they want a song, they just type the name of the song in the search field, and pick from the list.  Making that process more complicated is something I'm trying hard to avoid, because it's needless friction in the adoption process (and a bad user experience).

And while I would love to make my app that simple, and that was the original design, I'd need CCLI to return one of my voicemails, which I suspect will happen after the app is available for sale, after I've produced a testimonial video of ecstatic responses of folks somewhere loving the notation, and after some celebrity worship music composer/leader endorsements (which have been surprisingly easy to get).  But none of that can happen until the patent attorney finishes the draft  of the claims.  So here I am with an app that's ready to release, waiting on a cheap lawyer from legal zoom, trying hard to solve the biggest problem my users will ever face (content acquisition) with things I can do, like writing an importer for other popular file formats.

And since NWC was an affordable solution for me to start composing in high school in 1999, and there is a plethora of content, especially traditional hymns, in nwc format, I have a strong desire to enable that content to be usable in my app.

Re: Working with *.nwctxt files

Reply #74
..., they may as well buy Finale (churches get a 42% discount!),... to enable that content to be usable in my app.
They might as well, but there's a very steep learning curve with Finale.  Best of luck with your venture.

Re: Working with *.nwctxt files

Reply #75
So here I am ..., trying hard to solve the biggest problem my users will ever face (content acquisition) with things I can do, like writing an importer for other popular file formats.
NoteWorthy's compressed file format (at least since version 2.5) is not a secret. For someone with your resources, it should be possible to write an inflater that work with a non-Windows operating system.
Registered user since 1996

Re: Working with *.nwctxt files

Reply #76
I did write an inflater that does work on Mac, iOS, appletv, & Linux, and does extract the nwctxt portion of the compressed .nwc files.

Re: Working with *.nwctxt files

Reply #77
While I don't have the knowledge to help, I applaud your dedication and the effort you're putting into this project.  I wish you well with it.
I plays 'Bones, crumpets, coronets, floosgals, youfonymums 'n tubies.