Skip to content

werckme/werckmeister-component

Repository files navigation

🎼 werckmeister-component

A web component which allows you to embed werckmeister snippets on your website.

How to use

snippet

  • include the javascript file
<script src="https://unpkg.com/@werckmeister/components@1.1.6-41/werckmeister-components.js"></script>
  • embed your snippet
<werckmeister-snippet>
<![CDATA[
device: MyDevice  midi _usePort=0;
instrumentDef:lead    _onDevice=MyDevice  _ch=0 _pc=0;

-- a melody track
[
instrument: lead;
{
    c d e f | g a b c
}
]
]]>
</werckmeister-snippet> 

Demo

https://jsfiddle.net/z8qv5b7j/

Options

wm-type

can be either default or single. single means that the input is treated as one singe voice line such as c d e f g. In defaultmode the input has to be a valid werckmeister source.

https://jsfiddle.net/bh4ugc5q/

wm-tempo

Set the tempo of an snippet.

wm-style

Inline css rules to set up the apperance of the snippet. https://jsfiddle.net/zxhgyv2p/

wm-css-url

Set an url of an css file, to override the default css of the snippet. https://jsfiddle.net/m01bzg3f/

wm-soundfont-url

Set the repo url. See Soundfont Server.

wm-workspace-url

Uses a workspace url as source. E.g.: "https://sambag.uber.space/api-wm/conductor16thHighHat"

workspace

Using <werckmeister-workspace> to use several editors (for example in different tabs)


🔌 Step 1: Include the Component Script

Add the Werckmeister Components script to your HTML:

<script src="https://unpkg.com/@werckmeister/components/werckmeister-components.js"></script>

🧱 Step 2: Add a <werckmeister-workspace> and Editor

Define a workspace <werckmeister-editor>. Each editor can contain a werckmeister document.

Example:

<werckmeister-workspace id="workspace"></werckmeister-workspace>

<werckmeister-editor
  id="ed1"
  wm-filename="main.sheet"
  wm-style="height: 700px;"
>
using "chords/default.chords";

tempo: 140;
device: MyDevice webPlayer _useFont="FluidR3-GM";
instrumentDef:lead _onDevice=MyDevice _ch=0 _pc=0;
instrumentDef:rhythm _onDevice=MyDevice _ch=1 _pc=0;
instrumentDef:bass _onDevice=MyDevice _ch=2 _pc=0;

-- melody track
[
instrument: lead;
{
    \p
    r4 e f# g | c'1~ | c'4 d e f# | b2 b2~ |
}
]
</werckmeister-editor>

<a href id="download">Download MIDI</a>

⚙️ Step 3: Register the Editor in JavaScript

Link your editor to the workspace using JavaScript:

const workspace = document.getElementById('workspace');
workspace.registerEditor(document.getElementById('ed1'));

You can also hook into events:

workspace.onError = (ex) => console.log("Error:", ex);
workspace.onCompiled = (doc) => console.log("Compiled successfully:", doc);

🎵 MIDI Export

To trigger MIDI file download:

const downloadEl = document.querySelector("#download");
downloadEl.onclick = (ev) => {
    ev.preventDefault();
    workspace.download("myFile.mid");
}

worskapce Options

wm-css-url

Load a custom CSS file to override the default styling of the editor.

wm-soundfont-url

Set the repo url. See Soundfont Server.

wm-onerror

sets an error callback

Editor options

wm-style

sets the style content to the underlying editor component

wm-css-url

Load a custom CSS file to override the default styling of the editor.

wm-filename

Defines a filename for the editor file. This file is accessable for the compiler.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors