npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

soma-cli

v0.0.5

Published

compositional tools for manipulating LilyPond data and rendering MIDI

Downloads

7

Readme

Overview

soma-cli is a Node.js-based CLI, providing compositional tools for generating PDF scores and MIDI files of musical material.

Despite the abundance of emerging music projects taking advantage of the Web Audio API, few, if any, offer exportability to formats supported by modern Digital Audio Workstations. This seems to limit their application to that of novelty -- undoubtedly creative in exploring modern web technologies, but ultimately impractical for use in the workflow of professional musicians and digital composers.

The existing LilyPond project is already excellent at what it does: generating PDFs of musical scores and optionally, MIDI files of the output score. However, the syntax can be tedious for those who don't want to have to write markup language just to generate music.

soma-cli aims to provide a set of modular tools for generating musical material that can then be immediately integrated into a musician's mature process. It abstracts away common musical conventions and choices a musician may make, quickly providing raw materials to later be developed as the user sees fit. The intention is not to realize a system that writes music for you, but rather one that hopefully takes some of the tedious busy work out of making music.

Examples

The soma-cli printScale major all 16 fold command above, will generate the PDF output below:

as well as an accompanying MIDI file of the exact same musical material.

Installation

npm i -g soma-cli

Note: you will also need to install LilyPond. soma-cli uses this for automatically compiling the output .ly files into .pdf and .midi.

soma-cli currently only offers support for macOS. Extending support to Linux and Windows is relatively trivial, and will be added in future releases.

If you are receving a Cannot find module error upon installing and running soma-cli, you likely need to point your NODE_PATH to the correct directory. You can do so by adding the following line to your .bashrc or .zshrc, depending on your shell:

export NODE_PATH=/usr/local/lib/node_modules

Upon first running, soma-cli will create a soma-output directory in your Home directory (~). All output will be saved there.

Commands

printScale (alias: ps)

Prints a scale (or multiple scales), with several different parameters

soma-cli printScale <sType> <key> <quant> <tail>

<sType> - Scale type

| Scale type | Argument | | ---------- | -------- | | Major | major | | Minor | minor |

<key> - Key

| Key | Argument | | --------------------- | -------- | | C | c | | Db | db | | D | d | | Eb | eb | | E | e | | F | f | | Gb | gb | | G | g | | Ab | ab | | A | a | | Bb | bb | | B | b | | All keys (from C - B) | all |

soma-cli also accepts a user-defined sequence of keys, provided as a String, as its <key> argument. For example, 'c db e f' will print the keys C, Db, E and F, in that order. The key sequence can be of any length.

<quant> - Quantization of scale

| Quantization | Argument | | -------------------------- | -------- | | Whole note (1/1) | 1 | | Half note (1/2) | 2 | | Quarter note (1/4) | 4 | | Eighth note (1/8) | 8 | | Sixteenth note (1/16) | 16 | | Thirty-second note (1/32) | 32 | | Sixty-fourth note (1/64) | 64 | | Hundred twenty-eighth note (1/128) | 128 |

Dotted notes can be indicated by adding a . after the integer argument (i.e. 8.)

<tail> - Sets the "tail" of the scale

| "Tail" | Argument | | --------------------------------- | -------- | | Rest | rest | | Add the second to last note | fold | | Add the first note (up an octave) | turnup |

chordGen (alias: cg)

Generate chords within a given key

soma-cli chordGen <type> <key> <count> <order> <num>

<type> - Scale type

Same scales are available as in the printScale command

<key> - Key

Same keys are available as in the printScale command

<count> - Number of notes in the chord

An integer from 1 - the selected scale length. Unique chord permutations are limited based on the total number of notes in the selected scale, and number of notes selected per chord.

<order> - Ordering of notes in the chord

| Ordering | Argument | | --------------------------------------------------------- | -------- | | Sort notes alphabetically | sort | | Sort notes in the order they were generated (i.e. random) | unsort |

<num> - Number of chords to generate

A number from 1 - ∞. Unique chord permutations are limited based on the total number of notes in the selected scale.

Version History

See CHANGELOG for full details

Contributing

Still in early gestation, the project will primarily be cared for and developed by its original maintainer (me). If you are interested in getting involved in the project, have issues or feedback, please reach out to me directly -- [email protected]

License

MIT © 2018 Nicholas Morera