VexFlow 3 - A JavaScript library for rendering music notation and guitar tablature.

Related tags

Video/Audio vexflow
Overview

VexFlow 3

A JavaScript library for rendering music notation. Copyright (c) 2010 Mohit Muthanna Cheppudira

Sponsor this Project

If you use VexFlow in your app, startup, institution, and find it useful, please consider sponsoring its development here: https://github.com/sponsors/0xfe.

Need Help? Ask on the Vexflow Google Group.

What is VexFlow?

VexFlow is an open-source web-based music notation rendering API. It is written completely in JavaScript, and runs right in the browser. VexFlow supports HTML5 Canvas and SVG, and runs on all modern browsers.

Go try out The VexFlow Tutorial to learn how to use VexFlow. Also learn to use the simpler EasyScore API in the Using EasyScore guide.

Quick Start

Using NPM

$ npm install vexflow

Using the HTML script Tag

The releases are served via unpkg.com.

Using EasyScore

The EasyScore API is a quick way to create simple music notation in VexFlow. See running example in this jsfiddle.

import Vex from 'vexflow';

const vf = new Vex.Flow.Factory({
  renderer: {elementId: 'boo', width: 500, height: 200}
});

const score = vf.EasyScore();
const system = vf.System();

system.addStave({
  voices: [
    score.voice(score.notes('C#5/q, B4, A4, G#4', {stem: 'up'})),
    score.voice(score.notes('C#4/h, C#4', {stem: 'down'}))
  ]
}).addClef('treble').addTimeSignature('4/4');

vf.draw();

Learn more about EasyScore at: Using EasyScore.

Using the Native API

The example code below renders a VexFlow stave using SVG. See running example in this jsfiddle.

import Vex from 'vexflow';

const VF = Vex.Flow;

// Create an SVG renderer and attach it to the DIV element named "vf".
const div = document.getElementById("vf")
const renderer = new VF.Renderer(div, VF.Renderer.Backends.SVG);

// Configure the rendering context.
renderer.resize(500, 500);
const context = renderer.getContext();
context.setFont("Arial", 10, "").setBackgroundFillStyle("#eed");

// Create a stave of width 400 at position 10, 40 on the canvas.
const stave = new VF.Stave(10, 40, 400);

// Add a clef and time signature.
stave.addClef("treble").addTimeSignature("4/4");

// Connect it to the rendering context and draw!
stave.setContext(context).draw();

Resources

To learn and contribute, check out the VexFlow Wiki.

To build VexFlow from scratch, read the Build Instructions.

Sponsor Vexflow: https://github.com/sponsors/0xfe

MIT License

Copyright (c) Mohit Muthanna Cheppudira 2010
0xFE [email protected] http://www.vexflow.com

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Links

