music21j-port
Version:
A toolkit for computer-aided musicology, Javascript version
3,194 lines (1,211 loc) • 75 kB
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Music21j Class: Renderer</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: Renderer</h1>
<section>
<header>
<h2>
<span class="ancestors"><a href="music21.html">music21</a><a href="music21.vfShow.html">.vfShow</a>.</span>
Renderer
</h2>
</header>
<article>
<div class="container-overview">
<dt>
<h4 class="name" id="Renderer"><span class="type-signature"></span>new Renderer<span class="signature">(s, <span class="optional">div</span>, <span class="optional">where</span>)</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
<p>Renderer is a function that takes a stream, an<br>optional existing canvas or SVG element and a DOM<br>element where the canvas or SVG element should be placed<br>and renders the stream as Vexflow on the<br>canvas or svg element, placing it then in the where<br>DOM.</p>
<p>"s" can be any type of Stream.</p>
<p>"div" and "where" can be either a DOM<br>element or a jQuery object.</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>s</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>main stream to render</p></td>
</tr>
<tr>
<td class="name"><code>div</code></td>
<td class="type">
<span class="param-type">div</span>
</td>
<td class="attributes">
<optional><br>
</td>
<td class="default">
</td>
<td class="description last"><p>existing canvas or div-surroundingSVG element</p></td>
</tr>
<tr>
<td class="name"><code>where</code></td>
<td class="type">
<span class="param-type">DOMObject</span>
|
<span class="param-type">jQueryDOMObject</span>
</td>
<td class="attributes">
<optional><br>
</td>
<td class="default">
document.body
</td>
<td class="description last"><p>where to render the stream</p></td>
</tr>
</tbody>
</table>
<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 class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>vfRenderer</code></td>
<td class="type">
<span class="param-type">Vex.Flow.Renderer</span>
</td>
<td class="description last"><p>a Vex.Flow.Renderer to use<br>(will create if not existing)</p></td>
</tr>
<tr>
<td class="name"><code>rendererType</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"><p>canvas or svg</p></td>
</tr>
<tr>
<td class="name"><code>ctx</code></td>
<td class="type">
<span class="param-type">Vex.Flow.Context</span>
</td>
<td class="description last"><p>a Vex.Flow.Context (Canvas or SVG) to use.</p></td>
</tr>
<tr>
<td class="name"><code>div</code></td>
<td class="type">
<span class="param-type">div</span>
</td>
<td class="description last"><p>div-with-svg-or-canvas element</p></td>
</tr>
<tr>
<td class="name"><code>$div</code></td>
<td class="type">
<span class="param-type">jQueryDOMObject</span>
</td>
<td class="description last"><p>jQuery div or canvas element</p></td>
</tr>
<tr>
<td class="name"><code>$where</code></td>
<td class="type">
<span class="param-type">jQueryDOMObject</span>
</td>
<td class="description last"><p>jQuery element to render onto</p></td>
</tr>
<tr>
<td class="name"><code>activeFormatter</code></td>
<td class="type">
<span class="param-type">Vex.Flow.Formatter</span>
</td>
<td class="description last"><p>formatter</p></td>
</tr>
<tr>
<td class="name"><code>beamGroups</code></td>
<td class="type">
<span class="param-type">Array.<Vex.Flow.Beam></span>
</td>
<td class="description last"><p>beamGroups</p></td>
</tr>
<tr>
<td class="name"><code>vfTies</code></td>
<td class="type">
<span class="param-type">Array.<Vex.Flow.StaveTie></span>
</td>
<td class="description last"><p>ties as instances of Vex.Flow.StaveTie</p></td>
</tr>
<tr>
<td class="name"><code>systemBreakOffsets</code></td>
<td class="type">
<span class="param-type">Array.<number></span>
</td>
<td class="description last"><p>where to break the systems</p></td>
</tr>
<tr>
<td class="name"><code>vfTuplets</code></td>
<td class="type">
<span class="param-type">Array.<Vex.Flow.Tuplet></span>
</td>
<td class="description last"><p>tuplets represented in Vexflow</p></td>
</tr>
<tr>
<td class="name"><code>stacks</code></td>
<td class="type">
<span class="param-type">Array.<<a href="music21.vfShow.RenderStack.html">music21.vfShow.RenderStack</a>></span>
</td>
<td class="description last"><p>array of RenderStack objects</p></td>
</tr>
</tbody>
</table>
</dl>
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="music21_vfShow.js.html">music21/vfShow.js</a>,
<a href="music21_vfShow.js.html#sunlight-1-line-87">line 87</a>
</li>
</ul>
</dd>
</dl>
</dd>
</div>
<h3 class="subsection-title">Methods</h3>
<dl>
<dt>
<h4 class="name" id="addStaffConnectors"><span class="type-signature"><static> </span>Renderer#addStaffConnectors<span class="signature">(s)</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
<p>If a stream has parts (NOT CHECKED HERE) create and<br>draw an appropriate Vex.Flow.StaveConnector</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>s</code></td>
<td class="type">
<span class="param-type"><a href="music21.stream.Score.html">music21.stream.Score</a></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_vfShow.js.html">music21/vfShow.js</a>,
<a href="music21_vfShow.js.html#sunlight-1-line-1026">line 1026</a>
</li>
</ul>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="applyFormatterInformationToNotes"><span class="type-signature"><static> </span>Renderer#applyFormatterInformationToNotes<span class="signature">(stave, <span class="optional">s</span>, formatter)</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
<p>Adds the following pieces of information to each Note</p>
<ul>
<li>el.x -- x location in pixels</li>
<li>el.y -- y location in pixels</li>
<li>el.width - width of element in pixels.</li>
<li>el.systemIndex -- which system is it on</li>
<li>el.activeVexflowNote - which Vex.Flow.StaveNote is it connected with.</li>
</ul>
<p>mad props to our friend Vladimir Viro for figuring this out! Visit http://peachnote.com/</p>
<p>Also sets s.storedVexflowStave to stave.</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>stave</code></td>
<td class="type">
<span class="param-type">Vex.Flow.Stave</span>
</td>
<td class="attributes">
</td>
<td class="default">
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>s</code></td>
<td class="type">
<span class="param-type"><a href="music21.stream.Stream.html">music21.stream.Stream</a></span>
</td>
<td class="attributes">
<optional><br>
</td>
<td class="default">
this.stream
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>formatter</code></td>
<td class="type">
<span class="param-type">Vex.Flow.Formatter</span>
</td>
<td class="attributes">
</td>
<td class="default">
</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_vfShow.js.html">music21/vfShow.js</a>,
<a href="music21_vfShow.js.html#sunlight-1-line-1140">line 1140</a>
</li>
</ul>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="drawBeamGroups"><span class="type-signature"><static> </span>Renderer#drawBeamGroups<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
<p>Draws the beam groups.</p>
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="music21_vfShow.js.html">music21/vfShow.js</a>,
<a href="music21_vfShow.js.html#sunlight-1-line-625">line 625</a>
</li>
</ul>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="drawMeasureStacks"><span class="type-signature"><static> </span>Renderer#drawMeasureStacks<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
<p>Draws the Voices (music and text) from <code>this.stacks</code></p>
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="music21_vfShow.js.html">music21/vfShow.js</a>,
<a href="music21_vfShow.js.html#sunlight-1-line-386">line 386</a>
</li>
</ul>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="drawTies"><span class="type-signature"><static> </span>Renderer#drawTies<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
<p>draws the vfTies</p>
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="music21_vfShow.js.html">music21/vfShow.js</a>,
<a href="music21_vfShow.js.html#sunlight-1-line-412">line 412</a>
</li>
</ul>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="drawTuplets"><span class="type-signature"><static> </span>Renderer#drawTuplets<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
<p>draws the tuplets.</p>
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="music21_vfShow.js.html">music21/vfShow.js</a>,
<a href="music21_vfShow.js.html#sunlight-1-line-401">line 401</a>
</li>
</ul>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="formatMeasureStacks"><span class="type-signature"><static> </span>Renderer#formatMeasureStacks<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
<p>Aligns all of <code>this.stacks</code> (after they've been prepared) so they align properly.</p>
</div>
<dl class="details">
<dt class="tag-source">Source:</dt>
<dd class="tag-source">
<ul class="dummy">
<li>
<a href="music21_vfShow.js.html">music21/vfShow.js</a>,
<a href="music21_vfShow.js.html#sunlight-1-line-512">line 512</a>
</li>
</ul>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="formatVoiceGroup"><span class="type-signature"><static> </span>Renderer#formatVoiceGroup<span class="signature">(stack, <span class="optional">autoBeam</span>)</span><span class="type-signature"> → {Vex.Flow.Formatter}</span></h4>
</dt>
<dd>
<div class="description">
<p>Formats a single voice group from a stack.</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>stack</code></td>
<td class="type">
<span class="param-type"><a href="music21.vfShow.RenderStack.html">music21.vfShow.RenderStack</a></span>
</td>
<td class="attributes">
</td>
<td class="default">
</td>
<td class="description last"></td>
</tr>
<tr>
<td class="name"><code>autoBeam</code></td>
<td class="type">
<span class="param-type">Boolean</span>
</td>
<td class="attributes">
<optional><br>
</td>
<td class="default">
measures[0].autoBeam
</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_vfShow.js.html">music21/vfShow.js</a>,
<a href="music21_vfShow.js.html#sunlight-1-line-534">line 534</a>
</li>
</ul>
</dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Vex.Flow.Formatter</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="getLyricVoice"><span class="type-signature"><static> </span>Renderer#getLyricVoice<span class="signature">(s, stave)</span><span class="type-signature"> → {Vex.Flow.Voice}</span></h4>
</dt>
<dd>
<div class="description">
<p>Returns a Vex.Flow.Voice with the lyrics set to render in the proper place.</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>s</code></td>
<td class="type">
<span class="param-type"><a href="music21.stream.Stream.html">music21.stream.Stream</a></span>
</td>
<td class="description last"><ul>
<li>usually a Measure or Voice</li>
</ul></td>
</tr>
<tr>
<td class="name"><code>stave</code></td>
<td class="type">
<span class="param-type">Vex.Flow.Stave</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_vfShow.js.html">music21/vfShow.js</a>,
<a href="music21_vfShow.js.html#sunlight-1-line-500">line 500</a>
</li>
</ul>
</dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Vex.Flow.Voice</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="getVoice"><span class="type-signature"><static> </span>Renderer#getVoice<span class="signature">(<span class="optional">s</span>, stave)</span><span class="type-signature"> → {Vex.Flow.Voice}</span></h4>
</dt>
<dd>
<div class="description">
<p>Returns a Vex.Flow.Voice object with all the tickables (i.e., Notes, Voices, etc.)</p>
<p>Does not draw 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>s</code></td>
<td class="type">
<span class="param-type"><a href="music21.stream.Stream.html">music21.stream.Stream</a></span>
</td>
<td class="attributes">
<optional><br>
</td>
<td class="default">
this.stream
</td>
<td class="description last"><ul>
<li>usually a Measure or Voice</li>
</ul></td>
</tr>
<tr>
<td class="name"><code>stave</code></td>
<td class="type">
<span class="param-type">Vex.Flow.Stave</span>
</td>
<td class="attributes">
</td>
<td class="default">
</td>
<td class="description last"><p>not optional (would never fly in Python...)</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_vfShow.js.html">music21/vfShow.js</a>,
<a href="music21_vfShow.js.html#sunlight-1-line-479">line 479</a>
</li>
</ul>
</dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Vex.Flow.Voice</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="newStave"><span class="type-signature"><static> </span>Renderer#newStave<span class="signature">(s)</span><span class="type-signature"> → {Vex.Flow.Stave}</span></h4>
</dt>
<dd>
<div class="description">
<p>Return a new Vex.Flow.Stave object, which represents<br>a single MEASURE of notation in m21j</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>s</code></td>
<td class="type">
<span class="param-type"><a href="music21.stream.Stream.html">music21.stream.Stream</a></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_vfShow.js.html">music21/vfShow.js</a>,
<a href="music21_vfShow.js.html#sunlight-1-line-639">line 639</a>
</li>
</ul>
</dd>
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Vex.Flow.Stave</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="prepareArrivedFlat"><span class="type-signature"><static> </span>Renderer#prepareArrivedFlat<span class="signature">(m)</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
<p>Prepares a score that arrived flat... sets up<br>stacks and vfTies after calling prepareFlat</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>m</code></td>
<td class="type">
<span class="param-type"><a href="music21.stream.Stream.html">music21.stream.Stream</a></span>
</td>
<td class="description last"><p>a flat stream (maybe a measure or voice)</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_vfShow.js.html">music21/vfShow.js</a>,
<a href="music21_vfShow.js.html#sunlight-1-line-295">line 295</a>
</li>
</ul>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="prepareFlat"><span class="type-signature"><static> </span>Renderer#prepareFlat<span class="signature">(s, stack, <span class="optional">optionalStave</span>, <span class="optional">optional_renderOp</span>)</span><span class="type-signature"> → {Vex.Flow.Stave}</span></h4>
</dt>
<dd>
<div class="description">
<p>Main internal routine to prepare a flat stream</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>s</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="description last"><p>a flat stream object</p></td>
</tr>
<tr>
<td class="name"><code>stack</code></td>
<td class="type">
<span class="param-type"><a href="music21.vfShow.RenderStack.html">music21.vfShow.RenderStack</a></span>
</td>
<td class="attributes">
</td>
<td class="description last"><p>a RenderStack object to prepare into.</p></td>
</tr>
<tr>
<td class="name"><code>optionalStave</code></td>
<td class="type">
<span class="param-type">Vex.Flow.Stave</span>
</td>
<td class="attributes">
<optional><br>
</td>
<td class="description last"><p>an optional existing stave.</p></td>
</tr>
<tr>
<td class="name"><code>optional_renderOp</code></td>
<td class="type">
<span class="param-type">object</span>
</td>
<td class="attributes">
<optional><br>
</td>
<td class="description last"><p>render options.<br>Passed to <code>music21.vfShow.Renderer#renderStave</code></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_vfShow.js.html">music21/vfShow.js</a>,
<a href="music21_vfShow.js.html#sunlight-1-line-337">line 337</a>
</li>
</ul>
</dd>
</dl>
<h5>Returns:</h5>
<div class="param-desc">
<p>staff to return too<br>(also changes the <code>stack</code> parameter and runs <code>makeAccidentals</code> on s)</p>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Vex.Flow.Stave</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="prepareMeasure"><span class="type-signature"><static> </span>Renderer#prepareMeasure<span class="signature">(m, stack)</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
<p>Prepares a measure (w/ or w/o voices) or generic Stream -- makes accidentals,<br>associates a Vex.Flow.Stave with the stream and<br>returns a vexflow Voice object</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>m</code></td>
<td class="type">
<span class="param-type"><a href="music21.stream.Measure.html">music21.stream.Measure</a></span>
</td>
<td class="description last"><p>a measure object (w or w/o voices)</p></td>
</tr>
<tr>
<td class="name"><code>stack</code></td>
<td class="type">
<span class="param-type"><a href="music21.vfShow.RenderStack.html">music21.vfShow.RenderStack</a></span>
</td>
<td class="description last"><p>a RenderStack object to prepare into.</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_vfShow.js.html">music21/vfShow.js</a>,
<a href="music21_vfShow.js.html#sunlight-1-line-311">line 311</a>
</li>
</ul>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="preparePartlike"><span class="type-signature"><static> </span>Renderer#preparePartlike<span class="signature">(p)</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
<p>Prepares a Partlike stream (that is one with Measures<br>or substreams that should be considered like Measures)<br>for rendering.</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>p</code></td>
<td class="type">
<span class="param-type"><a href="music21.stream.Part.html">music21.stream.Part</a></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_vfShow.js.html">music21/vfShow.js</a>,
<a href="music21_vfShow.js.html#sunlight-1-line-268">line 268</a>
</li>
</ul>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="prepareScorelike"><span class="type-signature"><static> </span>Renderer#prepareScorelike<span class="signature">(s)</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
<p>Prepares a scorelike stream (i.e., one with parts or<br>Streams that should be rendered vertically like parts)<br>for rendering and adds Staff Connectors</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>s</code></td>
<td class="type">