music21j-port
Version:
A toolkit for computer-aided musicology, Javascript version
677 lines (492 loc) • 20.4 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8">
<title>Music21j Index</title>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/sunlight.default.css">
<link type="text/css" rel="stylesheet" href="styles/site.spruce.css">
</head>
<body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">Music21j</a>
<ul class="nav">
<li class="dropdown">
<a href="namespaces.list.html" class="dropdown-toggle" data-toggle="dropdown">Namespaces<b
class="caret"></b></a>
<ul class="dropdown-menu ">
<li>
<a href="music21.html">music21</a>
</li>
<li>
<a href="music21.articulations.html">music21.articulations</a>
</li>
<li>
<a href="music21.audioSearch.html">music21.audioSearch</a>
</li>
<li>
<a href="music21.base.html">music21.base</a>
</li>
<li>
<a href="music21.beam.html">music21.beam</a>
</li>
<li>
<a href="music21.chord.html">music21.chord</a>
</li>
<li>
<a href="music21.clef.html">music21.clef</a>
</li>
<li>
<a href="music21.common.html">music21.common</a>
</li>
<li>
<a href="music21.duration.html">music21.duration</a>
</li>
<li>
<a href="music21.dynamics.html">music21.dynamics</a>
</li>
<li>
<a href="music21.expressions.html">music21.expressions</a>
</li>
<li>
<a href="music21.fromPython.html">music21.fromPython</a>
</li>
<li>
<a href="music21.instrument.html">music21.instrument</a>
</li>
<li>
<a href="music21.interval.html">music21.interval</a>
</li>
<li>
<a href="music21.key.html">music21.key</a>
</li>
<li>
<a href="music21.keyboard.html">music21.keyboard</a>
</li>
<li>
<a href="music21.meter.html">music21.meter</a>
</li>
<li>
<a href="music21.miditools.html">music21.miditools</a>
</li>
<li>
<a href="music21.note.html">music21.note</a>
</li>
<li>
<a href="music21.pitch.html">music21.pitch</a>
</li>
<li>
<a href="music21.prebase.html">music21.prebase</a>
</li>
<li>
<a href="music21.renderOptions.html">music21.renderOptions</a>
</li>
<li>
<a href="music21.roman.html">music21.roman</a>
</li>
<li>
<a href="music21.scale.html">music21.scale</a>
</li>
<li>
<a href="music21.sites.html">music21.sites</a>
</li>
<li>
<a href="music21.stream.html">music21.stream</a>
</li>
<li>
<a href="music21.tempo.html">music21.tempo</a>
</li>
<li>
<a href="music21.tie.html">music21.tie</a>
</li>
<li>
<a href="music21.tinyNotation.html">music21.tinyNotation</a>
</li>
<li>
<a href="music21.vfShow.html">music21.vfShow</a>
</li>
<li>
<a href="music21.webmidi.html">music21.webmidi</a>
</li>
</ul>
</li>
<li class="dropdown">
<a href="classes.list.html" class="dropdown-toggle" data-toggle="dropdown">Classes<b
class="caret"></b></a>
<ul class="dropdown-menu ">
<li>
<a href="music21.articulations.Accent.html">music21.articulations.Accent</a>
</li>
<li>
<a href="music21.articulations.Articulation.html">music21.articulations.Articulation</a>
</li>
<li>
<a href="music21.articulations.DynamicArticulation.html">music21.articulations.DynamicArticulation</a>
</li>
<li>
<a href="music21.articulations.LengthArticulation.html">music21.articulations.LengthArticulation</a>
</li>
<li>
<a href="music21.articulations.Marcato.html">music21.articulations.Marcato</a>
</li>
<li>
<a href="music21.articulations.PitchArticulation.html">music21.articulations.PitchArticulation</a>
</li>
<li>
<a href="music21.articulations.Spiccato.html">music21.articulations.Spiccato</a>
</li>
<li>
<a href="music21.articulations.Staccatissimo.html">music21.articulations.Staccatissimo</a>
</li>
<li>
<a href="music21.articulations.Staccato.html">music21.articulations.Staccato</a>
</li>
<li>
<a href="music21.articulations.StrongAccent.html">music21.articulations.StrongAccent</a>
</li>
<li>
<a href="music21.articulations.Tenuto.html">music21.articulations.Tenuto</a>
</li>
<li>
<a href="music21.articulations.TimbreArticulation.html">music21.articulations.TimbreArticulation</a>
</li>
<li>
<a href="music21.base.Music21Object.html">music21.base.Music21Object</a>
</li>
<li>
<a href="music21.beam.Beam.html">music21.beam.Beam</a>
</li>
<li>
<a href="music21.beam.Beams.html">music21.beam.Beams</a>
</li>
<li>
<a href="music21.chord.Chord.html">music21.chord.Chord</a>
</li>
<li>
<a href="music21.clef.AltoClef.html">music21.clef.AltoClef</a>
</li>
<li>
<a href="music21.clef.BassClef.html">music21.clef.BassClef</a>
</li>
<li>
<a href="music21.clef.Clef.html">music21.clef.Clef</a>
</li>
<li>
<a href="music21.clef.MezzoSopranoClef.html">music21.clef.MezzoSopranoClef</a>
</li>
<li>
<a href="music21.clef.PercussionClef.html">music21.clef.PercussionClef</a>
</li>
<li>
<a href="music21.clef.SopranoClef.html">music21.clef.SopranoClef</a>
</li>
<li>
<a href="music21.clef.TenorClef.html">music21.clef.TenorClef</a>
</li>
<li>
<a href="music21.clef.Treble8vaClef.html">music21.clef.Treble8vaClef</a>
</li>
<li>
<a href="music21.clef.Treble8vbClef.html">music21.clef.Treble8vbClef</a>
</li>
<li>
<a href="music21.clef.TrebleClef.html">music21.clef.TrebleClef</a>
</li>
<li>
<a href="music21.duration.Duration.html">music21.duration.Duration</a>
</li>
<li>
<a href="music21.duration.Tuplet.html">music21.duration.Tuplet</a>
</li>
<li>
<a href="music21.dynamics.Dynamic.html">music21.dynamics.Dynamic</a>
</li>
<li>
<a href="music21.expressions.Expression.html">music21.expressions.Expression</a>
</li>
<li>
<a href="music21.expressions.Fermata.html">music21.expressions.Fermata</a>
</li>
<li>
<a href="music21.fromPython.Converter.html">music21.fromPython.Converter</a>
</li>
<li>
<a href="music21.instrument.Instrument.html">music21.instrument.Instrument</a>
</li>
<li>
<a href="music21.interval.ChromaticInterval.html">music21.interval.ChromaticInterval</a>
</li>
<li>
<a href="music21.interval.DiatonicInterval.html">music21.interval.DiatonicInterval</a>
</li>
<li>
<a href="music21.interval.GenericInterval.html">music21.interval.GenericInterval</a>
</li>
<li>
<a href="music21.interval.Interval.html">music21.interval.Interval</a>
</li>
<li>
<a href="music21.key.Key.html">music21.key.Key</a>
</li>
<li>
<a href="music21.key.KeySignature.html">music21.key.KeySignature</a>
</li>
<li>
<a href="music21.keyboard.BlackKey.html">music21.keyboard.BlackKey</a>
</li>
<li>
<a href="music21.keyboard.Key.html">music21.keyboard.Key</a>
</li>
<li>
<a href="music21.keyboard.Keyboard.html">music21.keyboard.Keyboard</a>
</li>
<li>
<a href="music21.keyboard.WhiteKey.html">music21.keyboard.WhiteKey</a>
</li>
<li>
<a href="music21.meter.TimeSignature.html">music21.meter.TimeSignature</a>
</li>
<li>
<a href="music21.miditools.Event.html">music21.miditools.Event</a>
</li>
<li>
<a href="music21.miditools.MidiPlayer.html">music21.miditools.MidiPlayer</a>
</li>
<li>
<a href="music21.note.GeneralNote.html">music21.note.GeneralNote</a>
</li>
<li>
<a href="music21.note.Lyric.html">music21.note.Lyric</a>
</li>
<li>
<a href="music21.note.Note.html">music21.note.Note</a>
</li>
<li>
<a href="music21.note.NotRest.html">music21.note.NotRest</a>
</li>
<li>
<a href="music21.note.Rest.html">music21.note.Rest</a>
</li>
<li>
<a href="music21.pitch.Accidental.html">music21.pitch.Accidental</a>
</li>
<li>
<a href="music21.pitch.Pitch.html">music21.pitch.Pitch</a>
</li>
<li>
<a href="music21.prebase.ProtoM21Object.html">music21.prebase.ProtoM21Object</a>
</li>
<li>
<a href="music21.renderOptions.RenderOptions.html">music21.renderOptions.RenderOptions</a>
</li>
<li>
<a href="music21.roman.RomanNumeral.html">music21.roman.RomanNumeral</a>
</li>
<li>
<a href="music21.stream.Measure.html">music21.stream.Measure</a>
</li>
<li>
<a href="music21.stream.Part.html">music21.stream.Part</a>
</li>
<li>
<a href="music21.stream.Score.html">music21.stream.Score</a>
</li>
<li>
<a href="music21.stream.Stream.html">music21.stream.Stream</a>
</li>
<li>
<a href="music21.stream.Voice.html">music21.stream.Voice</a>
</li>
<li>
<a href="music21.tempo.Metronome.html">music21.tempo.Metronome</a>
</li>
<li>
<a href="music21.tie.Tie.html">music21.tie.Tie</a>
</li>
<li>
<a href="music21.vfShow.Renderer.html">music21.vfShow.Renderer</a>
</li>
<li>
<a href="music21.vfShow.RenderStack.html">music21.vfShow.RenderStack</a>
</li>
<li>
<a href="Notation.html">Notation</a>
</li>
<li>
<a href="Page.html">Page</a>
</li>
<li>
<a href="Recorder.html">Recorder</a>
</li>
</ul>
</li>
<li class="dropdown">
<a href="global.html" class="dropdown-toggle" data-toggle="dropdown">Global<b
class="caret"></b></a>
<ul class="dropdown-menu ">
<li>
<a href="global.html#getM21attribute">getM21attribute</a>
</li>
<li>
<a href="global.html#layout">layout</a>
</li>
<li>
<a href="global.html#midiNumDiffFromFrequency">midiNumDiffFromFrequency</a>
</li>
<li>
<a href="global.html#recorderWorkerJs">recorderWorkerJs</a>
</li>
<li>
<a href="global.html#unpickler">unpickler</a>
</li>
<li>
<a href="global.html#warnBanner">warnBanner</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span8">
<div id="main">
<span class="page-title">Index</span>
<section class="readme-section">
<article><h1>Music21j</h1><p><strong>Music21j: An Interactive Framework for Musical Analysis</strong></p>
<p>Copyright ©2013-18, Michael Scott Cuthbert and cuthbertLab, some rights reserved.</p>
<p><strong>Music21j</strong> is a Javascript reinterpretation of the <a href="http://web.mit.edu/music21/">Music21 Python</a> package,<br>a toolkit for computer-aided musicology, now with intuitive HTML/Javascript<br>interfaces. Some of the things music21j offers are:</p>
<ul>
<li>The ability to visualize and hear changes in Streams quickly (using <a href="http://www.vexflow.com">Vexflow</a> and <a href="http://mudcu.be/midi-js/">MIDI.js</a>)</li>
<li>Connections (via Web Midi or <a href="http://jazz-soft.net">JazzSoft</a> plugin) to MIDI devices. </li>
<li>Music theory and analysis modules at the level of music21 ca. 2012</li>
<li>A repository of modules such as metronomes, keyboards, and automatic transcribers.</li>
</ul>
<p>Though it does not have all the power of <a href="http://web.mit.edu/music21/">Music21 Python</a>, music21j can help with<br>a number of research problems in music history and theory. The introduction to the<br>Python package will say more about it (it's better documented). The "namespaces"<br>tab above will give introductions to some of the features of music21j. At this<br>point we're focusing on documenting usage; developer docs will come<br>later.</p>
<p>Music21j requires your users to have a relatively recent web browser -- the project<br>targets browsers no more than two years old.<br>Safari 9+, Chrome since 2015 (v.32+), Edge 14+, or Firefox since 2014 (v. 26+).<br>Internet Explorer 11+ is currently supported, though timing of playback can be a bit off, but<br>support for it will be removed soon. Microsoft Edge is the only major desktop browser for which<br>there is no support for MIDI devices.</p>
<h2>Documentation</h2><p>This README appears in both the GitHub home page and the documentation<br>home page; to make the following links work, go to the documentation<br>page at http://web.mit.edu/music21/music21j/doc/ .</p>
<p>Begin at the <a href="music21.html"><code>music21</code></a> namespace (click the link or use the<br>menu above), or start with<br>a specific one such as <a href="music21.note.html"><code>music21.note</code></a> or <a href="music21.stream.html"><code>music21.stream</code></a><br>or a Class such as <a href="music21.note.Note.html"><code>music21.note.Note</code></a> or <a href="music21.stream.Stream.html"><code>music21.stream.Stream</code></a>. </p>
<p>(Ignore "Modules" they're not useful and duplicate the namespace pages).</p>
<h2>Example</h2><p>Install by downloading a copy of the music21 code to your own webserver.</p>
<p>If you have <code>git</code> installed, you can use (on Mac/Unix):</p>
<pre class="prettyprint source lang-sh"><code>% cd ~/git
% git clone https://github.com/cuthbertLab/music21j.git
% cd music21j
% ./updateGit
% npm install</code></pre><p>if the last line (<code>npm install</code>) doesn't work, download the<br>latest version of <code>node.js</code> first from https://nodejs.org/en/download/<br>and then run <code>sudo npm install -g grunt</code>. </p>
<p>A guide to installing music21j on Windows would be appreciated.</p>
<p>The files in music21j are best viewed by running your own<br>webserver (rather than using <code>file:///...</code> links). We've<br>included a small script to start you up:</p>
<pre class="prettyprint source lang-sh"><code>% cd ~/git/music21j
% grunt
% python start_python_server.py</code></pre><p>Then navigate to http://localhost:8000/testHTML/ for some demos.</p>
<p>To use music21j in your own page, place in a html page like this (this assumes that you're<br>using the python server above).</p>
<pre class="prettyprint source lang-html"><code><html>
<head>
<script data-main="/src/music21" src="/ext/require/require.js">
</script>
<script>
require(['music21'], function () {
// your code goes here. For instance...
var n = new music21.note.Note("F#");
var s = new music21.stream.Stream();
s.append(n);
s.appendNewCanvas();
});
</script>
</head>
<body></body>
</html></code></pre><h2>Version</h2><p>0.9.0 alpha</p>
<h2>License</h2><p>Music21j is released under the BSD 3-Clause License. Essentially you<br>can do with it what you want so long as you leave in my copyright statements<br>and do not represent that I endorse your product.</p>
<p>Or you can choose to use the GNU Lesser Public License if for some reason<br>that suits your project better.</p>
<h2>Thanks</h2><p>Thanks to the following packages (among others) for making music21j possible:</p>
<ul>
<li><a href="http://www.vexflow.com">Vexflow</a> - music notation in HTML5</li>
<li><a href="http://mudcu.be/midi-js/">MIDI.js</a> - audio processing of MIDI</li>
<li><a href="http://jazz-soft.net">Jazzsoft</a> - plug-in for accessing MIDI in the browser in the absence of WebMIDI Api.</li>
<li><a href="http://requirejs.org">require.js</a> - method for loading multiple modules in the browser and managing dependencies.</li>
<li><a href="http://jquery.com">jQuery</a> - easy manipulation of HTML DOM.</li>
<li><a href="http://qunitjs.com">qUnit</a> - testing framework</li>
<li><a href="http://usejsdoc.org">jsdoc</a> - makes this documentation possible</li>
</ul>
<p>Music21j in the Music and Theater Arts section at <a href="http://web.mit.edu">MIT</a>.<br>The Python version of music21 was supported by grants from<br>the Seaver Institute and the National Endowment for the Humanities.</p>
<h2>Dev Notes</h2><p>Before building, every once in a while run (in the music21j directory)</p>
<pre class="prettyprint source"><code>npm-check-updates</code></pre><p>and if it looks like something to update, run</p>
<pre class="prettyprint source"><code>npm-check-updates --upgradeAll
npm update</code></pre><p>Build documentation with:</p>
<pre class="prettyprint source"><code>grunt jsdoc</code></pre><p>The template is specified in jsdoc-template/jsdoc.conf.json</p></article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
Music21j, Copyright © 2013-2018 Michael Scott Cuthbert and cuthbertLab.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a>
on Wed Jul 4th 2018 using the <a
href="https://github.com/terryweiss/docstrap">DocStrap template</a>.
</span>
</footer>
</div>
<div class="span3">
<div id="toc"></div>
</div>
<br clear="both">
</div>
</div>
<!--<script src="scripts/sunlight.js"></script>-->
<script src="scripts/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "[id*='$']" ).each( function () {
var $this = $( this );
$this.attr( "id", $this.attr( "id" ).replace( "$", "__" ) );
} );
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : "100px"
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
$( '.dropdown-toggle' ).dropdown();
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find( "code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html( exampleText );
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu : true,
enableDoclinks : true
} );
} );
</script>
<!--Navigation and Symbol Display-->
<!--Google Analytics-->
</body>
</html>