Parser and generator for the .nwctxt format used by Note Worthy Composer.
Also includes conversion to the midi format.
Look at the demo and the API documentation.
npm install nwctxt
import { readFileSync } from "fs";
import { parser } from "nwctxt";
// Parses myFile.nwctxt:
const fileContent = readFileSync("myFile.nwctxt", "utf-8");
const parsedFile = parser.parse(fileContent);Examples of nwctxt files and their equivalent json representation returned by the parser are available in the test/files folder.
import { writeFileSync } from "fs";
import { generator } from "nwctxt";
// Generates myNewFile.nwctxt:
const newFileContent = generator.generate(parsedFile);
writeFileSync("myNewFile.nwctxt", newFileContent, "utf-8");The lower level API is similar to the normal API but works with a simpler representation of nwctxt files, containing a simple array of instructions, without separating the different staffs. It is used internally by the normal API.
import { readFileSync } from "fs";
import { lowlevel } from "nwctxt";
// Parses myFile.nwctxt:
const fileContent = readFileSync("myFile.nwctxt", "utf-8");
const parsedFile = lowlevel.parse(fileContent);
// parsedFile contains:
// parsedFile.version: Note Worthy Composer version as a string (e.g: "2.75")
// parsedFile.clip: true if the parsed content is in the clipboard format (!NoteWorthyComposerClip),
// false otherwise (!NoteWorthyComposer)
// parsedFile.extra: Extra information after Note Worthy Composer version (e.g. "Single")
// parsedFile.instructions: array of line objects with the following structure:
// parsedFile.instructions[0].name: Name of the command (such as "AddStaff")
// parsedFile.instructions[0].fields: array of parameters with the following structure:
// parsedFile.instructions[0].fields[0].name: Name of the parameter
// parsedFile.instructions[0].fields[0].quoted: Whether the value is quoted
// parsedFile.instructions[0].fields[0].value: Value of the parameterimport { writeFileSync } from "fs";
import { lowlevel } from "nwctxt";
// Generates myNewFile.nwctxt:
const newFileContent = lowlevel.generate(parsedFile);
writeFileSync("myNewFile.nwctxt", newFileContent, "utf-8");