Nanananananananana.. Pat Man!

    praat-script

    0.4.2 • Public • Published

    praat-script

    Generate and run Praat scripts from Node.js.

    Installation

    Download node at nodejs.org and install it, if you haven't already.

    npm install praat-script --save

    To actually run scripts, you will need Praat. node-praat (npm install praat) is one easy way to install it in a Node application. praat is an optional dependency of praat-script and is required for the .run() convenience method to function correctly.

    Usage

    Creating and running scripts

    To demonstrate praat-script, we'll use a simple script that generates a Sound object, plays it and exits.

    var praatScript = require('praat-script');
    praatScript([
      'Create Sound as pure tone: "tone", 1, 0, 0.1, 44100, 440, 0.2, 0.01, 0.01' + '\r\n' +
      'Play'
    ]).run(function(err) {
        if (err)
            throw err;
        console.log('Success!');
    });

    But this module really shines when used along with ES6 tagged template strings.

    Since template strings are multi-line, the ES6 version of our static script is already nicer to look at: (Run with a JavaScript engine that supports ES6 template strings, or use a transpiler like Traceur.)

    praatScript`
      Create Sound as pure tone: "tone", 1, 0, 0.1, 44100, 440, 0.2, 0.01, 0.01
      Play
    ` //.run(...);

    And now we can even embed JavaScript expressions directly in our Praat code! praat-script quotes and escapes everything correctly.

    var freq = 440;
    var name = "theTone";
    praatScript`
      Create Sound as pure tone: ${name}, 1, 0, 0.1, 44100, ${freq * 2}, 0.2, 0.01, 0.01
      Play
    ` //.run(...);

    Of course, since template strings are merely syntactic sugar, you can technically also do the same in ES5, though it won't be as readable:

    praatScript(
        [
            'Create Sound as pure tone: ',
            /* name will go here */ ', 1, 0, 0.1, 44100, ',
            /* freq*2 will go here */ ', 0.2, 0.01, 0.01' + '\r\n' +
            'Play'
        ],
        name, freq*2
    ) //.run(...);

    Miscellaneous functions

    Getting the text of a script

    praatScript`...` .toString() or praatScript([...]).toString() works as you'd expect.

    Specifying the path to Praat

    Using .runWith('path/to/praat', callback) instead of .run(callback) will use the specified Praat executable instead of the default (which is the path returned by require('praat')).

    .formatArgument(value)

    praatScript.formatArgument(value) takes a JavaScript value and returns a string formatted for use in Praat.

    .run(script, cb) (and .runWith(pathToPraat, script, cb))

    You can bypass the template functionality entirely and execute a script by passing its source code as praatScript.run()'s first argument (a string). This otherwise works similarly to calling .run() on the template string instance.

    Tests

    npm install
    npm test
    
    > praat-script@0.1.1 test node-praat-script
    > mocha
      praat-script module
        #formatArgument()
          √ should quote and escape string arguments 
          √ should stringify numbers 
          √ should convert booleans to 0 and 1 
        template string
          √ should escape arguments correctly via praatScript`...` 
        #run()
          √ should run an empty script successfully (118ms)
          √ should run a simple script successfully (872ms)
          √ should run a template string script successfully (1052ms)
      template script instance
        #run()
          √ should run an empty script successfully (82ms)
          √ should run a simple script successfully (950ms)
          √ should run a template string script successfully (897ms)
      10 passing (4s)
    
    

    Dependencies

    • tmp: Temporary file and directory creator

    Optional Dependencies

    • praat: A cross-platform NPM installer for Praat (required to use .run())

    Dev Dependencies

    • mocha: simple, flexible, fun test framework
    • mocha-traceur: A "compiler" plugin for Mocha that makes non-dependency JS files to pass through Traceur
    • traceur: ES6 to ES5 compiler

    License

    MIT

    Generated by package-json-to-readme

    Keywords

    none

    Install

    npm i praat-script

    DownloadsWeekly Downloads

    4

    Version

    0.4.2

    License

    MIT

    Last publish

    Collaborators

    • motiz88