Comments
  • Add support for all quarter tone accidentals

    Add support for all quarter tone accidentals

    Please consider adding support for quarter tone accidentals.

    These include the Western notation for half-sharp, half-flat, sharp-and-a-half and flat-and-a-half, all of which are explained on https://en.wikipedia.org/wiki/Accidental_%28music%29#Microtonal_notation (and a picture us also available).

    These also include the Iranian notation for half-sharp and half-flat, which are depicted in Persian Wikipedia's pages on sori and koron, respectively.

    Ideally, a different identifier should be used for the western and eastern half-notes, so they can coexist in the same sheet if need be. An example of when this is needed is when sheet music is being written for many instruments (as is used by conductors) some of which are oriental instruments and some western instruments but all can play quarter tones.

    -- UPDATE --

    As shown below, vexflow already supports the Western quarter tone accidentals. There is need for support of Iranian accidentals though.

    feature request 
    opened by Huji 93
  • Use with React / React-native?

    Use with React / React-native?

    Hi there,

    Is it possible to use vexflow with react (react-native) at all? I've used this library before for a phonegap based app but switching to react and would love to keep using this one!

    Cheers david

    question discussion 
    opened by davidfloegel 70
  • Migrate vexflow sources to Typescript

    Migrate vexflow sources to Typescript

    I migrated all the sources to Typescript. Only tests have to be migrated someday as well. I did not migrate the tests, because it would had made the PR even bigger and more complicated to review.

    Tests are all green, but since a huge amount of files were affected would be nice if you could review and find mistakes.

    This is a contribution to the https://github.com/0xfe/vexflow/issues/780 issue.

    • [x] Seamless for existing users. This migration utilises Vex.Flow namespace in index.ts - so it is should be backwards compatible.
    • [x] Use eslint also for ts files
    • [x] Check that there are no existing use cases or workflows that will break by moving to TS.
    • [ ] Review the TS codebase.
    • [x] Check that you can import the typescript classes in javascript without using the minified build.
    typescript 
    opened by wassertim 67
  • 4.0.0

    4.0.0

    I'm going to open the discussion as a GitHub issue. When we ship it, we can close this issue and celebrate. :-)

    ~~I started a kanban here.~~ Edit: a trello style project board is probably too much overhead since we only have a few collaborators. I put up a wiki page instead: https://github.com/0xfe/vexflow/wiki/TODOs-for-4.0.0

    Myke started a thread on the vexflow mailing list. We can monitor it for any replies: https://groups.google.com/g/vexflow/c/e61nXKB-dKo

    Please list your "must-haves" and also "nice-to-haves" below. The rest can be punted to version 4.1.0, or version 5.0.0. We can re-organize any items if necessary on the project board: https://github.com/0xfe/vexflow/projects/4

    discussion release 4.0 
    opened by ronyeh 54
  • VexFlow should be able to

    VexFlow should be able to "plug-in" alternate fonts.

    A good start would be the lilypond font or SMUFL.

    This means:

    1. Factoring out direct references to Gonville font indexes (e.g., "v51", "v7b", etc.) and putting them in a separate table (e.g., "closed_head": "v51", "16th_rest": "v8a", etc.).

    2. The table must include all parameters related to the glyphs, e.g., scale, grace_note_scale, x_shift, y_shift, etc, bounding_box, etc.

    3. The Glyph renderer should be able to render different JSON font formats.

    feature request 
    opened by 0xfe 48
  • Vexflow Typescript File by File Migration

    Vexflow Typescript File by File Migration

    After @wassertim and @rvilarl had a discussion we propose to migrate to typescript file by file, providing support for js and ts simultaneously.

    First PR will contain infrastructure for ts and eslint.

    And then we will create many PRs with ts files substituting js files.

    @0xfe

    typescript 
    opened by wassertim 43
  • JoinVoices / Formatter not aligning voices correctly on 3.0.9

    JoinVoices / Formatter not aligning voices correctly on 3.0.9

    Using native code in 1.2.93 I get a correct alignment between the voices image

    However in 3.0.9 I get it worng image

    The code is available in https://jsfiddle.net/zg95n0du/

    opened by rvilarl 43
  • `preCalculateMinTotalWidth` is returning a value that is too low on some cases.

    `preCalculateMinTotalWidth` is returning a value that is too low on some cases.

    Yes, preCalculateMinTotalWidth is still wrong, that should be separate issue...

    Originally posted by @0xfe in https://github.com/0xfe/vexflow/issues/839#issuecomment-792349714

    opened by rvilarl 42
  • support component and browserify with minor refactor

    support component and browserify with minor refactor

    And there are also some other cool features besides:

    • managing all dependencie via a manifest (component.json) with semver
      • jquery
      • qunit
      • raphael
    • no more embedding several files into any HTML page
    • vexflow can be installed and be used as a module with component and npm/browserify
    opened by timaschew 39
  • Gonville glyphs generated from remap only SMuFL

    Gonville glyphs generated from remap only SMuFL

    @ronyeh I made a SMuFL version only remapping the glyphs to the SMuFL locations.

    Mission impossible to get no visual differences, the glyphs in tools/fonts/other/gonville.ts differ to the ones in Gonville-18_20200703.otf.

    I suggest to accept this differences otherwise we will not manage to get to use a SMuFL version.

    opened by rvilarl 37
  • Fonts

    Fonts

    Current Info

    Please merge these sub PRs next:

    • https://github.com/0xfe/vexflow/pull/1210
    • https://github.com/0xfe/vexflow/pull/1216
    • ...more font related sub PRs to come...

    Already Merged:

    • https://github.com/0xfe/vexflow/pull/1201
    • https://github.com/0xfe/vexflow/pull/1202
    • https://github.com/0xfe/vexflow/pull/1205
    • https://github.com/0xfe/vexflow/pull/1206
    • https://github.com/0xfe/vexflow/pull/1212

    Original Post

    This is the final improvement that I'd like to get merged into the 4.0 release.

    The high level goal is to consolidate the way we handle text fonts (e.g., Arial, Times, sans-serif), and follow CSS conventions wherever possible.

    Before

    • Inconsistent handling of text fonts. Each class had its own font property. setFont() was declared in 11 classes with 3 different method signatures. 1 class allowed direct access to the font property.

    After

    • setFont() is implemented in 4 classes: Element, ChordSymbol (overrides Element), CanvasContext, SVGContext.
    • All setFont() methods now have identical method signature.

    Before

    • protected font: FontInfo; was declared 16 times. 10 of those classes did not provide a setFont() accessor.
    • The default text font was set in multiple ways.

    After

    • Moved the declaration up to the Element class. Now it is declared once: protected font?: Required<FontInfo>;
    • Each subclass of Element declares its own static TEXT_FONT property, along the lines of:
      static TEXT_FONT: Required<FontInfo> = {
        family: 'Arial',
        size: 10,
        weight: 'normal',
        style: 'normal',
      };
    
    • In the constructor, we call this.setFont(this.getDefaultFont());.

    Before

    • In SVGContext, the weight parameter handled both bold and italic. In CSS, italic is specified by font-style instead of font-weight.

    After

    • Support weight and style as separate arguments (both default to 'normal', like in CSS).
    • Robust support for setting the context.font to a CSS font string (e.g., 'italic bold 1.5em Arial, sans-serif'). Make use of a hidden <span> element to parse arbitrary CSS font strings.

    Before

    • Possible naming confusion for developers new to VexFlow. Element has a getFontStack() method, but those fonts are not for rendering text.

    After

    • Improve naming to more clearly separate music fonts (Bravura, Petaluma, Gonville) from text fonts (Arial, Times New Roman, Roboto Slab).
    • Element now has setMusicFontStack() / getMusicFontStack() vs setFont() / getFont().
    • DEFAULT_FONT_STACK has been renamed to MUSIC_FONT_STACK. No need for the DEFAULT_ prefix.

    Coming soon

    • More tests, tests, tests.
    • List breaking changes in the CHANGELOG.
    • ~~Review visual changes, which mostly come from changes to the default sans-serif font. I added Helvetica Neue to the sans-serif text font stack, which should only affect macOS / iOS. Designers seem to prefer this font for macOS over Arial.~~ Edit: I am abandoning Helvetica Neue for now. It looks too thin in the PNG visual tests. Will revisit for 4.1.
    static SANS_SERIF: string = 'Helvetica Neue, Arial, sans-serif';
    static SERIF: string = 'Times New Roman, Times, serif';
    

    ~~## Future Work~~ ~~- There is a TextFont class that is for using custom fonts loaded with @font-face. We need to make it clearer how to integrate web fonts into VexFlow. Additionally, the test cases that use TextFont on a CanvasContext are buggy (e.g., ChordSymbol). This is because the web font needs to be fully loaded before we draw to the canvas.~~

    EDIT: After a discussion below with Aaron, I ended up revamping the TextFont class by 1) moving generic Font methods into the Font class and 2) moving the formatting code into a new TextFormatter class.

    4.0 
    opened by ronyeh 37
  • How to position measure number?

    How to position measure number?

    Discussed in https://github.com/0xfe/vexflow/discussions/1493

    Originally posted by ego-lay-atman-bay December 17, 2022 How do I position the measure numbers? I don't want the numbers to be directly above the barline.

    4.x 
    opened by rvilarl 0
  • Visual Regression tests doc issues

    Visual Regression tests doc issues

    Issue on: https://github.com/0xfe/vexflow/wiki/Visual-Regression-Tests

    There does not seem to be an 'npm run generate' command -- there are however various gruntfile commands. Not sure the exact best order to run.

    maintenance 
    opened by mscuthbert 0
  • Unison noteheads too aggressive

    Unison noteheads too aggressive

    (Vexflow 4 regression)

    VF4 (3?) allows for StaveNotes in different voices to be formatted so that they can share noteheads in certain cases in the great #1263 PR. I've noticed however that the algorithm is somewhat too aggressive. I've just been looking at the two-voice code so far.

    It checks for stemmed vs unstemmed, notes vs rests, white noteheads vs black, number of dots, but there are a number of things that are not yet working that I think needs a partial rewrite (started in "fix_unison_noteheads" branch).

    (1) start with a conservative approach: assume notes with any overlap cannot be at the same xShift unless proven innocent. :-) That's the biggest change that seems to be the major change here.

    (2) the method of counting number of Dot modifiers on each note and seeing if they are equal is not robust enough. Here a two-note chord (F-C) with one dot on each note is merged with a single double-dotted C.

    Screenshot 2022-12-28 at 16 29 50

    (3) different notehead glyphs except for white vs. black noteheads are not taken into account. Harmonics must be shifted from regular notes, etc. (whole notes and breves seem to work great except that the shorter note should be the one shifted right):

    Screenshot 2022-12-28 at 16 47 27

    (4) noteheads with different styles (colors, etc.) should not share the same notehead.

    (5) (very important): notes with different accidentals should never share a notehead unless either both accidentals are displayed and the notes are the exact same duration/lyrics/instrument/etc. (so it doesn't matter which accidental goes with which note).

    Gould 55-60 shows how many cases are ambiguous. Thus one of the most important things we can do is have a system where these formatter rules can be turned on and off (on a per note and system-wide setting). Probably my first PR will just be to add a way of disabling the unison notehead setting.

    When it's done right, sharing a notehead is very cool, so super thankful for OSMD and @rvilarl for implementing; but it's never absolutely necessary, so I wonder if we can walk back a little bit on this until bugs are worked out a bit more.

    (note that rules for notehead sharing are very different for keyboard/harp music; there noteheads are shared more aggressively. See Gould 307-8; but this is given as an exception not the general rule)

    Thanks!

    opened by mscuthbert 4
  • Allow font attributes to be ignored in SVG context

    Allow font attributes to be ignored in SVG context

    (Continuing with things in 4 that are regressions in my use cases)

    Currently the font-family, font-size, etc. attributes for the <svg> object can be specified in the Font.SANS_SERIF, etc. properties, but there are a number of things that were possible in Vexflow 1.2 that are not possible now.

    1. specifying a serif font to be used by default without changing the value of Font.SANS_SERIF -- that's possible, but has significant conceptual problems.
    2. specifying that font-size should be measured in something other than 'pt' -- most of my sites specify everything as either rem or % -- hardcoding a point size doesn't really work for me.
    3. not having any "font-family" etc. attribute appear on the <svg> object so that it can inherit style/family from the surrounding object. -- ATTRIBUTES_TO_IGNORE is not exported in svgcontext so it's not possible to set svg: {'font-family': true}
    4. initial .state is set according to the defaultFontAttributes found in the constructor, so that even if one creates the SVGContext and calls SVG object and then immediately removes the attributes from the <svg> object.
    5. There isn't a way to give an already created SVG object to SVGContext which might solve the problem.

    Thanks! These might be unusual cases, but it's helpful for things like putting input boxes at the proper location next to a note to use the <foreign-object> tag within an SVG, but then they are inheriting all of the default SVG attributes

    opened by mscuthbert 2
  • Too much space after percussion clef

    Too much space after percussion clef

    In the default font set on Vexflow 4.1, there is much too much space after the percussion clef and before the key/time signature compared to 1.2.9, looking a bit like something is meant to go there and is missing:

    Screenshot 2022-12-27 at 14 17 09

    Just doing a lot of visual regression testing -- 95% are improvements or at least a matter of taste. Will be flagging the things that I think are a step backwards.

    4.x 
    opened by mscuthbert 5
Releases(4.2.0-beta.0)
  • 4.2.0-beta.0(Dec 23, 2022)

    • Update documents from recent PRs. (287a4f97)
    • Merge pull request #1495 from rvilarl/feature/glypharticulation (bd95a23f)
    • Merge pull request #1486 from rvilarl/refactor/metrics (f6341103)
    • glyph code support in Articulations (b2e195e0)
    • fermataVeryShort glyph added (91c8f4a0)
    • glypharticulation support (d8727178)
    • Merge pull request #1497 from rvilarl/glyphsDecimals (678fc832)
    • regenerate glyphs (eb763fe0)
    • Remove build/ after releasing version 4.2.0-alpha.0 to npm and GitHub. (5d12048b)
    • clef metrics (710c701b)
    • stroke metrics (d574c907)
    • tuplet metrics (94e1eb9a)
    • notehead metrics (0e4cdb9d)
    • ornament metrics (4d2df704)
    • chordsymbol metrics (ca390da5)
    Source code(tar.gz)
    Source code(zip)
  • 4.2.0-alpha.0(Dec 16, 2022)

    • Merge pull request #1480 from rvilarl/font/gonvilleSmufl_1 (d48f7491)
    • Merge pull request #1490 from ronyeh/compare-images (35170273)
    • Improve compare tool with more UI improvements to help with generating GIFs for reviewing PRs. (08191aad)
    • gonville scaled (0fb14ef7)
    • Update docs/api/ from recent PR merges. (86b8240d)
    • Gonville glyphs generated from remap only SMuFL (ddd0e848)
    • Merge pull request #1484 from ronyeh/compare-images (cfe6cb8d)
    • Add test images. (b369ee93)
    • Update image compare tool. (8abdadfc)
    • Add some comments. (8c29e037)
    • Show images side by side, or overlaid on top of each other. (2c4f8f8e)
    • Image comparison tool so we can more easily review visual diffs between current and reference builds. (a0b04e96)
    • Merge pull request #1487 from rvilarl/refactor/metricsStep (3e136294)
    • stringnumber metrics (63998d22)
    • Fix build errors. (b97e75b6)
    • Allow developers to use https://pnpm.io/ without having to check in the lock file. (27f3652c)
    • Merge pull request #1482 from rvilarl/fix/clefCodeAndTempoNotes (9f964a49)
    • review comments (9eccfef4)
    • binary visual regression, no threshold (bdec66a0)
    • fix tempo notes (666aa084)
    • fix percussion clef code (f4da8d6f)
    • Remove build/ after releasing version 4.1.0 to npm and GitHub. (7067aefe)
    Source code(tar.gz)
    Source code(zip)
  • 4.1.0(Dec 2, 2022)

  • 4.1.0-rc.0(Nov 30, 2022)

    • Update docs/api due to recent PR merges. (d9255826)
    • Update demo to include Leland. (76e0dd03)
    • Merge pull request #1478 from rvilarl/refactor/noteheads1 (988daa6f)
    • review comments (cbfaeb43)
    • Update demos to include the Leland font. (260b5d4c)
    • fix rebase (e573a3a1)
    • review comments (62f93eb5)
    • leger -> ledger (6973518a)
    • clefnote inherits from glyphnote (34bc4c86)
    • glyphProps/glyph refactored (f477db20)
    • refactor any (c58b2e92)
    • Merge pull request #1477 from rvilarl/fix/1415 (3753602e)
    • custom noteheads refactored (dc31a13d)
    • Remove build/ after releasing version 4.1.0-beta.0 to npm and GitHub. (bcf0f48b)
    Source code(tar.gz)
    Source code(zip)
  • 4.1.0-beta.0(Nov 20, 2022)

    • Add generated docs before releasing the beta. (77739c56)
    • Merge pull request #1473 from AaronDavidNewman/vex-1459-2 (f1aa8ad7)
    • fix pitch-sorting (5a56691e)
    • Merge pull request #1472 from rvilarl/rename/metrics (77ad0ff0)
    • Merge pull request #1471 from AaronDavidNewman/vex-1459-2 (b51ed600)
    • single quotes (1f72cac9)
    • rename js to ts (ead03e0f)
    • Same bug in ChordSymbol (90720646)
    • issue 1469 (e5da437c)
    • Merge pull request #1468 from AaronDavidNewman/vex-1459-2 (e2665fc4)
    • annotations stack up more tightly, only padding between them. (33bc6b5f)
    • add default metrics and more TextFormatter test cases (a779bfba)
    • annotation: get actual y of string not max. (03734e8d)
    • Annotation and stavesection use text formatter. (3aba7e8d)
    • Merge pull request #1462 from AaronDavidNewman/vex-1459-1 (939d5c52)
    • Merge pull request #1453 from rvilarl/fix/1452 (648d4780)
    • Use flag metrics to get the width of the flag. (5e1903e6)
    • Merge pull request #1460 from rvilarl/fix/1458a (68972a1b)
    • Merge pull request #1457 from rvilarl/fix/1451 (7ba15462)
    • Make stavetempo use text formatter and not getBBox (21673fec)
    • move rounding to SVGContext (5470032f)
    • styles refactored to consider groups (1683e3ac)
    • Merge pull request #1456 from rvilarl/refactor/applystyle (443cf221)
    • Merge pull request #1434 from rvilarl/refactor/system3 (6792351b)
    • fix applyStyle calls location (e42cc719)
    • Merge pull request #1444 from rvilarl/fix/1443 (c73a0b20)
    • Merge pull request #1455 from rvilarl/fix/1454 (70e17612)
    • resolve Canvas2D warning (68e33d46)
    • include Gonville noteheadCircleX (ce43b325)
    • remove reassignment of fillStyle and strokeStyle in tests (de50adc2)
    • Add API docs produced by 'grunt'. (cd223862)
    • Remove build/ after releasing version 4.1.0-alpha.0 to npm and GitHub. (3bf7a87f)
    • refactor Element.attrs as map of strings (547d24ae)
    • minimal crossbeam support (95370b3d)
    • add cross-stave test case file, and some test cases (7b96443e)
    • add cross stave support (44477ebd)
    Source code(tar.gz)
    Source code(zip)
  • 4.1.0-alpha.0(Oct 10, 2022)

    • FIX: dynamic import of release-it. (847bc901)
    • Merge pull request #1448 from rvilarl/fix/style (15a963f0)
    • minor style fixes (0ef282d8)
    • Merge pull request #1446 from rvilarl/fix/1445 (f208afaf)
    • standardize openGroup (a395f1aa)
    • Merge pull request #1441 from ronyeh/release-it (f67c1ac3)
    • New version of release-it can only be dynamically imported. It does not work with require(...). (85ede874)
    • Remove parse-path+4.0.3.patch file, as it is no longer needed. (183be951)
    • Bump release-it to 15.4.2. This version does not require our patch. (b657ad93)
    • Remove patch-package since we no longer need to patch release-it. (606f6053)
    • Merge pull request #1440 from rvilarl/fix/1439 (bded0177)
    • fix svg arc (f01e0ba6)
    • fix colon in tuplets and dot in debug bars (8d1fbc7b)
    • add element to tabnote object, and id to tabnote DOM (7fb9554a)
    • Merge pull request #1432 from rvilarl/refactor/system2 (c62df9c9)
    • review comments (0586ea55)
    • Merge pull request #1430 from 0xfe/more_getters (473b752f)
    • review comments (8be4003b)
    • review comments (42201dd8)
    • fix postformat in systems with several staves (ba7e3c01)
    • Merge pull request #1428 from rvilarl/refactor/system1 (e39c05d2)
    • add textnote test (14d28a05)
    • Add getters for six attributes (35ae5f54)
    • Complex Beams with Articulations two staves (1d8b405f)
    • Merge pull request #1418 from AaronDavidNewman/restleger-1404 (a31bd017)
    • code review updates (3bfaf48c)
    • only use leger glyph if the rest is outside the staff (dd9e4828)
    • Merge pull request #1419 from rvilarl/glyphsLeland (a7e5c773)
    • leland glyph completed (6e97c5f3)
    • Merge pull request #1417 from rvilarl/fix/705 (b4572a89)
    • Merge pull request #1413 from rvilarl/fix/1412 (279b76b6)
    • Use the rest glyphs with leger lines for whole/half (cd0e0285)
    • notestruct duration is not optional (49d7a92c)
    • eslint autofix. (92d3583a)
    • Merge pull request #1401 from rvilarl/fix/1400 (100d3547)
    • Update docs/api (2fb4108b)
    • Merge pull request #1414 from rvilarl/fix/1377 (41bd5ade)
    • document need to call joinVoices (4c736d56)
    • fix no padding (baae661b)
    • review comments (88cce22e)
    • additional hoteheads supported (05da3f3b)
    • Update package.json (3cfc2f6f)
    • Merge pull request #1406 from ronyeh/master (374dd4c4)
    • FIX entry/vexflow-core.ts by adding Leland font module mapping. (e4e0b4b1)
    • Merge pull request #1395 from rvilarl/fix/1391 (d65d409d)
    • Update docs/api. (c93de0ae)
    • Merge pull request #1396 from rvilarl/fix/1152 (11fc1028)
    • leland only libs (65162263)
    • leland support (9bd66a67)
    • review comment (dadc65fb)
    • Merge pull request #1387 from rvilarl/refactor/chord (aba6a27a)
    • SVG_DECIMAL_PRECISION support (b076ab98)
    • review comments (04266014)
    • svg paths with 2 decimals (2d04d475)
    • Merge pull request #1393 from rvilarl/fix/1392 (22e0bcf0)
    • short/long/very long fermata support (e90a9e09)
    • Merge pull request #1390 from rvilarl/fix/1389 (f9f3fefb)
    • Remove build/ after releasing version 4.0.3 to npm and GitHub. (82204759)
    • format beginning stave modifiers (03b99779)
    • review comments (7deb5d7e)
    • chords no longer need to be sorted (39fb7dc9)
    Source code(tar.gz)
    Source code(zip)
  • 4.0.3(May 16, 2022)

    • Update API documentation for new release. (1874642b)
    • Enable changelogs for releases. Add a note about version numbers @x.y.z in the README. (07ea1170)
    • Merge pull request #1385 from rvilarl/fix/1364 (193c21d8)
    • review comments (c22ed9d2)
    • radius now protected (369ee05c)
    • fix stringnumber with radius 0 (ff0f567d)
    • Merge pull request #1388 from rvilarl/fix/1363 (9dd96c72)
    • Merge pull request #1386 from AaronDavidNewman/softmax-default (f8a322d2)
    • Merge pull request #1357 from rvilarl/feat/groupStyle (d4a30a56)
    • use softmax value in TABLES (4386c657)
    • review comments (e0567441)
    • Merge pull request #1 from rvilarl/softmax-default-review (06a1540a)
    • add left padding (ab2f025e)
    • Merge branch 'softmax-default' into softmax-default-review (143826de)
    • review comments (5cf536dd)
    • Remove voice softmax parameter since Formatter sets it (582afa55)
    • Make softmax global default mutable and defined in one place (a53f18ae)
    • Remove voice softmax parameter since Formatter sets it (4a074230)
    • review comments (da383af1)
    • stavenote group style (05465fe4)
    • Merge pull request #1382 from AaronDavidNewman/chord-symbol-width (091a4b82)
    • Merge pull request #1379 from rvilarl/fix/1369 (590d5c26)
    • Make softmax global default mutable and defined in one place (c2462fbd)
    • Merge https://github.com/0xfe/vexflow (f6cfebe7)
    • Remove build/ after releasing version 4.0.2 to npm and GitHub. (f36f47c6)
    • Adjust ornament metrics based on code review comments. (1cbcbc7e)
    • review comments (34aafe0b)
    • exclude hidden notes from formatting (baf1db67)
    • fix chord symbol tests, comments (5ba4559d)
    • remove formatter change, that is wrong (81808b88)
    • fix a formatting issue with the last tick (2f8f2a7a)
    • Merge https://github.com/0xfe/vexflow into chord-symbol-width (b78e73fd)
    • consider note width in chord symbol width (477cb0f6)
    • Merge https://github.com/0xfe/vexflow (350f0e7a)
    • Add softmax text to softmax tests (ddd958e1)
    • Add last note padding test case using softmax (4eb4b438)
    Source code(tar.gz)
    Source code(zip)
  • 4.0.1(Mar 24, 2022)

Owner
Mohit Cheppudira
i am jack's wasted life
Mohit Cheppudira
Music-Player - Music player application built with HTML, CSS and vanilla JavaScript

Music-Player Music player application built with HTML, CSS and vanilla JavaScrip

Karthik Umashankar 1 Feb 10, 2022
A decentralized Music Ownership System developed on Truffle Suite and React Bootstrap to allow Music artists to upload their content to the blockchain, that can be streamed by users

A decentralized Music Ownership System developed on Truffle Suite and React Bootstrap to allow Music artists to upload their content to the blockchain, that can be streamed by users.

M. Adil Fayyaz 10 Sep 5, 2022
I’m a very useful music bot that can make you play a music with a simple command! I have a lot of good commands that you can have a better experience playing your favorites songs!

I’m a very useful music bot that can make you play a music with a simple command! I have a lot of good commands that you can have a better experience playing your favorites songs!

Hugo Kishi 2 Aug 16, 2022
A mobile app for playing music on Resonate, an open source music streaming co-op.

stream2own Play fair. Website | Twitter | Contributing | Developer Guide ?? Resonate Stream App A mobile app for playing music on Resonate, an open so

Peter Klingelhofer 12 Dec 28, 2022
MusicPlayer-Javascript - How to create a custom music player with vanilla javascript

MusicPlayer-Javascript How to create a custom music player with vanilla javascri

Tarokh Mohammadi 1 Feb 8, 2022
JavaScript plugin for playing sounds and music in browsers

JavaScript plugin for playing sounds on user actions and page events. Version: 3.0.7 Project page and demos Download ZIP Support the plugin on GitHub

Denis Ineshin 704 Sep 24, 2022
Discord bot made in javascript to play youtube music.

DJS O DJS é um bot para Discord com a capacidade da criar playlists personalizadas, tendo como fonte a biblioteca de músicas do Youtube. Frameworks e

Matheus Luiz 2 Aug 21, 2022
A self-hosted, completely private and free music streaming server compatible with Synology Audio Station's web browser interface and smartphone apps.

Open Audio Server Open Audio Server is a music streaming server compatible with Audio Station by Synology. Audio Station creates your own private serv

null 91 Dec 11, 2022
A discord bot using @discord.js and mongoose. Used for music, moderation, and entertainment.

hazel A discord bot using @discord.js and mongoose. Used for music, moderation, and entertainment. Features Music ― supporting YouTube, Spotify and So

yushi 27 Dec 31, 2022
🎼 - MusicBridge Recieves MIDI messages and converts them to AppleScript commands to control Apple Music and Spotify for macOS.

MusicBridge MusicBridge Recieves MIDI messages and converts them to AppleScript commands to control Apple Music and Spotify for macOS. Installation Si

null 3 Dec 20, 2022
A multi-purpose discord bot, that has 100+ commands. Includes 🎶 Music, 📷 Image Generation, 📊 Leaderboard, and more!

Cleckzie An open-source, multi-purpose discord bot, made with JavaScript. Has useful categories like: ?? Music - filter, seek, queue, volume and more.

null 42 Jul 2, 2022
Discord.js Music Bot with buttons and slash support!

Music Bot Vote for us! (Please) How to use? Download the repo, create a .env file, and add your token into it. You need to change guildOnly to your gu

Garlic Team 59 Nov 24, 2022
ALi a powerful Discord bot that includes Utility, Fun, Music, Moderation, and much more! (Beta)

ALi ALi a powerful Discord Bot Invite ALi · Report Bug · Request Feature ?? Futures Music Moderation Fun Economy Utility More ?? Installation You can

S Dip 97 Oct 17, 2022
A Discord.js Music Bot, which connects via Lavalink and erela.js

Discord.js Lavalink Music Bot using erela.js A Advance Discord Music Bot Like Hydra Erela.js docs Note this Discord Bot Repository is the Same as for

ᴋᴀʙɪʀ々ꜱɪɴɢʜ 47 Dec 9, 2022
Web Application that represents a music player using the spotify API, React, JS, CSS, HTML, nodeJS, Firebase, material-ui, JSON and other technologies. Made by Yohan Hmaiti

Web Application that represents a music player using the spotify API, React, JS, CSS, HTML, nodeJS, Firebase, material-ui, JSON and other technologies. Made by Yohan Hmaiti

Yohan Hmaiti 2 Jan 8, 2022
Music player made with React and Redux 🚀

Spotipy A modern Web-Based music player made using ReactJS Deployment Spotipy is deployed at Vercel and can be accessed by clicking here Features Clea

Jessej Samuel 35 Jan 3, 2023
An attractive music player using HTML and CSS

Music Player I have made an attractive music player using HTML and CSS. This project was a part of my Coding Ninja Course (Introduction to Web Technol

DHRUV 5 Feb 17, 2022
Tritan is a Discord.js bot that has many general-purpose features such as logging, moderation, image manipulation, music, and much more!

Tritan Bot Tritan Bot is a Discord Verified general purpose bot built with discord.js and express (yes, it has a dashboard included). Please read thro

Dylan J. 0 Jul 3, 2022
Adds links to Discogs pages from various sites. Auto search for music on torrent and other sites. Does multi auto-search on Artist/Discography pages. Auto search local HDDs/filelists using Voidtools Everything search engine.

Discogs Scout: Adds links to Discogs pages from various sites. Auto search for music on torrent and other sites. Does multi auto-search on Artist/Disc

null 27 Dec 27, 2022