@werckmeister/language-features 1.0.0-73 → 1.0.0-76

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/index.js +1 -1
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -5,7 +5,7 @@ var r;!function(t){var n={"&amp;":"&","&lt;":"<","&gt;":">","&apos;":"'","&quot;
5
5
  },{"from-xml":"sarP"}],"f88W":[function(require,module,exports) {
6
6
 
7
7
  },{}],"Y3F9":[function(require,module,exports) {
8
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getPreInstalledAuxFiles=exports.getAutoHintDb=void 0;var e=require("./parser/docParser"),n=require("fs"),t='{"device":{"rawObject":{"doc":{"command":{"@name":"device","@where":"document","#":"Defines a device which can be used when adding instruments (see [instrumentDef](https://werckme.github.io/manual#instrumentDef))\\nsee [instrumentDef](https://werckme.github.io/manual#instrumentDef), [instrument](https://werckme.github.io/manual#instrument)\\n#### example\\ndefine an device, an instrument and assign it to a track.\\n```\\ndevice: MyDevice midi 0;\\ninstrumentDef: organ _onDevice=MyDevice _ch=0 _pc=16;\\n[\\ninstrument: organ;\\n{\\nc d e f\\n}\\n]\\n```\\n**Fluidsynth**\\nIf you want to use [fluidSynth](http://www.fluidsynth.org) as output device, you can achieve this with a command like this:\\n`device: MyDevice fluidSynth _useFont=\\"PATH OF A SOUNDFONT FILE\\";`\\nOn mac, make sure that you have fluidsynth installed."},"param":[{"@name":"setName","@position":"0","@type":"text","#":"An arbitary name."},{"@name":"isType","@position":"1","@type":"[midi,fluidSynth]","#":"The type of the device."},{"@name":"usePort","@position":"2","@optional":"1","@type":"0..N","#":"The midi port id of your device. You can get a list of your connected devices, by executing `sheetp --list`. Alternatively you can use `useDevice` instead."},{"@name":"useDevice","@position":"","@optional":"1","@type":"text","#":"The name of the midi port of your device. You can get a list of your connected devices, by executing `sheetp --list`. It is not necessary to give the full name, a subset will match."},{"@name":"withOffset","@position":"","@optional":"1","@type":"0..N","#":"Defines an offset in milliseconds. Can be used to keep different devices in sync."},{"@name":"useFont","@position":"","@optional":"1","@type":"a file path","#":"Only valid if isType=`fluidsynth`. Sets the location of the soundfont file, which will be used by FluidSynth"}]}}},"instrumentConf":{"rawObject":{"doc":{"command":{"@name":"instrumentConf","@where":"document","#":"With `instrumentConf` you are able to setup a specific instrument.\\nFollowing settings can be applied:\\n* volume\\n* pan\\n* cc\\n* voicing strategy\\n* mod\\n* velocity remap\\n#### examples\\n##### mixed settings\\n`instrumentConf: piano volume 100 pan 50;`\\n##### setup a mod\\n`instrumentConf: piano mod myLuaMod someValue; --the `someValue` argument belongs to \\"myLuaMod\\"`\\n##### setup a velocity remap\\nWith `remapVelocity` you are able to change the velocity values behind `ppppp..fffff` for a specific instrument.\\nIn the example below the velocity for `p` will be set to 100 and the value for `f` will be set to 10.\\n> this approach is deprecated, use [conduction rules](https://werckme.github.io/manual#conduction-rules) instead\\nThe value range is 0..100. (100=127 Midi velocity)\\n`instrumentConf: _set=remapVelocity _p=100 _f=10;`"},"param":{"@name":"for","@position":"0","#":"The name of the target instrument. This is the only \\"unique\\" parameter for this command. All further parameters are specific to its related setting."}}}},"mod":{"rawObject":{"doc":{"command":{"@name":"mod","@where":"voice","#":"Adds a modification to the track. Every `mod` statement adds a further modification to the related voice.\\nIf you want to use ony one modification at the time use [do](https://werckme.github.io/manual#do) instead.\\n#### examples\\n`/mod: arpeggio/`\\nMods can be external lua scripts, or one of these internal mods:\\n##### Bend\\nPerforms a pitch bend from or to the pitch of a note. The value range is 0..100 where 50 means the pichbend center.\\n```language=Werckmeister,type=single,tempo=140\\n/doOnce: bend _from=0/ c1 | /doOnce: bend _to=0/ c1\\n```\\n##### Arpeggio\\nPerforms an arpeggio over a given chord.\\n**Arpeggio is deprecated. Use the lua mod [myArpeggio](https://werckme.github.io/manual#myarpeggio) instead.**"},"param":{"@name":"use","@position":"0","@type":"text","#":"The name of the modification to load. This is the only \\"unique\\" parameter for this command. All further parameters are specific to its related modification."}}}},"modOnce":{"rawObject":{"doc":{"command":{"@name":"modOnce","@where":"voice","#":"Like [mod](https://werckme.github.io/manual#mod). But with the difference, that the loaded mod will be only executed once for the following event.\\n#### examples\\n`/modOnce: arpeggio/`"},"param":{"@name":"use","@position":"0","@type":"text","#":"The name of the modification to load. This is the only \\"unique\\" parameter for this command. All further parameters are specific to its related modification."}}}},"beginTag":{"rawObject":{"doc":{"command":{"@name":"beginTag","@where":"voice","#":"Begins a tag region where its including events will receive the given tags. See [endTag](https://werckme.github.io/manual#endtag).\\n[Example](https://www.werckme.org/editor?wid=mariounderworld)"},"param":{"@name":"tags","@position":"0","@type":"text","#":"a space separated list of tag names"}}}},"cue":{"rawObject":{"doc":{"command":{"@name":"cue","@where":"voice","#":"adds a cue MIDI meta message to the corresponding midi track\\n#### examples\\n`/cue: cueText/`\\n> If a cue was visited several times during a repeat or jump an additional repeat index will be added.\\n> For example:\\n> `/cue: myCue/ c d e f :|` will create two cue MIDI messages: \\"myCue\\" and \\"myCue2\\"\\n>"},"param":{"@name":"text","@type":"text","#":"the text which appears in the MIDI message"}}}},"instrumentSection":{"rawObject":{"doc":{"command":{"@name":"instrumentSection","@where":"document","#":["Layers arbitrary instruments into one.\\nsee [instrumentDef](#instrumentDef), [instrument](https://werckme.github.io/manual#instrument), [device](https://werckme.github.io/manual#device)\\n#### example\\ncreate 3 instruments and assign them to the section `myNewInstrument`.","```language=Werckmeister\\ntempo: 120;\\ndevice: MyDevice midi _usePort=0;\\ninstrumentDef:piano _onDevice=MyDevice _ch=0 _pc=0;\\ninstrumentDef:guitar _onDevice=MyDevice _ch=1 _pc=29;\\ninstrumentDef:organ _onDevice=MyDevice _ch=2 _pc=16;\\ninstrumentSection: myNewInstrument piano guitar organ;\\n\\n[\\ninstrument: myNewInstrument;\\n{\\na,,1 | a, | d#,~ | &\\n}\\n]\\n```"]},"param":{"@name":"setName","@position":"0","@type":"text","#":"An arbitary name."}}}},"instrumentDef":{"rawObject":{"doc":{"command":{"@name":"instrumentDef","@where":"document","#":"Adds a new MIDI instrument.\\nsee [instrument](https://werckme.github.io/manual#instrument), [device](https://werckme.github.io/manual#device)\\n#### example\\ndefine an device, an instrument and assign it to a track.\\n```\\ndevice: MyDevice midi 0;\\ninstrumentDef: organ _onDevice=MyDevice _ch=0 _pc=16;\\n[\\ninstrument: organ;\\n{\\nc d e f\\n}\\n]\\n```"},"param":[{"@name":"setName","@position":"0","@type":"text","#":"An arbitary name."},{"@name":"onDevice","@position":"1","@type":"text","#":"The device which to use (The name of the device, see [device](https://werckme.github.io/manual#device))."},{"@name":"ch","@position":"2","@type":"0..15","#":"The MIDI channel."},{"@name":"bankMsb","@position":"3","@type":"0..127","#":"A MIDI `bank select MSB` value."},{"@name":"pc","@position":"4","@type":"0..127","#":"A MIDI `program change` value."},{"@name":"bankLsb","@type":"0..127","#":"A MIDI `bank select LSB` value."},{"@name":"cc","@type":"0..127","@deprecated":"use bankMsb instead","#":"A MIDI `bank select MSB. Deprecated use bankMsb instead` value."},{"@name":"gmInstrument","@type":"text","#":"You can use a GM instrument name instead of a pc number. It is not necessary to give the full name, a subset will match. You can find a complete list of instrument names here: [GM Instruments](https://raw.githubusercontent.com/werckme/werckmeister/main/assets/gm_instrument_names.md)."}]}}},"endTag":{"rawObject":{"doc":{"command":{"@name":"endTag","@where":"voice","#":"Ends a tag region where its including events will receive the given tags. See [beginTag](https://werckme.github.io/manual/#begintag).\\n[Example](https://www.werckme.org/editor?wid=mariounderworld)"},"param":{"@name":"tags","@position":"0","@type":"text","#":"a space separated list of tag names"}}}},"call":{"rawObject":{"doc":{"command":{"@name":"call","@where":"voice","#":"Executes a lua function.\\nSee [Example](https://www.werckme.org/editor?wid=lua-event-functions-example)"},"param":{"@name":"name","@position":"0","@type":"text","#":"The name of the lua function. This is the only \\"unique\\" parameter for this command. All further parameters are specific to its related implementation (see [The Execute Function](https://werckme.github.io/manual#the-execute-function))."}}}},"fadeCC":{"rawObject":{"doc":{"command":{"@name":"fadeCC","@where":"voice","#":"Fades a CC value from a start to an end value.\\n#### examples\\n`/fadeCC: _nr=1 _from=0 _to=100 _duration=2/ --modulation by controller number`\\n`/fadeCC: _name=\\"Modulation\\" _from=0 _to=100 _duration=2/ --modulation value by controller name`\\n#### supported CC names\\n* BankSelectMSB\\n* Modulation\\n* BreathController\\n* FootController\\n* PortamentoTime\\n* MainVolume\\n* Balance\\n* Panorama\\n* Expression\\n* EffectControl1\\n* EffectControl2\\n* BankSelectLSB\\n* Hold1\\n* Portamento\\n* Sostenuto\\n* SoftPedal\\n* Legato\\n* Hold2\\n* PortamentoControl\\n* Effects1Depth\\n* Effects2Depth\\n* Effects3Depth\\n* Effects4Depth\\n* Effects5Depth\\n* AllSoundsOff\\n* ControllerReset\\n* LocalControl\\n* AllNotesOff\\n* OmniOff\\n* OmniOn\\n* MonoOn\\n* MonoOff\\n![supported curve types](https://raw.githubusercontent.com/werckme/werckmeister/main/assets/curve-types.png)"},"param":[{"@name":"nr","@type":"0..N","@position":"0","@optional":"0","#":"The number of the controller"},{"@name":"from","@type":"0..127","@position":"1","@optional":"0","#":"the start value"},{"@name":"to","@type":"0..127","@position":"2","@optional":"0","#":"the end value"},{"@name":"name","@type":"[BankSelectMSB,Modulation,BreathController,FootController,PortamentoTime,MainVolume,Balance,Panorama,Expression,EffectControl1,EffectControl2,BankSelectLSB,Hold1,Portamento,Sostenuto,SoftPedal,Legato,Hold2,PortamentoControl,Effects1Depth,Effects2Depth,Effects3Depth,Effects4Depth,Effects5Depth,AllSoundsOff,ControllerReset,LocalControl,AllNotesOff,OmniOff,OmniOn,MonoOn,MonoOff]","@position":"3","@optional":"1","#":"a controller name, can be used instead of a number. (supported names, see list below)"},{"@name":"curve","@position":"4","@default":"lin","@optional":"1","@type":"lin,quad,cub,quart,quint,exp","#":"The fade curve type."}]}}},"fill":{"rawObject":{"doc":{"command":{"@name":"fill","@where":"accomp","#":["Plays a template only once. Is also able to replace the performance of another template during its playback.\\nUseful for fill ins.","```language=Werckmeister\\nusing \\"chords/default.chords\\";\\ntempo: 90;\\ndevice: MyDevice midi _usePort=0;\\ninstrumentDef:drums _onDevice=MyDevice _ch=9 _pc=0;\\n\\n[\\ntype: template;\\nname: drums.fill;\\ninstrument: drums;\\n{\\n(c, & &)4 (b,, & &)4 (a,, & &)4 (g,, & &)4 |\\n}\\n]\\n\\n[\\ntype: template;\\nname: drums.main;\\ninstrument: drums;\\n{\\nr8 f#,, r & r & r & |\\n}\\n{\\nr4 d,, r4 & |\\n}\\n{\\nc,,4 r & r |\\n}\\n]\\n\\n[\\ntype: accomp;\\n{\\n/template: drums.main/\\nC |\\n/fill: drums.fill/ -- play fill and drum beat together\\nC | C |\\n/fill: drums.fill _replace=\\"drums.main\\"/ -- play only the fill in\\nC | C |\\n}\\n]\\n```"]},"param":{"@name":"replace","@type":"text","#":"the name of the template to be replaced by the fill"}}}},"jump":{"rawObject":{"doc":{"command":{"@name":"jump","@where":"voice","#":["Jumps to a previous defined mark See [mark](https://werckme.github.io/manual/#mark).\\n#### example","```language=Werckmeister\\ndevice: _usePort=0 _setName=MyDevice _isType=midi;\\ninstrumentDef: _setName=piano _onDevice=MyDevice _ch=0 _pc=1 _cc=8;\\n[\\ninstrument: piano;\\n{\\n/signature: 5 4/\\n/mark: A/ -- valid & unique to this voice\\nc4 d e f g |\\n/jump: A/ -- jumps to A once\\na b c\'2\\n}\\n]\\n```"]},"param":[{"@name":"to","@position":"0","@type":"text","#":"the destination marker"},{"@name":"ignore","@position":"","@optional":"1","@type":"0..100","#":"Ignores the jump N times"},{"@name":"repeat","@position":"","@optional":"1","@type":"0..100","#":"Repeats the jump N times. (A repeat value of 1 performs 2 jumps)"}]}}},"mark":{"rawObject":{"doc":{"command":{"@name":"mark","@where":"voice","#":["adds a mark to the voice. Use it in combination with [jump](https://werckme.github.io/manual/#jump).\\n#### examples","```language=Werckmeister\\ndevice: _usePort=0 _setName=MyDevice _isType=midi;\\ninstrumentDef: _setName=piano _onDevice=MyDevice _ch=0 _pc=1 _cc=8;\\n[\\ninstrument: piano;\\n{\\n/signature: 5 4/\\n/mark: A/ -- valid & unique to this voice\\nc4 d e f g |\\n/jump: A/ -- jumps to A once\\na b c\'2\\n}\\n]\\n```"]},"param":{"@name":"name","@position":"0","@type":"word","#":"the name of the mark"}}}},"cc":{"rawObject":{"doc":{"command":{"@name":"cc","@where":"voice","#":"Adds a midi CC message.\\n#### examples\\n`/cc: _nr=1 _value=10/ --modulation by controller number`\\n`/cc: _name=\\"modulation\\" _value=10/ --modulation value by controller name`\\n#### supported CC names\\n* BankSelectMSB\\n* Modulation\\n* BreathController\\n* FootController\\n* PortamentoTime\\n* MainVolume\\n* Balance\\n* Panorama\\n* Expression\\n* EffectControl1\\n* EffectControl2\\n* BankSelectLSB\\n* Hold1\\n* Portamento\\n* Sostenuto\\n* SoftPedal\\n* Legato\\n* Hold2\\n* PortamentoControl\\n* Effects1Depth\\n* Effects2Depth\\n* Effects3Depth\\n* Effects4Depth\\n* Effects5Depth\\n* AllSoundsOff\\n* ControllerReset\\n* LocalControl\\n* AllNotesOff\\n* OmniOff\\n* OmniOn\\n* MonoOn\\n* MonoOff"},"param":[{"@name":"nr","@type":"0..N","@position":"0","@optional":"1","#":"The number of the controller"},{"@name":"value","@type":"0..127","@position":"1","@optional":"0","#":"the controller values"},{"@name":"name","@type":"[BankSelectMSB,Modulation,BreathController,FootController,PortamentoTime,MainVolume,Balance,Panorama,Expression,EffectControl1,EffectControl2,BankSelectLSB,Hold1,Portamento,Sostenuto,SoftPedal,Legato,Hold2,PortamentoControl,Effects1Depth,Effects2Depth,Effects3Depth,Effects4Depth,Effects5Depth,AllSoundsOff,ControllerReset,LocalControl,AllNotesOff,OmniOff,OmniOn,MonoOn,MonoOff]","@position":"2","@optional":"1","#":"a controller name, can be used instead of a number. (supported names, see list below)"}]}}},"setChord":{"rawObject":{"doc":{"command":{"@name":"setChord","@where":"voice","#":"Sets a chord context to the current voice to be able to use relative [degrees](https://werckme.github.io/manual#degree-events) instead of absolute notes.\\nThe given chord name must be defined in a *.chords file.\\n#### example\\n```language=Werckmeister,type=full\\nusing \\"/chords/default.chords\\";\\ndevice: myDevice midi _usePort=0;\\ninstrumentDef: piano myDevice _ch=0 _pc=0;\\ntempo: 120;\\n[\\ninstrument: piano;\\n{\\n/chord: \\"C-9\\"/\\nI III V VII | II\'1\\n}\\n]\\n```"},"param":{"@name":"name","@type":"text","#":"the chord name"}}}},"fade":{"rawObject":{"doc":{"command":{"@name":"fade","@where":"voice","#":"Fades the volume over a given duration in quarters.\\n#### example\\n```language=Werckmeister,type=full\\ndevice: myDevice midi _usePort=0;\\ninstrumentDef: organ myDevice _ch=0 _pc=16;\\ntempo: 75;\\n[\\ninstrument: organ;\\n{\\n\\\\fff\\n/fade: _from=0 _to=100 _duration=4/\\nc1 |\\n/fade: _from=0 _to=100 _duration=4 _curve=\\"quad\\"/\\nc1 |\\n/fade: _from=0 _to=100 _duration=4 _curve=\\"cub\\"/\\nc1 |\\n/fade: _from=0 _to=100 _duration=4 _curve=\\"quart\\"/\\nc1 |\\n/fade: _from=0 _to=100 _duration=4 _curve=\\"quint\\"/\\nc1 |\\n/fade: _from=0 _to=100 _duration=4 _curve=\\"exp\\"/\\nc1 |\\n}\\n]\\n```\\n![supported curve types](https://raw.githubusercontent.com/werckme/werckmeister/main/assets/curve-types.png)"},"param":[{"@name":"duration","@position":"0","@type":"0..N","#":"the duration in quarters."},{"@name":"from","@position":"1","@default":"0","@type":"0..100","#":"The source volume value."},{"@name":"to","@position":"2","@default":"100","@type":"0..100","#":"The target volume value."},{"@name":"curve","@position":"3","@default":"lin","@type":"lin,quad,cub,quart,quint,exp","#":"The fade curve type."}]}}},"instrument":{"rawObject":{"doc":{"command":{"@name":"instrument","@where":"track, voice","#":"Set or change the instrument of a track.\\n#### examples\\n**set an instrument for a track**\\n```\\n[\\ninstrument: myInstrument;\\n{\\nc d e f\\n}\\n]\\n```\\n**change current instrument within a track**\\n```\\n[\\n{\\nc d e f |\\n/instrument: myOtherInstrument/\\nc d e f\\n}\\n]\\n```"},"param":{"@name":"use","@position":"0","@type":"text","#":"The instrument name."}}}},"pan":{"rawObject":{"doc":{"command":{"@name":"pan","@where":"voice","#":"set the pan of the current track\\n#### example\\n`/pan: 50/`"},"param":{"@name":"to","@position":"0","@type":"0..100","#":"The pan value. Where 50 means the center"}}}},"signature":{"rawObject":{"doc":{"command":{"@name":"signature","@where":"voice","#":"Set the time signature of the current track.\\n#### example\\n`/signature: 3 4/`"},"param":[{"@name":"upper","@position":"0","#":"The upper value of the signature."},{"@name":"lower","@position":"1","#":"The lower value of the signature."}]}}},"do":{"rawObject":{"doc":{"command":{"@name":"do","@where":"voice","#":"Such as [mod](https://werckme.github.io/manual#mod)&nbsp;`do` adds a modification to the track.\\nThe difference is: every `mod` command adds a further modification to a voice.\\n`do` replaces the previous modification.\\n#### example\\n`/do: arpeggio/`"},"param":{"@name":"use","@position":"0","@type":"text","#":"The name of the modification to load. This is the only \\"unique\\" parameter for this command. All further parameters are specific to its related modification."}}}},"doOnce":{"rawObject":{"doc":{"command":{"@name":"doOnce","@where":"voice","#":"Like [do](https://werckme.github.io/manual#do). But with the difference, that the loaded mod will be only executed once for the following event.\\n#### example\\n`/doOnce: arpeggio/`"},"param":{"@name":"use","@position":"0","@type":"text","#":"The name of the modification to load. This is the only \\"unique\\" parameter for this command. All further parameters are specific to its related modification."}}}},"tempo":{"rawObject":{"doc":{"command":{"@name":"tempo","@where":"document, track","#":"`tempo` defines or changes the current tempo.\\n#### example\\n`tempo: 120;`\\nIt is also possible to set different tempo values for several tracks:\\n[see here](https://werckme.github.io/manual#tempo)"},"param":{"@name":"bpm","@position":"0","#":"The tempo bpm value."}}}},"voicingStrategy":{"rawObject":{"doc":{"command":{"@name":"voicingStrategy","@where":"voice","#":"Adds a modification to the track.\\n#### example\\n`/voicingStrategy: asNotated/`\\nVoicing strategies can be external lua scripts, or one of these internal strategies:\\n* asNotated\\n* simpleGuitar"},"param":{"@name":"use","@position":"0","@type":"text","#":"The name of the strategy to load. This is the only \\"unique\\" parameter for this command. All further parameters are specific to its related strategy."}}}},"volume":{"rawObject":{"doc":{"command":{"@name":"volume","@where":"voice","#":"set the volume of the current instrument\\n#### examples\\n`/volume: 50/`"},"param":{"@name":"to","@position":"0","@type":"0..100","#":"The volume value."}}}},"drumRudiments":{"rawObject":{"doc":{"command":{"@name":"drumRudiments","@where":"mod","@using":"lua/mod/drumRudiments.lua","#":"Implements a collection of different drum rudiments. ([see Wikipedia](https://en.wikipedia.org/wiki/Drum_rudiment))\\nYou can specify which notes are for `L` and `R` and performing duration.\\nThis will be achieved by using an chord as source material.\\nThe chord pitches will be used for `L` and `R`.\\nThe length of the chord event defines over which time the rudiment will be peformed.\\nAn event tag specifies which rudiment will be performed.\\nFor example:\\nThis plays one paradiddle over a length of 1 quarter\\nusing `sn1` for R and `sn2` for L:\\n```\\n/mod: drumRudiments/\\nR L\\n\\"paradiddle\\"@<\\"sn1\\" \\"sn2\\">4\\n```\\nExamples:\\n**a single paradiddle**\\n```language=Werckmeister\\nusing \\"lua/mods/drumRudiments.lua\\";\\ntempo: 150;\\ndevice: MyDevice midi 0;\\ninstrumentDef:piano MyDevice _ch=0 _pc=118;\\n[\\ninstrument: piano;\\n{\\n/mod: drumRudiments/\\n-- a paradiddle (RLRR) with c\' for R and c for L\\n\\"paradiddle\\"@<c\' c>1\\n}\\n]\\n```\\n**repeating**\\n```language=Werckmeister\\nusing \\"lua/mods/drumRudiments.lua\\";\\ntempo: 120;\\ndevice: MyDevice midi 0;\\ninstrumentDef:piano MyDevice _ch=0 _pc=118;\\n[\\ninstrument: piano;\\n{\\n/mod: drumRudiments/\\n-- performs 4 paradiddles (RLRR LRLL RLRR LRLL) with c\' for R and c for L\\n\\"4x paradiddle\\"@<c\' c>1\\n}\\n]\\n```\\n**orchestration**\\nIf you want to orchestrate a rudiment over a drum set,\\nyou are able to define more R & L notes. *(The total number of the notes has to be even.)*\\n```language=Werckmeister\\nusing \\"lua/mods/drumRudiments.lua\\";\\ntempo: 120;\\ndevice: MyDevice midi 0;\\ninstrumentDef:piano MyDevice _ch=0 _pc=118;\\n[\\ninstrument: piano;\\n{\\n/mod: drumRudiments/\\n-- performs 4 paradiddles (RLRR LRLL RLRR LRLL) with\\n-- c\' for R1 and c for L1\\n-- and c, for R2 and c,, for L2.\\n-- The final sequence will be: c\'(R1) c(L1) c,(R2) c,,(R1) ...\\n\\"4x paradiddle\\"@<c\' c c, c,,>1\\n}\\n]\\n```\\n**Supported Rudiments**\\n<ul style=\\"font-size: 0.9em;\\">\\n<li>singleStrokeRoll</li>\\n<li>doubleStrokeRoll</li>\\n<li>trippleStrokeRoll</li>\\n<li>fiveStrokeRoll</li>\\n<li>singleStrokeFour</li>\\n<li>singleStrokeSeven</li>\\n<li>multipleBounceRoll</li>\\n<li>sixStrokeRoll</li>\\n<li>sevenStrokeRoll</li>\\n<li>nineStrokeRoll</li>\\n<li>tenStrokeRoll</li>\\n<li>elevenStrokeRoll</li>\\n<li>thirteenStrokeRoll</li>\\n<li>fifteenStrokeRoll</li>\\n<li>seventeenStrokeRoll</li>\\n<li>paradiddle</li>\\n<li>doubleParadiddle</li>\\n<li>trippleParadiddle</li>\\n<li>paradiddlediddle</li>\\n<li>flam</li>\\n<li>flamAccent</li>\\n<li>flamTap</li>\\n<li>flamacue</li>\\n<li>flamParadiddle</li>\\n<li>singleFlammedMill</li>\\n<li>pataflafla</li>\\n<li>swissArmytriplet</li>\\n<li>invertedFlamTap</li>\\n<li>flamDrag</li>\\n<li>singleDragTap</li>\\n<li>doubleDragTap</li>\\n<li>lesson25</li>\\n<li>singleDragadiddle</li>\\n<li>dragParadiddle1</li>\\n<li>dragParadiddle2</li>\\n<li>singleRatamacue</li>\\n<li>doubleRatamacue</li>\\n<li>trippleRatamacue</li>\\n</ul>"},"param":[{"@name":"velocityFactorAccented","@optional":"1","@type":"0..1","#":"The velocity factor for accented notes (Default=1)"},{"@name":"velocityFactorUnaccented","@optional":"1","@type":"0..1","#":"The velocity factor for unaccented notes (Default=0.7)"},{"@name":"velocityFactorGraceNote","@optional":"1","@type":"0..1","#":"The velocity factor for accented notes (Default=1)"},{"@name":"flamOffset","@optional":"1","@type":"0..N","#":"The offset in quartes when to perform the grace note before the actual note (Default=0.05)"},{"@name":"dragOffset","@optional":"1","@type":"0..N","#":"The offset in quartes when to perform the two grace notes before the actual note (Default=0.05)"}]}}},"guitarStroke":{"rawObject":{"doc":{"command":{"@name":"guitarStroke","@where":"mod","@using":"lua/mod/guitarStroke.lua","#":"Simulates guitar strokes as mini arpeggios.\\n*Note: the alternate mode works only if this mod is set via instrumentConf.*\\n```\\n-- does not work:\\n[\\n{\\n/mod: guitarStroke _mode=alternate/\\n}\\n]\\n```\\n```\\n-- does work:\\ninstrumentConf: myInstrument mod guitarStroke _mode=alternate;\\n```\\n**Example**\\n```language=Werckmeister\\nusing \\"lua/mods/guitarStroke.lua\\";\\ntempo: 120;\\ndevice: MyDevice midi 0;\\ninstrumentDef: piano MyDevice _ch=0 _pc=24;\\ninstrumentConf: piano mod guitarStroke _mode=alternate _value=16;\\n[\\ninstrument: piano;\\n{\\n<c e g b>4 <c e g b>4 <c eb g bb>2 | <c eb g bb>2 <c eb g bb>2\\n}\\n]\\n```"},"param":[{"@name":"direction","@optional":"1","@type":"[up,down,alternate]","#":"Specifies the start direction of the stroke"},{"@name":"value","@optional":"1","@type":"[1,2,4,8,...]","#":"the duration of one arpeggio event. (Default=64)"},{"@name":"mode","@optional":"1","@type":"[normal,alternate]","#":"Deprecated: Use _direction=alternate instead. Perform only one stroke direction (normal) or alternates between up and down. (Default=normal)"}]}}},"legato":{"rawObject":{"doc":{"command":{"@name":"legato","@where":"mod","@using":"lua/mod/legato.lua","#":"Performs every note legato. It is also possible to tag single notes.\\nIf a tag is given, only the tagged notes are performed legato.\\n```language=Werckmeister\\nusing \\"lua/mods/legato.lua\\";\\ntempo: 140;\\ndevice: MyDevice midi 0;\\ninstrumentDef:piano MyDevice _ch=0 _pc=0;\\n[\\ninstrument: piano;\\n{\\n/mod: legato _forTag=leg _amount=100/\\n-- only the `d` will be performed legato.\\nc \\"leg\\"@d e f\\n}\\n]\\n```"},"param":[{"@name":"forTag","@optional":"1","@type":"text","#":"Specifies a tag name. If set only events with this tag name will be affected by the legato mod."},{"@name":"amount","@optional":"1","@type":"0..100","#":"The ammount of the legato effect"}]}}},"myArpeggio":{"rawObject":{"doc":{"command":{"@name":"myArpeggio","@where":"mod","@using":"lua/mod/myArpeggio.lua","#":"A simple arpeggio implementation.\\n**Example**\\n```language=Werckmeister\\nusing \\"lua/mods/myArpeggio.lua\\";\\ntempo: 120;\\ndevice: MyDevice midi 0;\\ninstrumentDef: piano MyDevice _ch=0 _pc=0;\\n[\\ninstrument: piano;\\n{\\n/do: myArpeggio/\\n<c e g b>2\\n/do: myArpeggio _direction=down/\\n<c eb g bb>2\\n}\\n]\\n```"},"param":[{"@name":"style","@optional":"1","@type":"[normal,legato]","#":"Performs the arpeggio normal or legato"},{"@name":"direction","@optional":"1","@type":"[up,down]","#":"the direction of the arpeggio. (Default=up)"}]}}},"staccato":{"rawObject":{"doc":{"command":{"@name":"staccato","@where":"mod","@using":"lua/mod/staccato.lua","#":"Performs every note staccato. It is also possible to tag single notes.\\nIf a tag is given, only the tagged notes are performed staccato.\\n```language=Werckmeister\\nusing \\"lua/mods/staccato.lua\\";\\ntempo: 140;\\ndevice: MyDevice midi 0;\\ninstrumentDef:piano MyDevice _ch=0 _pc=0;\\n[\\ninstrument: piano;\\n{\\n/mod: staccato _forTag=stac _amount=100/\\n-- only the `d` will be performed staccato.\\nc \\"stac\\"@d e f\\n}\\n]\\n```"},"param":[{"@name":"forTag","@optional":"1","@type":"text","#":"Specifies a tag name. If set only events with this tag name will be affected by the staccato mod."},{"@name":"amount","@optional":"1","@type":"0..100","#":"The ammount of the staccato effect"}]}}},"swing":{"rawObject":{"doc":{"command":{"@name":"swing","@where":"mod","@using":"lua/mod/swing.lua","#":"Performs a swing groove.\\n```language=Werckmeister\\nusing \\"lua/mods/swing.lua\\";\\ntempo: 120;\\ndevice: MyDevice midi 0;\\ninstrumentDef: piano MyDevice _ch=0 _pc=0;\\n[\\ninstrument: piano;\\n{\\n/mod: swing/\\nc8 c c c c c c c\\n}\\n]\\n```"},"param":[{"@name":"grid","@optional":"1","@type":"[8, 16]","#":"Performs the swing offset either on 8th or 16th. (Default=8)"},{"@name":"offset","@optional":"1","@type":"0..100","#":"The ammount of the swing offset"}]}}},"guitar":{"rawObject":{"doc":{"command":{"@name":"guitar","@where":"voicingStrategy","@using":"lua/voicings/guitar.lua","#":"Tries to simulate the chord voicing of an guitar.\\n```language=Werckmeister\\nusing \\"/lua/voicings/guitar.lua\\";\\nusing \\"/chords/default.chords\\";\\ntempo: 120;\\ndevice: MyDevice midi 0;\\ninstrumentDef:piano MyDevice _ch=0 _pc=0;\\n[\\ntype: template;\\nname: myTemplate;\\ninstrument: piano;\\n{\\n/voicingStrategy: guitar/\\n<I II III IV V VI VII>1\\n}\\n]\\n[\\ntype: accomp;\\n{\\n/template: myTemplate/\\nC | F | G | C |\\n}\\n]\\n```"},"param":{"@name":"range","@optional":"1","@type":"[contrabass,bass,baritone,tenor,alto,mezzosoprano,soprano]","#":"If given the strategy tries to keeps the range by shifting the octave of the chord."}}}},"inversion":{"rawObject":{"doc":{"command":{"@name":"inversion","@where":"voicingStrategy","@using":"lua/voicings/inversion.lua","#":"creates an inversion by moving the lowest note an octave hihgher.\\n```language=Werckmeister\\nusing \\"/lua/voicings/inversion.lua\\";\\nusing \\"/chords/default.chords\\";\\ntempo: 120;\\ndevice: MyDevice midi 0;\\ninstrumentDef:piano MyDevice _ch=0 _pc=0;\\n[\\ntype: template;\\nname: myTemplate;\\ninstrument: piano;\\n{\\n/voicingStrategy: inversion/\\n<I II III IV V VI VII>1\\n}\\n]\\n[\\ntype: accomp;\\n{\\n/template: myTemplate/\\nC | F | G | C |\\n}\\n]\\n```"},"param":[{"@name":"level","@optional":"1","@type":"number","#":"level of inversion"},{"@name":"range","@optional":"1","@type":"[contrabass,bass,baritone,tenor,alto,mezzosoprano,soprano]","#":"If given the strategy tries to keeps the range by shifting the octave of the chord."}]}}},"simple":{"rawObject":{"doc":{"command":{"@name":"simple","@where":"voicingStrategy","@using":"lua/voicings/simple.lua","#":"The simple approach with no strategy.\\n```language=Werckmeister\\nusing \\"/lua/voicings/simple.lua\\";\\nusing \\"/chords/default.chords\\";\\ntempo: 120;\\ndevice: MyDevice midi 0;\\ninstrumentDef:piano MyDevice _ch=0 _pc=0;\\n[\\ntype: template;\\nname: myTemplate;\\ninstrument: piano;\\n{\\n/voicingStrategy: simple/\\n<I II III IV V VI VII>1\\n}\\n]\\n[\\ntype: accomp;\\n{\\n/template: myTemplate/\\nC | F | G | C |\\n}\\n]\\n```"},"param":{"@name":"range","@optional":"1","@type":"[contrabass,bass,baritone,tenor,alto,mezzosoprano,soprano]","#":"If given the strategy tries to keeps the range by shifting the octave of the chord."}}}},"voicelead":{"rawObject":{"doc":{"command":{"@name":"voicelead","@where":"voicingStrategy","@using":"lua/voicings/voicelead.lua","#":"Tries to simulates a voice leading approach:\\nthe octaves of a chord are rearranged, so that the actual pitch distance between the previous chord is kept minimal.\\n```language=Werckmeister\\nusing \\"/lua/voicings/voicelead.lua\\";\\nusing \\"/chords/default.chords\\";\\ntempo: 120;\\ndevice: MyDevice midi 0;\\ninstrumentDef:piano MyDevice _ch=0 _pc=0;\\n[\\ntype: template;\\nname: myTemplate;\\ninstrument: piano;\\n{\\n/voicingStrategy: voicelead/\\n<I II III IV V VI VII>1\\n}\\n]\\n[\\ntype: accomp;\\n{\\n/template: myTemplate/\\nC | F | G | C |\\n}\\n]\\n```"},"param":{"@name":"range","@optional":"1","@type":"[contrabass,bass,baritone,tenor,alto,mezzosoprano,soprano]","#":"If given the strategy tries to keeps the range by shifting the octave of the chord."}}}}}',a=e.parseCommandDbJson(t);function o(){return a}exports.getAutoHintDb=o;var i=JSON.parse('{"/":[{"name":"chords","isDirectory":true},{"name":"lua","isDirectory":true},{"name":"pitchmaps","isDirectory":true},{"name":"templates","isDirectory":true}],"/chords":[{"name":"default.chords"}],"/lua/com":[{"name":"com.lua"},{"name":"globals.lua"},{"name":"inspect.lua"},{"name":"tests.lua"}],"/lua/mods":[{"name":"drumRudiments.lua"},{"name":"guitarStroke.lua"},{"name":"legato.lua"},{"name":"myArpeggio.lua"},{"name":"staccato.lua"},{"name":"swing.lua"}],"/lua/voicings":[{"name":"com.lua"},{"name":"guitar.lua"},{"name":"inversion.lua"},{"name":"simple.lua"},{"name":"voicelead.lua"}],"/lua":[{"name":"com","isDirectory":true},{"name":"mods","isDirectory":true},{"name":"voicings","isDirectory":true}],"/pitchmaps":[{"name":"battery3.tight.pitchmap"},{"name":"defaultMIDI.pitchmap"},{"name":"defaultMidiDrumMap.pitchmap"}],"/templates":[{"name":"bass.blues.template"},{"name":"bass.bossanova.template"},{"name":"bass.country.template"},{"name":"bass.disco.template"},{"name":"bass.jazzSwing.template"},{"name":"bass.reggae.template"},{"name":"bass.soca.template"},{"name":"bossanova.template"},{"name":"countryschlager1.template"},{"name":"drums.bossanova.template"},{"name":"drums.country.template"},{"name":"drums.disco.template"},{"name":"drums.jazzSwing.template"},{"name":"drums.purdie.template"},{"name":"drums.reggae.template"},{"name":"drums.soca.template"},{"name":"ennio.template"},{"name":"guitar.bossanova.template"},{"name":"guitar.country.template"},{"name":"rhythm.bossanova.template"},{"name":"rhythm.country.template"},{"name":"rhythm.jazzSwing.template"},{"name":"rhythm.reggae.template"}]}');function r(){return i}exports.getPreInstalledAuxFiles=r;
8
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getPreInstalledAuxFiles=exports.getAutoHintDb=void 0;var e=require("./parser/docParser"),n=require("fs"),t='{"device":{"rawObject":{"doc":{"command":{"@name":"device","@where":"document","#":"Defines a device which can be used when adding instruments (see [instrumentDef](https://werckme.github.io/manual#instrumentDef))\\nsee [instrumentDef](https://werckme.github.io/manual#instrumentDef), [instrument](https://werckme.github.io/manual#instrument)\\n#### example\\ndefine an device, an instrument and assign it to a track.\\n```\\ndevice: MyDevice midi 0;\\ninstrumentDef: organ _onDevice=MyDevice _ch=0 _pc=16;\\n[\\ninstrument: organ;\\n{\\nc d e f\\n}\\n]\\n```\\n**Fluidsynth**\\nIf you want to use [fluidSynth](http://www.fluidsynth.org) as output device, you can achieve this with a command like this:\\n`device: MyDevice fluidSynth _useFont=\\"PATH OF A SOUNDFONT FILE\\";`\\nOn mac, make sure that you have fluidsynth installed."},"param":[{"@name":"setName","@position":"0","@type":"text","#":"An arbitary name."},{"@name":"isType","@position":"1","@type":"[midi,fluidSynth]","#":"The type of the device."},{"@name":"usePort","@position":"2","@optional":"1","@type":"0..N","#":"The midi port id of your device. You can get a list of your connected devices, by executing `sheetp --list`. Alternatively you can use `useDevice` instead."},{"@name":"useDevice","@position":"","@optional":"1","@type":"text","#":"The name of the midi port of your device. You can get a list of your connected devices, by executing `sheetp --list`. It is not necessary to give the full name, a subset will match."},{"@name":"withOffset","@position":"","@optional":"1","@type":"0..N","#":"Defines an offset in milliseconds. Can be used to keep different devices in sync."},{"@name":"useFont","@position":"","@optional":"1","@type":"a file path","#":"Only valid if isType=`fluidsynth`. Sets the location of the soundfont file, which will be used by FluidSynth"}]}}},"instrumentConf":{"rawObject":{"doc":{"command":{"@name":"instrumentConf","@where":"document","#":"With `instrumentConf` you are able to setup a specific instrument.\\nFollowing settings can be applied:\\n* volume\\n* pan\\n* cc\\n* voicing strategy\\n* mod\\n* velocity remap\\n#### examples\\n##### mixed settings\\n`instrumentConf: piano volume 100 pan 50;`\\n##### setup a mod\\n`instrumentConf: piano mod myLuaMod someValue; --the `someValue` argument belongs to \\"myLuaMod\\"`\\n##### setup a velocity remap\\nWith `remapVelocity` you are able to change the velocity values behind `ppppp..fffff` for a specific instrument.\\nIn the example below the velocity for `p` will be set to 100 and the value for `f` will be set to 10.\\n> this approach is deprecated, use [conduction rules](https://werckme.github.io/manual#conduction-rules) instead\\nThe value range is 0..100. (100=127 Midi velocity)\\n`instrumentConf: _set=remapVelocity _p=100 _f=10;`"},"param":{"@name":"for","@position":"0","#":"The name of the target instrument. This is the only \\"unique\\" parameter for this command. All further parameters are specific to its related setting."}}}},"mod":{"rawObject":{"doc":{"command":{"@name":"mod","@where":"voice","#":"Adds a modification to the track. Every `mod` statement adds a further modification to the related voice.\\nIf you want to use ony one modification at the time use [do](https://werckme.github.io/manual#do) instead.\\n#### examples\\n`/mod: arpeggio/`\\nMods can be external lua scripts, or one of these internal mods:\\n##### Bend\\nPerforms a pitch bend from or to the pitch of a note. The value range is 0..100 where 50 means the pichbend center.\\n```language=Werckmeister,type=single,tempo=140\\n/doOnce: bend _from=0/ c1 | /doOnce: bend _to=0/ c1\\n```\\n##### Arpeggio\\nPerforms an arpeggio over a given chord.\\n**Arpeggio is deprecated. Use the lua mod [myArpeggio](https://werckme.github.io/manual#myarpeggio) instead.**"},"param":{"@name":"use","@position":"0","@type":"text","#":"The name of the modification to load. This is the only \\"unique\\" parameter for this command. All further parameters are specific to its related modification."}}}},"modOnce":{"rawObject":{"doc":{"command":{"@name":"modOnce","@where":"voice","#":"Like [mod](https://werckme.github.io/manual#mod). But with the difference, that the loaded mod will be only executed once for the following event.\\n#### examples\\n`/modOnce: arpeggio/`"},"param":{"@name":"use","@position":"0","@type":"text","#":"The name of the modification to load. This is the only \\"unique\\" parameter for this command. All further parameters are specific to its related modification."}}}},"beginTag":{"rawObject":{"doc":{"command":{"@name":"beginTag","@where":"voice","#":"Begins a tag region where its including events will receive the given tags. See [endTag](https://werckme.github.io/manual#endtag).\\n[Example](https://www.werckme.org/editor?wid=mariounderworld)"},"param":{"@name":"tags","@position":"0","@type":"text","#":"a space separated list of tag names"}}}},"cue":{"rawObject":{"doc":{"command":{"@name":"cue","@where":"voice","#":"adds a cue MIDI meta message to the corresponding midi track\\n#### examples\\n`/cue: cueText/`\\n> If a cue was visited several times during a repeat or jump an additional repeat index will be added.\\n> For example:\\n> `/cue: myCue/ c d e f :|` will create two cue MIDI messages: \\"myCue\\" and \\"myCue2\\"\\n>"},"param":{"@name":"text","@type":"text","#":"the text which appears in the MIDI message"}}}},"instrumentSection":{"rawObject":{"doc":{"command":{"@name":"instrumentSection","@where":"document","#":["Layers arbitrary instruments into one.\\nsee [instrumentDef](#instrumentDef), [instrument](https://werckme.github.io/manual#instrument), [device](https://werckme.github.io/manual#device)\\n#### example\\ncreate 3 instruments and assign them to the section `myNewInstrument`.","```language=Werckmeister\\ntempo: 120;\\ndevice: MyDevice midi _usePort=0;\\ninstrumentDef:piano _onDevice=MyDevice _ch=0 _pc=0;\\ninstrumentDef:guitar _onDevice=MyDevice _ch=1 _pc=29;\\ninstrumentDef:organ _onDevice=MyDevice _ch=2 _pc=16;\\ninstrumentSection: myNewInstrument piano guitar organ;\\n\\n[\\ninstrument: myNewInstrument;\\n{\\na,,1 | a, | d#,~ | &\\n}\\n]\\n```"]},"param":{"@name":"setName","@position":"0","@type":"text","#":"An arbitary name."}}}},"instrumentDef":{"rawObject":{"doc":{"command":{"@name":"instrumentDef","@where":"document","#":"Adds a new MIDI instrument.\\nsee [instrument](https://werckme.github.io/manual#instrument), [device](https://werckme.github.io/manual#device)\\n#### example\\ndefine an device, an instrument and assign it to a track.\\n```\\ndevice: MyDevice midi 0;\\ninstrumentDef: organ _onDevice=MyDevice _ch=0 _pc=16;\\n[\\ninstrument: organ;\\n{\\nc d e f\\n}\\n]\\n```"},"param":[{"@name":"setName","@position":"0","@type":"text","#":"An arbitary name."},{"@name":"onDevice","@position":"1","@type":"text","#":"The device which to use (The name of the device, see [device](https://werckme.github.io/manual#device))."},{"@name":"ch","@position":"2","@type":"0..15","#":"The MIDI channel."},{"@name":"bankMsb","@position":"3","@type":"0..127","#":"A MIDI `bank select MSB` value."},{"@name":"pc","@position":"4","@type":"0..127","#":"A MIDI `program change` value."},{"@name":"bankLsb","@type":"0..127","#":"A MIDI `bank select LSB` value."},{"@name":"cc","@type":"0..127","@deprecated":"use bankMsb instead","#":"A MIDI `bank select MSB. Deprecated use bankMsb instead` value."},{"@name":"gmInstrument","@type":"text","#":"You can use a GM instrument name instead of a pc number. It is not necessary to give the full name, a subset will match. You can find a complete list of instrument names here: [GM Instruments](https://raw.githubusercontent.com/werckme/werckmeister/main/assets/gm_instrument_names.md)."}]}}},"endTag":{"rawObject":{"doc":{"command":{"@name":"endTag","@where":"voice","#":"Ends a tag region where its including events will receive the given tags. See [beginTag](https://werckme.github.io/manual/#begintag).\\n[Example](https://www.werckme.org/editor?wid=mariounderworld)"},"param":{"@name":"tags","@position":"0","@type":"text","#":"a space separated list of tag names"}}}},"call":{"rawObject":{"doc":{"command":{"@name":"call","@where":"voice","#":"Executes a lua function.\\nSee [Example](https://www.werckme.org/editor?wid=lua-event-functions-example)"},"param":{"@name":"name","@position":"0","@type":"text","#":"The name of the lua function. This is the only \\"unique\\" parameter for this command. All further parameters are specific to its related implementation (see [The Execute Function](https://werckme.github.io/manual#the-execute-function))."}}}},"fadeCC":{"rawObject":{"doc":{"command":{"@name":"fadeCC","@where":"voice","#":"Fades a CC value from a start to an end value.\\n#### examples\\n`/fadeCC: _nr=1 _from=0 _to=100 _duration=2/ --modulation by controller number`\\n`/fadeCC: _name=\\"Modulation\\" _from=0 _to=100 _duration=2/ --modulation value by controller name`\\n#### supported CC names\\n* BankSelectMSB\\n* Modulation\\n* BreathController\\n* FootController\\n* PortamentoTime\\n* MainVolume\\n* Balance\\n* Panorama\\n* Expression\\n* EffectControl1\\n* EffectControl2\\n* BankSelectLSB\\n* Hold1\\n* Portamento\\n* Sostenuto\\n* SoftPedal\\n* Legato\\n* Hold2\\n* PortamentoControl\\n* Effects1Depth\\n* Effects2Depth\\n* Effects3Depth\\n* Effects4Depth\\n* Effects5Depth\\n* AllSoundsOff\\n* ControllerReset\\n* LocalControl\\n* AllNotesOff\\n* OmniOff\\n* OmniOn\\n* MonoOn\\n* MonoOff\\n![supported curve types](https://raw.githubusercontent.com/werckme/werckmeister/main/assets/curve-types.png)"},"param":[{"@name":"nr","@type":"0..N","@position":"0","@optional":"0","#":"The number of the controller"},{"@name":"from","@type":"0..127","@position":"1","@optional":"0","#":"the start value"},{"@name":"to","@type":"0..127","@position":"2","@optional":"0","#":"the end value"},{"@name":"name","@type":"[BankSelectMSB,Modulation,BreathController,FootController,PortamentoTime,MainVolume,Balance,Panorama,Expression,EffectControl1,EffectControl2,BankSelectLSB,Hold1,Portamento,Sostenuto,SoftPedal,Legato,Hold2,PortamentoControl,Effects1Depth,Effects2Depth,Effects3Depth,Effects4Depth,Effects5Depth,AllSoundsOff,ControllerReset,LocalControl,AllNotesOff,OmniOff,OmniOn,MonoOn,MonoOff]","@position":"3","@optional":"1","#":"a controller name, can be used instead of a number. (supported names, see list below)"},{"@name":"curve","@position":"4","@default":"lin","@optional":"1","@type":"lin,quad,cub,quart,quint,exp","#":"The fade curve type."}]}}},"fill":{"rawObject":{"doc":{"command":{"@name":"fill","@where":"accomp","#":["Plays a template only once. Is also able to replace the performance of another template during its playback.\\nUseful for fill ins.","```language=Werckmeister\\nusing \\"chords/default.chords\\";\\ntempo: 90;\\ndevice: MyDevice midi _usePort=0;\\ninstrumentDef:drums _onDevice=MyDevice _ch=9 _pc=0;\\n\\n[\\ntype: template;\\nname: drums.fill;\\ninstrument: drums;\\n{\\n(c, & &)4 (b,, & &)4 (a,, & &)4 (g,, & &)4 |\\n}\\n]\\n\\n[\\ntype: template;\\nname: drums.main;\\ninstrument: drums;\\n{\\nr8 f#,, r & r & r & |\\n}\\n{\\nr4 d,, r4 & |\\n}\\n{\\nc,,4 r & r |\\n}\\n]\\n\\n[\\ntype: accomp;\\n{\\n/template: drums.main/\\nC |\\n/fill: drums.fill/ -- play fill and drum beat together\\nC | C |\\n/fill: drums.fill _replace=\\"drums.main\\"/ -- play only the fill in\\nC | C |\\n}\\n]\\n```"]},"param":{"@name":"replace","@type":"text","#":"the name of the template to be replaced by the fill"}}}},"jump":{"rawObject":{"doc":{"command":{"@name":"jump","@where":"voice","#":["Jumps to a previous defined mark See [mark](https://werckme.github.io/manual/#mark).\\n#### example","```language=Werckmeister\\ndevice: _usePort=0 _setName=MyDevice _isType=midi;\\ninstrumentDef: _setName=piano _onDevice=MyDevice _ch=0 _pc=1 _cc=8;\\n[\\ninstrument: piano;\\n{\\n/signature: 5 4/\\n/mark: A/ -- valid & unique to this voice\\nc4 d e f g |\\n/jump: A/ -- jumps to A once\\na b c\'2\\n}\\n]\\n```"]},"param":[{"@name":"to","@position":"0","@type":"text","#":"the destination marker"},{"@name":"ignore","@position":"","@optional":"1","@type":"0..100","#":"Ignores the jump N times"},{"@name":"repeat","@position":"","@optional":"1","@type":"0..100","#":"Repeats the jump N times. (A repeat value of 1 performs 2 jumps)"}]}}},"mark":{"rawObject":{"doc":{"command":{"@name":"mark","@where":"voice","#":["adds a mark to the voice. Use it in combination with [jump](https://werckme.github.io/manual/#jump).\\n#### examples","```language=Werckmeister\\ndevice: _usePort=0 _setName=MyDevice _isType=midi;\\ninstrumentDef: _setName=piano _onDevice=MyDevice _ch=0 _pc=1 _cc=8;\\n[\\ninstrument: piano;\\n{\\n/signature: 5 4/\\n/mark: A/ -- valid & unique to this voice\\nc4 d e f g |\\n/jump: A/ -- jumps to A once\\na b c\'2\\n}\\n]\\n```"]},"param":{"@name":"name","@position":"0","@type":"word","#":"the name of the mark"}}}},"cc":{"rawObject":{"doc":{"command":{"@name":"cc","@where":"voice","#":"Adds a midi CC message.\\n#### examples\\n`/cc: _nr=1 _value=10/ --modulation by controller number`\\n`/cc: _name=\\"modulation\\" _value=10/ --modulation value by controller name`\\n#### supported CC names\\n* BankSelectMSB\\n* Modulation\\n* BreathController\\n* FootController\\n* PortamentoTime\\n* MainVolume\\n* Balance\\n* Panorama\\n* Expression\\n* EffectControl1\\n* EffectControl2\\n* BankSelectLSB\\n* Hold1\\n* Portamento\\n* Sostenuto\\n* SoftPedal\\n* Legato\\n* Hold2\\n* PortamentoControl\\n* Effects1Depth\\n* Effects2Depth\\n* Effects3Depth\\n* Effects4Depth\\n* Effects5Depth\\n* AllSoundsOff\\n* ControllerReset\\n* LocalControl\\n* AllNotesOff\\n* OmniOff\\n* OmniOn\\n* MonoOn\\n* MonoOff"},"param":[{"@name":"nr","@type":"0..N","@position":"0","@optional":"1","#":"The number of the controller"},{"@name":"value","@type":"0..127","@position":"1","@optional":"0","#":"the controller values"},{"@name":"name","@type":"[BankSelectMSB,Modulation,BreathController,FootController,PortamentoTime,MainVolume,Balance,Panorama,Expression,EffectControl1,EffectControl2,BankSelectLSB,Hold1,Portamento,Sostenuto,SoftPedal,Legato,Hold2,PortamentoControl,Effects1Depth,Effects2Depth,Effects3Depth,Effects4Depth,Effects5Depth,AllSoundsOff,ControllerReset,LocalControl,AllNotesOff,OmniOff,OmniOn,MonoOn,MonoOff]","@position":"2","@optional":"1","#":"a controller name, can be used instead of a number. (supported names, see list below)"}]}}},"setChord":{"rawObject":{"doc":{"command":{"@name":"setChord","@where":"voice","#":"Sets a chord context to the current voice to be able to use relative [degrees](https://werckme.github.io/manual#degree-events) instead of absolute notes.\\nThe given chord name must be defined in a *.chords file.\\n#### example\\n```language=Werckmeister,type=full\\nusing \\"/chords/default.chords\\";\\ndevice: myDevice midi _usePort=0;\\ninstrumentDef: piano myDevice _ch=0 _pc=0;\\ntempo: 120;\\n[\\ninstrument: piano;\\n{\\n/chord: \\"C-9\\"/\\nI III V VII | II\'1\\n}\\n]\\n```"},"param":{"@name":"name","@type":"text","#":"the chord name"}}}},"fade":{"rawObject":{"doc":{"command":{"@name":"fade","@where":"voice","#":"Fades the volume over a given duration in quarters.\\n#### example\\n```language=Werckmeister,type=full\\ndevice: myDevice midi _usePort=0;\\ninstrumentDef: organ myDevice _ch=0 _pc=16;\\ntempo: 75;\\n[\\ninstrument: organ;\\n{\\n\\\\fff\\n/fade: _from=0 _to=100 _duration=4/\\nc1 |\\n/fade: _from=0 _to=100 _duration=4 _curve=\\"quad\\"/\\nc1 |\\n/fade: _from=0 _to=100 _duration=4 _curve=\\"cub\\"/\\nc1 |\\n/fade: _from=0 _to=100 _duration=4 _curve=\\"quart\\"/\\nc1 |\\n/fade: _from=0 _to=100 _duration=4 _curve=\\"quint\\"/\\nc1 |\\n/fade: _from=0 _to=100 _duration=4 _curve=\\"exp\\"/\\nc1 |\\n}\\n]\\n```\\n![supported curve types](https://raw.githubusercontent.com/werckme/werckmeister/main/assets/curve-types.png)"},"param":[{"@name":"duration","@position":"0","@type":"0..N","#":"the duration in quarters."},{"@name":"from","@position":"1","@default":"0","@type":"0..100","#":"The source volume value."},{"@name":"to","@position":"2","@default":"100","@type":"0..100","#":"The target volume value."},{"@name":"curve","@position":"3","@default":"lin","@type":"lin,quad,cub,quart,quint,exp","#":"The fade curve type."}]}}},"instrument":{"rawObject":{"doc":{"command":{"@name":"instrument","@where":"track, voice","#":"Set or change the instrument of a track.\\n#### examples\\n**set an instrument for a track**\\n```\\n[\\ninstrument: myInstrument;\\n{\\nc d e f\\n}\\n]\\n```\\n**change current instrument within a track**\\n```\\n[\\n{\\nc d e f |\\n/instrument: myOtherInstrument/\\nc d e f\\n}\\n]\\n```"},"param":{"@name":"use","@position":"0","@type":"text","#":"The instrument name."}}}},"pan":{"rawObject":{"doc":{"command":{"@name":"pan","@where":"voice","#":"set the pan of the current track\\n#### example\\n`/pan: 50/`"},"param":{"@name":"to","@position":"0","@type":"0..100","#":"The pan value. Where 50 means the center"}}}},"signature":{"rawObject":{"doc":{"command":{"@name":"signature","@where":"voice","#":"Set the time signature of the current track.\\n#### example\\n`/signature: 3 4/`"},"param":[{"@name":"upper","@position":"0","#":"The upper value of the signature."},{"@name":"lower","@position":"1","#":"The lower value of the signature."}]}}},"do":{"rawObject":{"doc":{"command":{"@name":"do","@where":"voice","#":"Such as [mod](https://werckme.github.io/manual#mod)&nbsp;`do` adds a modification to the track.\\nThe difference is: every `mod` command adds a further modification to a voice.\\n`do` replaces the previous modification.\\n#### example\\n`/do: arpeggio/`"},"param":{"@name":"use","@position":"0","@type":"text","#":"The name of the modification to load. This is the only \\"unique\\" parameter for this command. All further parameters are specific to its related modification."}}}},"doOnce":{"rawObject":{"doc":{"command":{"@name":"doOnce","@where":"voice","#":"Like [do](https://werckme.github.io/manual#do). But with the difference, that the loaded mod will be only executed once for the following event.\\n#### example\\n`/doOnce: arpeggio/`"},"param":{"@name":"use","@position":"0","@type":"text","#":"The name of the modification to load. This is the only \\"unique\\" parameter for this command. All further parameters are specific to its related modification."}}}},"tempo":{"rawObject":{"doc":{"command":{"@name":"tempo","@where":"document, track","#":"`tempo` defines or changes the current tempo.\\n#### example\\n`tempo: 120;`\\nIt is also possible to set different tempo values for several tracks:\\n[see here](https://werckme.github.io/manual#tempo)"},"param":{"@name":"bpm","@position":"0","#":"The tempo bpm value."}}}},"voicingStrategy":{"rawObject":{"doc":{"command":{"@name":"voicingStrategy","@where":"voice","#":"Adds a modification to the track.\\n#### example\\n`/voicingStrategy: asNotated/`\\nVoicing strategies can be external lua scripts, or one of these internal strategies:\\n* asNotated\\n* simpleGuitar"},"param":{"@name":"use","@position":"0","@type":"text","#":"The name of the strategy to load. This is the only \\"unique\\" parameter for this command. All further parameters are specific to its related strategy."}}}},"volume":{"rawObject":{"doc":{"command":{"@name":"volume","@where":"voice","#":"set the volume of the current instrument\\n#### examples\\n`/volume: 50/`"},"param":{"@name":"to","@position":"0","@type":"0..100","#":"The volume value."}}}},"i7mfxtype":{"rawObject":{"doc":{"command":{"@name":"i7mfxtype","@where":"voicingStrategy","@using":"lua/voicings/inversion.lua","#":"set the mfx type for a part."},"param":[{"@name":"partId","@optional":"-1","@type":["1..16","number"],"#":"the part number, will be detected via instrument channel if not set."},{"@name":"typeNr","@type":["0..67","number"],"#":"the mfx type"},{"@name":"toneType","@type":"[sna, sns, snd, pcms, pcmd]","#":"the type of the tone on the target part"},{"@name":"deviceId","@optional":"1","@type":"16..31","#":"an alternative device id"}]}}},"integra7":{"rawObject":{"doc":{"command":{"@name":"integra7","@where":"mod","@using":"lua/devices/integra7/integra7.lua","#":"A generic way to create integra7 parameter sysex messages"},"param":[{"@name":"parameterId","@optional":"0","@type":"string","#":"the parameter (node) id. As placeholder for the partId can `xxx` be used. For exampe `PRM-_PRF-_FPxxx-NEFP_OUT_ASGN`"},{"@name":"value","@optional":"0","@type":"number|string","#":"the value"},{"@name":"partId","@optional":"1","@type":"0..15","#":"specifies the part id. If not set, will be determined using its related instrument channel(s), assuming that the channel never changes."},{"@name":"deviceId","@optional":"1","@type":"16..31","#":"an alternative device id"}]}}},"i7sntcmod":{"rawObject":{"doc":{"command":{"@name":"i7sntcmod","@where":"voicingStrategy","@using":"lua/voicings/inversion.lua","#":"set a mod value for a sna tone type instrument"},"param":[{"@name":"partId","@optional":"-1","@type":["1..16","number"],"#":"the part number, will be detected via instrument channel if not set."},{"@name":"modNr","@type":["1..32","number"],"#":"the mod number."},{"@name":"value","@type":"number","#":"the value"},{"@name":"deviceId","@optional":"1","@type":"16..31","#":"an alternative device id"}]}}},"drumRudiments":{"rawObject":{"doc":{"command":{"@name":"drumRudiments","@where":"mod","@using":"lua/mod/drumRudiments.lua","#":"Implements a collection of different drum rudiments. ([see Wikipedia](https://en.wikipedia.org/wiki/Drum_rudiment))\\nYou can specify which notes are for `L` and `R` and performing duration.\\nThis will be achieved by using an chord as source material.\\nThe chord pitches will be used for `L` and `R`.\\nThe length of the chord event defines over which time the rudiment will be peformed.\\nAn event tag specifies which rudiment will be performed.\\nFor example:\\nThis plays one paradiddle over a length of 1 quarter\\nusing `sn1` for R and `sn2` for L:\\n```\\n/mod: drumRudiments/\\nR L\\n\\"paradiddle\\"@<\\"sn1\\" \\"sn2\\">4\\n```\\nExamples:\\n**a single paradiddle**\\n```language=Werckmeister\\nusing \\"lua/mods/drumRudiments.lua\\";\\ntempo: 150;\\ndevice: MyDevice midi 0;\\ninstrumentDef:piano MyDevice _ch=0 _pc=118;\\n[\\ninstrument: piano;\\n{\\n/mod: drumRudiments/\\n-- a paradiddle (RLRR) with c\' for R and c for L\\n\\"paradiddle\\"@<c\' c>1\\n}\\n]\\n```\\n**repeating**\\n```language=Werckmeister\\nusing \\"lua/mods/drumRudiments.lua\\";\\ntempo: 120;\\ndevice: MyDevice midi 0;\\ninstrumentDef:piano MyDevice _ch=0 _pc=118;\\n[\\ninstrument: piano;\\n{\\n/mod: drumRudiments/\\n-- performs 4 paradiddles (RLRR LRLL RLRR LRLL) with c\' for R and c for L\\n\\"4x paradiddle\\"@<c\' c>1\\n}\\n]\\n```\\n**orchestration**\\nIf you want to orchestrate a rudiment over a drum set,\\nyou are able to define more R & L notes. *(The total number of the notes has to be even.)*\\n```language=Werckmeister\\nusing \\"lua/mods/drumRudiments.lua\\";\\ntempo: 120;\\ndevice: MyDevice midi 0;\\ninstrumentDef:piano MyDevice _ch=0 _pc=118;\\n[\\ninstrument: piano;\\n{\\n/mod: drumRudiments/\\n-- performs 4 paradiddles (RLRR LRLL RLRR LRLL) with\\n-- c\' for R1 and c for L1\\n-- and c, for R2 and c,, for L2.\\n-- The final sequence will be: c\'(R1) c(L1) c,(R2) c,,(R1) ...\\n\\"4x paradiddle\\"@<c\' c c, c,,>1\\n}\\n]\\n```\\n**Supported Rudiments**\\n<ul style=\\"font-size: 0.9em;\\">\\n<li>singleStrokeRoll</li>\\n<li>doubleStrokeRoll</li>\\n<li>trippleStrokeRoll</li>\\n<li>fiveStrokeRoll</li>\\n<li>singleStrokeFour</li>\\n<li>singleStrokeSeven</li>\\n<li>multipleBounceRoll</li>\\n<li>sixStrokeRoll</li>\\n<li>sevenStrokeRoll</li>\\n<li>nineStrokeRoll</li>\\n<li>tenStrokeRoll</li>\\n<li>elevenStrokeRoll</li>\\n<li>thirteenStrokeRoll</li>\\n<li>fifteenStrokeRoll</li>\\n<li>seventeenStrokeRoll</li>\\n<li>paradiddle</li>\\n<li>doubleParadiddle</li>\\n<li>trippleParadiddle</li>\\n<li>paradiddlediddle</li>\\n<li>flam</li>\\n<li>flamAccent</li>\\n<li>flamTap</li>\\n<li>flamacue</li>\\n<li>flamParadiddle</li>\\n<li>singleFlammedMill</li>\\n<li>pataflafla</li>\\n<li>swissArmytriplet</li>\\n<li>invertedFlamTap</li>\\n<li>flamDrag</li>\\n<li>singleDragTap</li>\\n<li>doubleDragTap</li>\\n<li>lesson25</li>\\n<li>singleDragadiddle</li>\\n<li>dragParadiddle1</li>\\n<li>dragParadiddle2</li>\\n<li>singleRatamacue</li>\\n<li>doubleRatamacue</li>\\n<li>trippleRatamacue</li>\\n</ul>"},"param":[{"@name":"velocityFactorAccented","@optional":"1","@type":"0..1","#":"The velocity factor for accented notes (Default=1)"},{"@name":"velocityFactorUnaccented","@optional":"1","@type":"0..1","#":"The velocity factor for unaccented notes (Default=0.7)"},{"@name":"velocityFactorGraceNote","@optional":"1","@type":"0..1","#":"The velocity factor for accented notes (Default=1)"},{"@name":"flamOffset","@optional":"1","@type":"0..N","#":"The offset in quartes when to perform the grace note before the actual note (Default=0.05)"},{"@name":"dragOffset","@optional":"1","@type":"0..N","#":"The offset in quartes when to perform the two grace notes before the actual note (Default=0.05)"}]}}},"guitarStroke":{"rawObject":{"doc":{"command":{"@name":"guitarStroke","@where":"mod","@using":"lua/mod/guitarStroke.lua","#":"Simulates guitar strokes as mini arpeggios.\\n*Note: the alternate mode works only if this mod is set via instrumentConf.*\\n```\\n-- does not work:\\n[\\n{\\n/mod: guitarStroke _mode=alternate/\\n}\\n]\\n```\\n```\\n-- does work:\\ninstrumentConf: myInstrument mod guitarStroke _mode=alternate;\\n```\\n**Example**\\n```language=Werckmeister\\nusing \\"lua/mods/guitarStroke.lua\\";\\ntempo: 120;\\ndevice: MyDevice midi 0;\\ninstrumentDef: piano MyDevice _ch=0 _pc=24;\\ninstrumentConf: piano mod guitarStroke _mode=alternate _value=16;\\n[\\ninstrument: piano;\\n{\\n<c e g b>4 <c e g b>4 <c eb g bb>2 | <c eb g bb>2 <c eb g bb>2\\n}\\n]\\n```"},"param":[{"@name":"direction","@optional":"1","@type":"[up,down,alternate]","#":"Specifies the start direction of the stroke"},{"@name":"value","@optional":"1","@type":"[1,2,4,8,...]","#":"the duration of one arpeggio event. (Default=64)"},{"@name":"mode","@optional":"1","@type":"[normal,alternate]","#":"Deprecated: Use _direction=alternate instead. Perform only one stroke direction (normal) or alternates between up and down. (Default=normal)"},{"@name":"withTag","@optional":"1","@type":"tagName","#":"if set, only events including this tag will be processed."}]}}},"legato":{"rawObject":{"doc":{"command":{"@name":"legato","@where":"mod","@using":"lua/mod/legato.lua","#":"Performs every note legato. It is also possible to tag single notes.\\nIf a tag is given, only the tagged notes are performed legato.\\n```language=Werckmeister\\nusing \\"lua/mods/legato.lua\\";\\ntempo: 140;\\ndevice: MyDevice midi 0;\\ninstrumentDef:piano MyDevice _ch=0 _pc=0;\\n[\\ninstrument: piano;\\n{\\n/mod: legato _forTag=leg _amount=100/\\n-- only the `d` will be performed legato.\\nc \\"leg\\"@d e f\\n}\\n]\\n```"},"param":[{"@name":"forTag","@optional":"1","@type":"text","#":"Specifies a tag name. If set only events with this tag name will be affected by the legato mod."},{"@name":"amount","@optional":"1","@type":"0..100","#":"The ammount of the legato effect"}]}}},"myArpeggio":{"rawObject":{"doc":{"command":{"@name":"myArpeggio","@where":"mod","@using":"lua/mod/myArpeggio.lua","#":"A simple arpeggio implementation.\\n**Example**\\n```language=Werckmeister\\nusing \\"lua/mods/myArpeggio.lua\\";\\ntempo: 120;\\ndevice: MyDevice midi 0;\\ninstrumentDef: piano MyDevice _ch=0 _pc=0;\\n[\\ninstrument: piano;\\n{\\n/do: myArpeggio/\\n<c e g b>2\\n/do: myArpeggio _direction=down/\\n<c eb g bb>2\\n}\\n]\\n```"},"param":[{"@name":"style","@optional":"1","@type":"[normal,legato]","#":"Performs the arpeggio normal or legato"},{"@name":"direction","@optional":"1","@type":"[up,down]","#":"the direction of the arpeggio. (Default=up)"}]}}},"staccato":{"rawObject":{"doc":{"command":{"@name":"staccato","@where":"mod","@using":"lua/mod/staccato.lua","#":"Performs every note staccato. It is also possible to tag single notes.\\nIf a tag is given, only the tagged notes are performed staccato.\\n```language=Werckmeister\\nusing \\"lua/mods/staccato.lua\\";\\ntempo: 140;\\ndevice: MyDevice midi 0;\\ninstrumentDef:piano MyDevice _ch=0 _pc=0;\\n[\\ninstrument: piano;\\n{\\n/mod: staccato _forTag=stac _amount=100/\\n-- only the `d` will be performed staccato.\\nc \\"stac\\"@d e f\\n}\\n]\\n```"},"param":[{"@name":"forTag","@optional":"1","@type":"text","#":"Specifies a tag name. If set only events with this tag name will be affected by the staccato mod."},{"@name":"amount","@optional":"1","@type":"0..100","#":"The ammount of the staccato effect"}]}}},"swing":{"rawObject":{"doc":{"command":{"@name":"swing","@where":"mod","@using":"lua/mod/swing.lua","#":"Performs a swing groove.\\n```language=Werckmeister\\nusing \\"lua/mods/swing.lua\\";\\ntempo: 120;\\ndevice: MyDevice midi 0;\\ninstrumentDef: piano MyDevice _ch=0 _pc=0;\\n[\\ninstrument: piano;\\n{\\n/mod: swing/\\nc8 c c c c c c c\\n}\\n]\\n```"},"param":[{"@name":"grid","@optional":"1","@type":"[8, 16]","#":"Performs the swing offset either on 8th or 16th. (Default=8)"},{"@name":"offset","@optional":"1","@type":"0..100","#":"The ammount of the swing offset"}]}}},"guitar":{"rawObject":{"doc":{"command":{"@name":"guitar","@where":"voicingStrategy","@using":"lua/voicings/guitar.lua","#":"Tries to simulate the chord voicing of an guitar.\\n```language=Werckmeister\\nusing \\"/lua/voicings/guitar.lua\\";\\nusing \\"/chords/default.chords\\";\\ntempo: 120;\\ndevice: MyDevice midi 0;\\ninstrumentDef:piano MyDevice _ch=0 _pc=0;\\n[\\ntype: template;\\nname: myTemplate;\\ninstrument: piano;\\n{\\n/voicingStrategy: guitar/\\n<I II III IV V VI VII>1\\n}\\n]\\n[\\ntype: accomp;\\n{\\n/template: myTemplate/\\nC | F | G | C |\\n}\\n]\\n```"},"param":{"@name":"range","@optional":"1","@type":"[contrabass,bass,baritone,tenor,alto,mezzosoprano,soprano]","#":"If given the strategy tries to keeps the range by shifting the octave of the chord."}}}},"inversion":{"rawObject":{"doc":{"command":{"@name":"inversion","@where":"voicingStrategy","@using":"lua/voicings/inversion.lua","#":"creates an inversion by moving the lowest note an octave hihgher.\\n```language=Werckmeister\\nusing \\"/lua/voicings/inversion.lua\\";\\nusing \\"/chords/default.chords\\";\\ntempo: 120;\\ndevice: MyDevice midi 0;\\ninstrumentDef:piano MyDevice _ch=0 _pc=0;\\n[\\ntype: template;\\nname: myTemplate;\\ninstrument: piano;\\n{\\n/voicingStrategy: inversion/\\n<I II III IV V VI VII>1\\n}\\n]\\n[\\ntype: accomp;\\n{\\n/template: myTemplate/\\nC | F | G | C |\\n}\\n]\\n```"},"param":[{"@name":"level","@optional":"1","@type":"number","#":"level of inversion"},{"@name":"range","@optional":"1","@type":"[contrabass,bass,baritone,tenor,alto,mezzosoprano,soprano]","#":"If given the strategy tries to keeps the range by shifting the octave of the chord."}]}}},"simple":{"rawObject":{"doc":{"command":{"@name":"simple","@where":"voicingStrategy","@using":"lua/voicings/simple.lua","#":"The simple approach with no strategy.\\n```language=Werckmeister\\nusing \\"/lua/voicings/simple.lua\\";\\nusing \\"/chords/default.chords\\";\\ntempo: 120;\\ndevice: MyDevice midi 0;\\ninstrumentDef:piano MyDevice _ch=0 _pc=0;\\n[\\ntype: template;\\nname: myTemplate;\\ninstrument: piano;\\n{\\n/voicingStrategy: simple/\\n<I II III IV V VI VII>1\\n}\\n]\\n[\\ntype: accomp;\\n{\\n/template: myTemplate/\\nC | F | G | C |\\n}\\n]\\n```"},"param":{"@name":"range","@optional":"1","@type":"[contrabass,bass,baritone,tenor,alto,mezzosoprano,soprano]","#":"If given the strategy tries to keeps the range by shifting the octave of the chord."}}}},"voicelead":{"rawObject":{"doc":{"command":{"@name":"voicelead","@where":"voicingStrategy","@using":"lua/voicings/voicelead.lua","#":"Tries to simulates a voice leading approach:\\nthe octaves of a chord are rearranged, so that the actual pitch distance between the previous chord is kept minimal.\\n```language=Werckmeister\\nusing \\"/lua/voicings/voicelead.lua\\";\\nusing \\"/chords/default.chords\\";\\ntempo: 120;\\ndevice: MyDevice midi 0;\\ninstrumentDef:piano MyDevice _ch=0 _pc=0;\\n[\\ntype: template;\\nname: myTemplate;\\ninstrument: piano;\\n{\\n/voicingStrategy: voicelead/\\n<I II III IV V VI VII>1\\n}\\n]\\n[\\ntype: accomp;\\n{\\n/template: myTemplate/\\nC | F | G | C |\\n}\\n]\\n```"},"param":{"@name":"range","@optional":"1","@type":"[contrabass,bass,baritone,tenor,alto,mezzosoprano,soprano]","#":"If given the strategy tries to keeps the range by shifting the octave of the chord."}}}}}',a=e.parseCommandDbJson(t);function o(){return a}exports.getAutoHintDb=o;var i=JSON.parse('{"/":[{"name":"chords","isDirectory":true},{"name":"lua","isDirectory":true},{"name":"pitchmaps","isDirectory":true},{"name":"templates","isDirectory":true}],"/chords":[{"name":"default.chords"}],"/lua/com":[{"name":"com.lua"},{"name":"globals.lua"},{"name":"inspect.lua"},{"name":"tests.lua"}],"/lua/devices/integra7":[{"name":"i7mfxparam.lua"},{"name":"i7mfxtype.lua"},{"name":"i7parameter.lua"},{"name":"i7sntcmod.lua"}],"/lua/devices":[{"name":"integra7","isDirectory":true}],"/lua/mods":[{"name":"drumRudiments.lua"},{"name":"guitarStroke.lua"},{"name":"legato.lua"},{"name":"myArpeggio.lua"},{"name":"staccato.lua"},{"name":"swing.lua"}],"/lua/voicings":[{"name":"com.lua"},{"name":"guitar.lua"},{"name":"inversion.lua"},{"name":"simple.lua"},{"name":"voicelead.lua"}],"/lua":[{"name":"com","isDirectory":true},{"name":"devices","isDirectory":true},{"name":"mods","isDirectory":true},{"name":"voicings","isDirectory":true}],"/pitchmaps":[{"name":"battery3.tight.pitchmap"},{"name":"defaultMIDI.pitchmap"},{"name":"defaultMidiDrumMap.pitchmap"}],"/templates":[{"name":"bass.blues.template"},{"name":"bass.bossanova.template"},{"name":"bass.country.template"},{"name":"bass.disco.template"},{"name":"bass.jazzSwing.template"},{"name":"bass.reggae.template"},{"name":"bass.soca.template"},{"name":"bossanova.template"},{"name":"countryschlager1.template"},{"name":"drums.bossanova.template"},{"name":"drums.country.template"},{"name":"drums.disco.template"},{"name":"drums.jazzSwing.template"},{"name":"drums.purdie.template"},{"name":"drums.reggae.template"},{"name":"drums.soca.template"},{"name":"ennio.template"},{"name":"guitar.bossanova.template"},{"name":"guitar.country.template"},{"name":"rhythm.bossanova.template"},{"name":"rhythm.country.template"},{"name":"rhythm.jazzSwing.template"},{"name":"rhythm.reggae.template"}]}');function r(){return i}exports.getPreInstalledAuxFiles=r;
9
9
  },{"./parser/docParser":"ol4r","fs":"f88W"}],"yh9p":[function(require,module,exports) {
10
10
  "use strict";exports.byteLength=u,exports.toByteArray=i,exports.fromByteArray=d;for(var r=[],t=[],e="undefined"!=typeof Uint8Array?Uint8Array:Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,a=n.length;o<a;++o)r[o]=n[o],t[n.charCodeAt(o)]=o;function h(r){var t=r.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var e=r.indexOf("=");return-1===e&&(e=t),[e,e===t?0:4-e%4]}function u(r){var t=h(r),e=t[0],n=t[1];return 3*(e+n)/4-n}function c(r,t,e){return 3*(t+e)/4-e}function i(r){var n,o,a=h(r),u=a[0],i=a[1],f=new e(c(r,u,i)),A=0,d=i>0?u-4:u;for(o=0;o<d;o+=4)n=t[r.charCodeAt(o)]<<18|t[r.charCodeAt(o+1)]<<12|t[r.charCodeAt(o+2)]<<6|t[r.charCodeAt(o+3)],f[A++]=n>>16&255,f[A++]=n>>8&255,f[A++]=255&n;return 2===i&&(n=t[r.charCodeAt(o)]<<2|t[r.charCodeAt(o+1)]>>4,f[A++]=255&n),1===i&&(n=t[r.charCodeAt(o)]<<10|t[r.charCodeAt(o+1)]<<4|t[r.charCodeAt(o+2)]>>2,f[A++]=n>>8&255,f[A++]=255&n),f}function f(t){return r[t>>18&63]+r[t>>12&63]+r[t>>6&63]+r[63&t]}function A(r,t,e){for(var n,o=[],a=t;a<e;a+=3)n=(r[a]<<16&16711680)+(r[a+1]<<8&65280)+(255&r[a+2]),o.push(f(n));return o.join("")}function d(t){for(var e,n=t.length,o=n%3,a=[],h=0,u=n-o;h<u;h+=16383)a.push(A(t,h,h+16383>u?u:h+16383));return 1===o?(e=t[n-1],a.push(r[e>>2]+r[e<<4&63]+"==")):2===o&&(e=(t[n-2]<<8)+t[n-1],a.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"=")),a.join("")}t["-".charCodeAt(0)]=62,t["_".charCodeAt(0)]=63;
11
11
  },{}],"JgNJ":[function(require,module,exports) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@werckmeister/language-features",
3
- "version": "1.0.0-73",
3
+ "version": "1.0.0-76",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {