music21j-port
Version:
A toolkit for computer-aided musicology, Javascript version
3,083 lines (1,254 loc) • 106 kB
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Music21j Class: Stream</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">
<h1 class="page-title">Class: Stream</h1>
<section>
<header>
<h2>
<span class="ancestors"><a href="music21.html">music21</a><a href="music21.stream.html">.stream</a>.</span>
Stream
</h2>
</header>
<article>
<div class="container-overview">
<dt>
<h4 class="name" id="Stream"><span class="type-signature"></span>new Stream<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
<p>A generic Stream class -- a holder for other music21 objects<br>Will be subclassed into <a href="music21.stream.Score.html"><code>music21.stream.Score</code></a>,<br><a href="music21.stream.Part.html"><code>music21.stream.Part</code></a>,<br><a href="music21.stream.Measure.html"><code>music21.stream.Measure</code></a>,<br><a href="music21.stream.Voice.html"><code>music21.stream.Voice</code></a>, but most functions will be found here.</p>
</div>
<dl class="details">
<h5 class="subsection-title">Properties:</h5>
<dl>
<table class="props table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th>Default</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>elements</code></td>
<td class="type">
<span class="param-type">Array.<<a href="music21.base.Music21Object.html">music21.base.Music21Object</a>></span>
</td>
<td class="attributes">
</td>
<td class="default">
</td>
<td class="description last"><p>the elements in the stream. DO NOT MODIFY individual components (consider it like a Python tuple)</p></td>
</tr>
<tr>
<td class="name"><code>length</code></td>
<td class="type">
<span class="param-type">Int</span>
</td>
<td class="attributes">
</td>
<td class="default">
</td>
<td class="description last"><p>(readonly) the number of elements in the stream.</p></td>
</tr>
<tr>
<td class="name"><code>duration</code></td>
<td class="type">
<span class="param-type"><a href="music21.duration.Duration.html">music21.duration.Duration</a></span>
</td>
<td class="attributes">
</td>
<td class="default">
</td>
<td class="description last"><p>the total duration of the stream's elements</p></td>
</tr>
<tr>
<td class="name"><code>highestTime</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="default">
</td>
<td class="description last"><ul>
<li>the highest time point in the stream's elements</li>
</ul></td>
</tr>
<tr>
<td class="name"><code>clef</code></td>
<td class="type">
<span class="param-type"><a href="music21.clef.Clef.html">music21.clef.Clef</a></span>
</td>
<td class="attributes">
</td>
<td class="default">
</td>
<td class="description last"><p>the clef for the Stream (if there is one; if there are multiple, then the first clef)</p></td>
</tr>
<tr>
<td class="name"><code>timeSignature</code></td>
<td class="type">
<span class="param-type"><a href="music21.meter.TimeSignature.html">music21.meter.TimeSignature</a></span>
</td>
<td class="attributes">
</td>
<td class="default">
</td>
<td class="description last"><p>the first TimeSignature of the Stream</p></td>
</tr>
<tr>
<td class="name"><code>keySignature</code></td>
<td class="type">
<span class="param-type"><a href="music21.key.KeySignature.html">music21.key.KeySignature</a></span>
</td>
<td class="attributes">
</td>
<td class="default">
</td>
<td class="description last"><p>the first KeySignature for the Stream</p></td>
</tr>
<tr>
<td class="name"><code>renderOptions</code></td>
<td class="type">
<span class="param-type"><a href="music21.renderOptions.RenderOptions.html">music21.renderOptions.RenderOptions</a></span>
</td>
<td class="attributes">
</td>
<td class="default">
</td>
<td class="description last"><p>an object specifying how to render the stream</p></td>
</tr>
<tr>
<td class="name"><code>flat</code></td>
<td class="type">
<span class="param-type"><a href="music21.stream.Stream.html">music21.stream.Stream</a></span>
</td>
<td class="attributes">
</td>
<td class="default">
</td>
<td class="description last"><p>(readonly) a flattened representation of the Stream</p></td>
</tr>
<tr>
<td class="name"><code>notes</code></td>
<td class="type">
<span class="param-type"><a href="music21.stream.Stream.html">music21.stream.Stream</a></span>
</td>
<td class="attributes">
</td>
<td class="default">
</td>
<td class="description last"><p>(readonly) the stream with only <a href="music21.note.Note.html"><code>music21.note.Note</code></a> and <a href="music21.chord.Chord.html"><code>music21.chord.Chord</code></a> objects included</p></td>
</tr>
<tr>
<td class="name"><code>notesAndRests</code></td>
<td class="type">
<span class="param-type"><a href="music21.stream.Stream.html">music21.stream.Stream</a></span>
</td>
<td class="attributes">
</td>
<td class="default">
</td>
<td class="description last"><p>(readonly) like notes but also with <a href="music21.note.Rest.html"><code>music21.note.Rest</code></a> objects included</p></td>
</tr>
<tr>
<td class="name"><code>parts</code></td>
<td class="type">
<span class="param-type"><a href="music21.stream.Stream.html">music21.stream.Stream</a></span>
</td>
<td class="attributes">
</td>
<td class="default">
</td>
<td class="description last"><p>(readonly) a filter on the Stream to just get the parts (NON-recursive)</p></td>
</tr>
<tr>
<td class="name"><code>measures</code></td>
<td class="type">
<span class="param-type"><a href="music21.stream.Stream.html">music21.stream.Stream</a></span>
</td>
<td class="attributes">
</td>
<td class="default">
</td>
<td class="description last"><p>(readonly) a filter on the Stream to just get the measures (NON-recursive)</p></td>
</tr>
<tr>
<td class="name"><code>tempo</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="default">
</td>
<td class="description last"><p>tempo in beats per minute (will become more sophisticated later, but for now the whole stream has one tempo</p></td>
</tr>
<tr>
<td class="name"><code>instrument</code></td>
<td class="type">
<span class="param-type"><a href="music21.instrument.Instrument.html">music21.instrument.Instrument</a></span>
|
<span class="param-type">undefined</span>
</td>
<td class="attributes">
</td>
<td class="default">
</td>
<td class="description last"><p>an instrument object associated with the stream (can be set with a string also, but will return an <code>Instrument</code> object)</p></td>
</tr>
<tr>
<td class="name"><code>autoBeam</code></td>
<td class="type">
<span class="param-type">Boolean</span>
</td>
<td class="attributes">
</td>
<td class="default">
</td>
<td class="description last"><p>whether the notes should be beamed automatically or not (will be moved to <code>renderOptions</code> soon)</p></td>
</tr>
<tr>
<td class="name"><code>staffLines</code></td>
<td class="type">
<span class="param-type">Int</span>
</td>
<td class="attributes">
<optional><br>
</td>
<td class="default">
5
</td>
<td class="description last"><p>number of staff lines</p></td>
</tr>
<tr>
<td class="name"><code>changedCallbackFunction</code></td>
<td class="type">
<span class="param-type">function</span>
|
<span class="param-type">undefined</span>
</td>
<td class="attributes">
</td>
<td class="default">
</td>
<td class="description last"><p>function to call when the Stream changes through a standard interface</p></td>
</tr>
<tr>
<td class="name"><code>maxSystemWidth</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
</td>
<td class="default">
</td>
<td class="description last"><p>confusing... should be in renderOptions</p></td>
</tr>
</tbody>
</table>
</dl>
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="music21_stream.js.html">music21/stream.js</a>,
<a href="music21_stream.js.html#sunlight-1-line-58">line 58</a>
</li>
</ul>
</dd>
</dl>
</dd>
</div>
<h3 class="subsection-title">Extends</h3>
<ul>
<li><a href="music21.base.Music21Object.html">music21.base.Music21Object</a></li>
</ul>
<h3 class="subsection-title">Methods</h3>
<dl>
<dt>
<h4 class="name" id="append"><span class="type-signature"><static> </span>Stream#append<span class="signature">(el)</span><span class="type-signature"> → {this}</span></h4>
</dt>
<dd>
<div class="description">
<p>Add an element to the end of the stream, setting its <code>.offset</code> accordingly</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>el</code></td>
<td class="type">
<span class="param-type"><a href="music21.base.Music21Object.html">music21.base.Music21Object</a></span>
|
<span class="param-type">Array</span>
</td>
<td class="description last"><p>element or list of elements to append</p></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="music21_stream.js.html">music21/stream.js</a>,
<a href="music21_stream.js.html#sunlight-1-line-433">line 433</a>
</li>
</ul>
</dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">this</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="appendNewDOM"><span class="type-signature"><static> </span>Stream#appendNewDOM<span class="signature">(<span class="optional">appendElement</span>, <span class="optional">width</span>, <span class="optional">height</span>, elementType)</span><span class="type-signature"> → {DOMObject}</span></h4>
</dt>
<dd>
<div class="description">
<p>Creates a new canvas, renders vexflow on it, and appends it to the DOM.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th>Default</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>appendElement</code></td>
<td class="type">
<span class="param-type">JQueryDOMObject</span>
|
<span class="param-type">DOMObject</span>
</td>
<td class="attributes">
<optional><br>
</td>
<td class="default">
document.body
</td>
<td class="description last"><p>where to place the svg</p></td>
</tr>
<tr>
<td class="name"><code>width</code></td>
<td class="type">
<span class="param-type">number</span>
|
<span class="param-type">string</span>
</td>
<td class="attributes">
<optional><br>
</td>
<td class="default">
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>height</code></td>
<td class="type">
<span class="param-type">number</span>
|
<span class="param-type">string</span>
</td>
<td class="attributes">
<optional><br>
</td>
<td class="default">
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>elementType</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="attributes">
</td>
<td class="default">
svg
</td>
<td class="description last"><p>what type of element, default = svg</p></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="music21_stream.js.html">music21/stream.js</a>,
<a href="music21_stream.js.html#sunlight-1-line-1532">line 1532</a>
</li>
</ul>
</dd>
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>svg (not the jQueryDOMObject -- this is a difference with other routines and should be fixed. TODO: FIX)</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">DOMObject</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="createDOM"><span class="type-signature"><static> </span>Stream#createDOM<span class="signature">(<span class="optional">width</span>, <span class="optional">height</span>, elementType)</span><span class="type-signature"> → {JQueryDOMObject}</span></h4>
</dt>
<dd>
<div class="description">
<p>Creates a new svg and renders vexflow on it</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th>Default</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>width</code></td>
<td class="type">
<span class="param-type">number</span>
|
<span class="param-type">string</span>
|
<span class="param-type">undefined</span>
</td>
<td class="attributes">
<optional><br>
</td>
<td class="default">
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>height</code></td>
<td class="type">
<span class="param-type">number</span>
|
<span class="param-type">string</span>
|
<span class="param-type">undefined</span>
</td>
<td class="attributes">
<optional><br>
</td>
<td class="default">
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>elementType</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="attributes">
</td>
<td class="default">
svg
</td>
<td class="description last"><p>what type of element svg or canvas, default = svg</p></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="music21_stream.js.html">music21/stream.js</a>,
<a href="music21_stream.js.html#sunlight-1-line-1508">line 1508</a>
</li>
</ul>
</dd>
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>canvas or SVG</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">JQueryDOMObject</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="createNewDOM"><span class="type-signature"><static> </span>Stream#createNewDOM<span class="signature">(width, height, elementType)</span><span class="type-signature"> → {JQueryDOMObject}</span></h4>
</dt>
<dd>
<div class="description">
<p>Creates and returns a new <code>&lt;canvas&gt;</code> or <code>&lt;svg&gt;</code> object.</p>
<p>Calls setSubstreamRenderOptions() first.</p>
<p>Does not render on the DOM element.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Default</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>width</code></td>
<td class="type">
<span class="param-type">number</span>
|
<span class="param-type">string</span>
|
<span class="param-type">undefined</span>
</td>
<td class="default">
</td>
<td class="description last"><p>will use <code>this.estimateStaffLength()</code> + <code>this.renderOptions.staffPadding</code> if not given</p></td>
</tr>
<tr>
<td class="name"><code>height</code></td>
<td class="type">
<span class="param-type">number</span>
|
<span class="param-type">string</span>
|
<span class="param-type">undefined</span>
</td>
<td class="default">
</td>
<td class="description last"><p>if undefined will use <code>this.renderOptions.height</code>. If still undefined, will use <code>this.estimateStreamHeight()</code></p></td>
</tr>
<tr>
<td class="name"><code>elementType</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="default">
svg
</td>
<td class="description last"><p>what type of element, default = svg</p></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="music21_stream.js.html">music21/stream.js</a>,
<a href="music21_stream.js.html#sunlight-1-line-1426">line 1426</a>
</li>
</ul>
</dd>
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>svg in jquery.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">JQueryDOMObject</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="createPlayableDOM"><span class="type-signature"><static> </span>Stream#createPlayableDOM<span class="signature">(width, height, elementType)</span><span class="type-signature"> → {JQueryDOMObject}</span></h4>
</dt>
<dd>
<div class="description">
<p>Creates a rendered, playable svg where clicking plays it.</p>
<p>Called from appendNewDOM() etc.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Default</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>width</code></td>
<td class="type">
<span class="param-type">number</span>
|
<span class="param-type">string</span>
|
<span class="param-type">undefined</span>
</td>
<td class="default">
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>height</code></td>
<td class="type">
<span class="param-type">number</span>
|
<span class="param-type">string</span>
|
<span class="param-type">undefined</span>
</td>
<td class="default">
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>elementType</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="default">
svg
</td>
<td class="description last"><p>what type of element, default = svg</p></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="music21_stream.js.html">music21/stream.js</a>,
<a href="music21_stream.js.html#sunlight-1-line-1490">line 1490</a>
</li>
</ul>
</dd>
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>canvas or svg</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">JQueryDOMObject</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="diatonicNoteNumFromScaledY"><span class="type-signature"><static> </span>Stream#diatonicNoteNumFromScaledY<span class="signature">(yPxScaled)</span><span class="type-signature"> → {int}</span></h4>
</dt>
<dd>
<div class="description">
<p>Given a Y position find the diatonicNoteNum that a note at that position would have.</p>
<p>searches this.storedVexflowStave</p>
<p>Y position must be offset from the start of the stave...</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>yPxScaled</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="music21_stream.js.html">music21/stream.js</a>,
<a href="music21_stream.js.html#sunlight-1-line-1781">line 1781</a>
</li>
</ul>
</dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Int</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="editableAccidentalDOM"><span class="type-signature"><static> </span>Stream#editableAccidentalDOM<span class="signature">(<span class="optional">width</span>, <span class="optional">height</span>)</span><span class="type-signature"> → {DOMObject}</span></h4>
</dt>
<dd>
<div class="description">
<p>Renders a stream on svg with the ability to edit it and<br>a toolbar that allows the accidentals to be edited.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>width</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
<optional><br>
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>height</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
<optional><br>
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="music21_stream.js.html">music21/stream.js</a>,
<a href="music21_stream.js.html#sunlight-1-line-1981">line 1981</a>
</li>
</ul>
</dd>
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p><div> tag around the svg.</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">DOMObject</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="estimateStaffLength"><span class="type-signature"><static> </span>Stream#estimateStaffLength<span class="signature">()</span><span class="type-signature"> → {number}</span></h4>
</dt>
<dd>
<div class="description">
<p>Estimates the length of the Stream in pixels.</p>
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="music21_stream.js.html">music21/stream.js</a>,
<a href="music21_stream.js.html#sunlight-1-line-1273">line 1273</a>
</li>
</ul>
</dd>
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>length in pixels</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">number</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="estimateStreamHeight"><span class="type-signature"><static> </span>Stream#estimateStreamHeight<span class="signature">(<span class="optional">ignoreSystems</span>)</span><span class="type-signature"> → {number}</span></h4>
</dt>
<dd>
<div class="description">
<p>Estimate the stream height for the Stream.</p>
<p>If there are systems they will be incorporated into the height unless <code>ignoreSystems</code> is <code>true</code>.</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th>Default</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>ignoreSystems</code></td>
<td class="type">
<span class="param-type">Boolean</span>
</td>
<td class="attributes">
<optional><br>
</td>
<td class="default">
false
</td>
<td class="description last"></td>
</tr>
</tbody>
</table>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="music21_stream.js.html">music21/stream.js</a>,
<a href="music21_stream.js.html#sunlight-1-line-1225">line 1225</a>
</li>
</ul>
</dd>
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>height in pixels</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">number</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="findNoteForClick"><span class="type-signature"><static> </span>Stream#findNoteForClick<span class="signature">(svg, e, x, y)</span><span class="type-signature"> → {Array}</span></h4>
</dt>
<dd>
<div class="description">
<p>Given an event object, and an x and y location, returns a two-element array<br>of the pitch.Pitch.diatonicNoteNum that was clicked (i.e., if C4 was clicked this<br>will return 29; if D4 was clicked this will return 30) and the closest note in the<br>stream that was clicked.</p>
<p>Return a list of [diatonicNoteNum, closestXNote]<br>for an event (e) called on the svg (svg)</p>
</div>
<h5>Parameters:</h5>
<table class="params table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>svg</code></td>
<td class="type">
<span class="param-type">DOMObject</span>
</td>
<td class="description last"></td>
</tr>