music21j-port
Version:
A toolkit for computer-aided musicology, Javascript version
911 lines (737 loc) • 28 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8">
<title>Music21j Source: music21/instrument.js</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="span12">
<div id="main">
<h1 class="page-title">Source: music21/instrument.js</h1>
<section>
<article>
<pre
class="sunlight-highlight-javascript linenums">/**
* music21j -- Javascript reimplementation of Core music21p features.
* music21/instrument -- instrument objects
*
* Copyright (c) 2013-16, Michael Scott Cuthbert and cuthbertLab
* Based on music21 (=music21p), Copyright (c) 2006–16, Michael Scott Cuthbert and cuthbertLab
*
*/
import { base } from './base.js';
/**
* Instrument module, see {@link music21.instrument}
*
* @exports music21/instrument
*/
/**
* Looking for the {@link music21.instrument.Instrument} object? :-)
*
* @namespace music21.instrument
* @memberof music21
* @requires music21/base
*/
export const instrument = {};
/**
* Represents an instrument. instrumentNames are found in the ext/soundfonts directory
*
* See {@link music21.miditools} and esp. `loadSoundfont` for a way of loading soundfonts into
* instruments.
*
* @class Instrument
* @memberof music21.instrument
* @param {string} instrumentName
* @property {string|undefined} partId
* @property {string|undefined} partName
* @property {string|undefined} partAbbreviation
* @property {string|undefined} instrumentId
* @property {string|undefined} instrumentName
* @property {string|undefined} instrumentAbbreviation
* @property {Int|undefined} midiProgram
* @property {Int|undefined} midiChannel
* @property {Int|undefined} lowestNote
* @property {Int|undefined} highestNote
* @property {music21.interval.Interval|undefined} transposition
* @property {Boolean} inGMPercMap=false
* @property {string|undefined} soundfontFn
* @property {string|undefined} oggSoundfont - url of oggSoundfont for this instrument
* @property {string|undefined} mp3Soundfont - url of mp3Soundfont for this instrument
*/
class Instrument extends base.Music21Object {
constructor(instrumentName) {
super();
this.classSortOrder = -25;
this.partId = undefined;
this.partName = undefined;
this.partAbbreviation = undefined;
this.instrumentId = undefined;
this.instrumentName = instrumentName;
this.instrumentAbbreviation = undefined;
this.midiProgram = undefined;
this._midiChannel = undefined;
this.lowestNote = undefined;
this.highestNote = undefined;
this.transpostion = undefined;
this.inGMPercMap = false;
this.soundfontFn = undefined;
if (instrumentName !== undefined) {
instrument.find(instrumentName, this);
}
}
/**
* Assign an instrument to an unused midi channel.
*
* Will use the global list of used channels (`music21.instrument.Instrument.usedChannels`)
* if not given. Assigns up to `music21.instrument.maxMidi` channels (16)
* Skips 10 unless this.inGMPercMap is true
*
* @memberof music21.instrument.Instrument
* @param {Array<Int>} [usedChannels]
* @returns {Number}
*/
autoAssignMidiChannel(usedChannels) {
if (usedChannels === undefined) {
usedChannels = instrument.usedChannels;
}
let startChannel = 0;
if (this.inGMPercMap) {
startChannel = 10;
}
for (let ch = startChannel; ch < instrument.maxMidi; ch++) {
if (ch % 16 === 10 && this.inGMPercMap !== true) {
continue; // skip 10 / percussion.
}
if (
usedChannels[ch] === undefined
|| usedChannels[ch] === this.midiProgram
) {
usedChannels[ch] = this.midiProgram;
this.midiChannel = ch;
return ch;
}
}
// TODO: no channels! throw exception!
return undefined;
}
get oggSounfont() {
return this.soundfontFn + '-ogg.js';
}
get mp3Soundfont() {
return this.soundfontFn + '-mp3.js';
}
get midiChannel() {
if (this._midiChannel === undefined) {
this.autoAssignMidiChannel();
}
return this._midiChannel;
}
set midiChannel(ch) {
this._midiChannel = ch;
}
}
instrument.Instrument = Instrument;
instrument.usedChannels = []; // differs from m21p -- stored midiProgram numbers
instrument.maxMidi = 16;
instrument.info = [
{ fn: 'acoustic_grand_piano', name: 'Acoustic Grand Piano', midiNumber: 0 },
{
fn: 'bright_acoustic_piano',
name: 'Bright Acoustic Piano',
midiNumber: 1,
},
{ fn: 'electric_grand_piano', name: 'Electric Grand Piano', midiNumber: 2 },
{ fn: 'honkytonk_piano', name: 'Honky-tonk Piano', midiNumber: 3 },
{ fn: 'electric_piano_1', name: 'Electric Piano 1', midiNumber: 4 },
{ fn: 'electric_piano_2', name: 'Electric Piano 2', midiNumber: 5 },
{ fn: 'harpsichord', name: 'Harpsichord', midiNumber: 6 },
{ fn: 'clavinet', name: 'Clavinet', midiNumber: 7 },
{ fn: 'celesta', name: 'Celesta', midiNumber: 8 },
{ fn: 'glockenspiel', name: 'Glockenspiel', midiNumber: 9 },
{ fn: 'music_box', name: 'Music Box', midiNumber: 10 },
{ fn: 'vibraphone', name: 'Vibraphone', midiNumber: 11 },
{ fn: 'marimba', name: 'Marimba', midiNumber: 12 },
{ fn: 'xylophone', name: 'Xylophone', midiNumber: 13 },
{ fn: 'tubular_bells', name: 'Tubular Bells', midiNumber: 14 },
{ fn: 'dulcimer', name: 'Dulcimer', midiNumber: 15 },
{ fn: 'drawbar_organ', name: 'Drawbar Organ', midiNumber: 16 },
{ fn: 'percussive_organ', name: 'Percussive Organ', midiNumber: 17 },
{ fn: 'rock_organ', name: 'Rock Organ', midiNumber: 18 },
{ fn: 'church_organ', name: 'Church Organ', midiNumber: 19 },
{ fn: 'reed_organ', name: 'Reed Organ', midiNumber: 20 },
{ fn: 'accordion', name: 'Accordion', midiNumber: 21 },
{ fn: 'harmonica', name: 'Harmonica', midiNumber: 22 },
{ fn: 'tango_accordion', name: 'Tango Accordion', midiNumber: 23 },
{
fn: 'acoustic_guitar_nylon',
name: 'Acoustic Guitar (nylon)',
midiNumber: 24,
},
{
fn: 'acoustic_guitar_steel',
name: 'Acoustic Guitar (steel)',
midiNumber: 25,
},
{
fn: 'electric_guitar_jazz',
name: 'Electric Guitar (jazz)',
midiNumber: 26,
},
{
fn: 'electric_guitar_clean',
name: 'Electric Guitar (clean)',
midiNumber: 27,
},
{
fn: 'electric_guitar_muted',
name: 'Electric Guitar (muted)',
midiNumber: 28,
},
{ fn: 'overdriven_guitar', name: 'Overdriven Guitar', midiNumber: 29 },
{ fn: 'distortion_guitar', name: 'Distortion Guitar', midiNumber: 30 },
{ fn: 'guitar_harmonics', name: 'Guitar Harmonics', midiNumber: 31 },
{ fn: 'acoustic_bass', name: 'Acoustic Bass', midiNumber: 32 },
{
fn: 'electric_bass_finger',
name: 'Electric Bass (finger)',
midiNumber: 33,
},
{ fn: 'electric_bass_pick', name: 'Electric Bass (pick)', midiNumber: 34 },
{ fn: 'fretless_bass', name: 'Fretless Bass', midiNumber: 35 },
{ fn: 'slap_bass_1', name: 'Slap Bass 1', midiNumber: 36 },
{ fn: 'slap_bass_2', name: 'Slap Bass 2', midiNumber: 37 },
{ fn: 'synth_bass_1', name: 'Synth Bass 1', midiNumber: 38 },
{ fn: 'synth_bass_2', name: 'Synth Bass 2', midiNumber: 39 },
{ fn: 'violin', name: 'Violin', midiNumber: 40 },
{ fn: 'viola', name: 'Viola', midiNumber: 41 },
{ fn: 'cello', name: 'Cello', midiNumber: 42 },
{ fn: 'contrabass', name: 'Contrabass', midiNumber: 43 },
{ fn: 'tremolo_strings', name: 'Tremolo Strings', midiNumber: 44 },
{ fn: 'pizzicato_strings', name: 'Pizzicato Strings', midiNumber: 45 },
{ fn: 'orchestral_harp', name: 'Orchestral Harp', midiNumber: 46 },
{ fn: 'timpani', name: 'Timpani', midiNumber: 47 },
{ fn: 'string_ensemble_1', name: 'String Ensemble 1', midiNumber: 48 },
{ fn: 'string_ensemble_2', name: 'String Ensemble 2', midiNumber: 49 },
{ fn: 'synth_strings_1', name: 'Synth Strings 1', midiNumber: 50 },
{ fn: 'synth_strings_2', name: 'Synth Strings 2', midiNumber: 51 },
{ fn: 'choir_aahs', name: 'Choir Aahs', midiNumber: 52 },
{ fn: 'voice_oohs', name: 'Voice Oohs', midiNumber: 53 },
{ fn: 'synth_choir', name: 'Synth Choir', midiNumber: 54 },
{ fn: 'orchestra_hit', name: 'Orchestra Hit', midiNumber: 55 },
{ fn: 'trumpet', name: 'Trumpet', midiNumber: 56 },
{ fn: 'trombone', name: 'Trombone', midiNumber: 57 },
{ fn: 'tuba', name: 'Tuba', midiNumber: 58 },
{ fn: 'muted_trumpet', name: 'Muted Trumpet', midiNumber: 59 },
{ fn: 'french_horn', name: 'French Horn', midiNumber: 60 },
{ fn: 'brass_section', name: 'Brass Section', midiNumber: 61 },
{ fn: 'synth_brass_1', name: 'Synth Brass 1', midiNumber: 62 },
{ fn: 'synth_brass_2', name: 'Synth Brass 2', midiNumber: 63 },
{ fn: 'soprano_sax', name: 'Soprano Sax', midiNumber: 64 },
{ fn: 'alto_sax', name: 'Alto Sax', midiNumber: 65 },
{ fn: 'tenor_sax', name: 'Tenor Sax', midiNumber: 66 },
{ fn: 'baritone_sax', name: 'Baritone Sax', midiNumber: 67 },
{ fn: 'oboe', name: 'Oboe', midiNumber: 68 },
{ fn: 'english_horn', name: 'English Horn', midiNumber: 69 },
{ fn: 'bassoon', name: 'Bassoon', midiNumber: 70 },
{ fn: 'clarinet', name: 'Clarinet', midiNumber: 71 },
{ fn: 'piccolo', name: 'Piccolo', midiNumber: 72 },
{ fn: 'flute', name: 'Flute', midiNumber: 73 },
{ fn: 'recorder', name: 'Recorder', midiNumber: 74 },
{ fn: 'pan_flute', name: 'Pan Flute', midiNumber: 75 },
{ fn: 'blown_bottle', name: 'Blown bottle', midiNumber: 76 },
{ fn: 'shakuhachi', name: 'Shakuhachi', midiNumber: 77 },
{ fn: 'whistle', name: 'Whistle', midiNumber: 78 },
{ fn: 'ocarina', name: 'Ocarina', midiNumber: 79 },
{ fn: 'lead_1_square', name: 'Lead 1 (square)', midiNumber: 80 },
{ fn: 'lead_2_sawtooth', name: 'Lead 2 (sawtooth)', midiNumber: 81 },
{ fn: 'lead_3_calliope', name: 'Lead 3 (calliope)', midiNumber: 82 },
{ fn: 'lead_4_chiff', name: 'Lead 4 chiff', midiNumber: 83 },
{ fn: 'lead_5_charang', name: 'Lead 5 (charang)', midiNumber: 84 },
{ fn: 'lead_6_voice', name: 'Lead 6 (voice)', midiNumber: 85 },
{ fn: 'lead_7_fifths', name: 'Lead 7 (fifths)', midiNumber: 86 },
{ fn: 'lead_8_bass__lead', name: 'Lead 8 (bass + lead)', midiNumber: 87 },
{ fn: 'pad_1_new_age', name: 'Pad 1 (new age)', midiNumber: 88 },
{ fn: 'pad_2_warm', name: 'Pad 2 (warm)', midiNumber: 89 },
{ fn: 'pad_3_polysynth', name: 'Pad 3 (polysynth)', midiNumber: 90 },
{ fn: 'pad_4_choir', name: 'Pad 4 (choir)', midiNumber: 91 },
{ fn: 'pad_5_bowed', name: 'Pad 5 (bowed)', midiNumber: 92 },
{ fn: 'pad_6_metallic', name: 'Pad 6 (metallic)', midiNumber: 93 },
{ fn: 'pad_7_halo', name: 'Pad 7 (halo)', midiNumber: 94 },
{ fn: 'pad_8_sweep', name: 'Pad 8 (sweep)', midiNumber: 95 },
{ fn: 'fx_1_rain', name: 'FX 1 (rain)', midiNumber: 96 },
{ fn: 'fx_2_soundtrack', name: 'FX 2 (soundtrack)', midiNumber: 97 },
{ fn: 'fx_3_crystal', name: 'FX 3 (crystal)', midiNumber: 98 },
{ fn: 'fx_4_atmosphere', name: 'FX 4 (atmosphere)', midiNumber: 99 },
{ fn: 'fx_5_brightness', name: 'FX 5 (brightness)', midiNumber: 100 },
{ fn: 'fx_6_goblins', name: 'FX 6 (goblins)', midiNumber: 101 },
{ fn: 'fx_7_echoes', name: 'FX 7 (echoes)', midiNumber: 102 },
{ fn: 'fx_8_scifi', name: 'FX 8 (sci-fi)', midiNumber: 103 },
{ fn: 'sitar', name: 'Sitar', midiNumber: 104 },
{ fn: 'banjo', name: 'Banjo', midiNumber: 105 },
{ fn: 'shamisen', name: 'Shamisen', midiNumber: 106 },
{ fn: 'koto', name: 'Koto', midiNumber: 107 },
{ fn: 'kalimba', name: 'Kalimba', midiNumber: 108 },
{ fn: 'bagpipe', name: 'Bagpipe', midiNumber: 109 },
{ fn: 'fiddle', name: 'Fiddle', midiNumber: 110 },
{ fn: 'shanai', name: 'Shanai', midiNumber: 111 },
{ fn: 'tinkle_bell', name: 'Tinkle Bell', midiNumber: 112 },
{ fn: 'agogo', name: 'Agogo', midiNumber: 113 },
{ fn: 'steel_drums', name: 'Steel Drums', midiNumber: 114 },
{ fn: 'woodblock', name: 'Woodblock', midiNumber: 115 },
{ fn: 'taiko_drum', name: 'Taiko Drum', midiNumber: 116 },
{ fn: 'melodic_tom', name: 'Melodic Tom', midiNumber: 117 },
{ fn: 'synth_drum', name: 'Synth Drum', midiNumber: 118 },
{ fn: 'reverse_cymbal', name: 'Reverse Cymbal', midiNumber: 119 },
{ fn: 'guitar_fret_noise', name: 'Guitar Fret Noise', midiNumber: 120 },
{ fn: 'breath_noise', name: 'Breath Noise', midiNumber: 121 },
{ fn: 'seashore', name: 'Seashore', midiNumber: 122 },
{ fn: 'bird_tweet', name: 'Bird Tweet', midiNumber: 123 },
{ fn: 'telephone_ring', name: 'Telephone Ring', midiNumber: 124 },
{ fn: 'helicopter', name: 'Helicopter', midiNumber: 125 },
{ fn: 'applause', name: 'Applause', midiNumber: 126 },
{ fn: 'gunshot', name: 'Gunshot', midiNumber: 127 },
];
/**
* Find information for a given instrument (by filename or name)
* and load it into an instrument object.
*
* @function music21.instrument.find
* @memberof music21.instrument
* @param {string} fn - name or filename of instrument
* @param {music21.instrument.Instrument} [inst] - instrument object to load into
* @returns {music21.instrument.Instrument|undefined}
*/
instrument.find = function instrument_find(fn, inst) {
if (inst === undefined) {
inst = new instrument.Instrument();
}
for (let i = 0; i < instrument.info.length; i++) {
const info = instrument.info[i];
if (info.fn === fn || info.name === fn) {
inst.soundfontFn = info.fn;
inst.instrumentName = info.name;
inst.midiProgram = info.midiNumber;
return inst;
}
}
return undefined;
};
</pre>
</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>
<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>