HTML5 Music Notation Editor Update

890 views
Skip to first unread message

Cyril

unread,
Oct 28, 2013, 10:26:12 PM10/28/13
to vex...@googlegroups.com
Hey guys, thought I'd drop by an update on the editor that I worked on last year. I took a really long break from working on it, but have recently been working on it again.

Highlights include improved playback, basic MusicXML import/export, more robust part objects (can handle multi-stave parts and multi-voice parts). In the top left corner of the page there is a dropdown where you can select a sample MusicXML score. Use the mouse wheel to scroll through the score. You can also try and import your own  MusicXML file using the form.

A lot of functionality isn't exposed (editing parts, editing properties of existing notes, etc) but this gives you a good idea of the complexity it can handle. I highly encourage you to check out the sample scores. Although, playing some of them on high quality may cause your browser to hate itself. It's highly unoptimized at the moment, and scores with lots of notes will cause a large performance decrease.

I made a blog post that gives a little more detail here: http://www.cyrilsilverman.com/html5-music-notation-editor-update/

Here is the demo:

Timotée Neullas

unread,
Nov 6, 2013, 4:59:34 AM11/6/13
to vex...@googlegroups.com
Hey,

Really cool demo.
How are you doing the sound ?
Audiolet for midi/like and midi.js with nice soundfont for high quality ?
I am experiencing some lag in the player when the music is fast.
I love the undo/redo.

Cyril

unread,
Nov 6, 2013, 2:51:47 PM11/6/13
to vex...@googlegroups.com
Thank you!

That is exactly right Audiolet for low, Midi.js for high. Playback is highly un-optimized at the moment and needs a lot of work to be actually usable for more cases.

Cyril

unread,
Dec 27, 2013, 3:54:33 PM12/27/13
to vex...@googlegroups.com
Minor update if anyone is interested. I implemented some auto-formatting for measures/systems. If you choose a sample score, you'll see that the staffs extend the width of the page. Ultimately I hope to have a "responsive" score that will accommodate all screen sizes. 

In addition, you can scale the score by using [shift + scroll up/down].

Cyril

unread,
Jan 4, 2014, 1:43:55 AM1/4/14
to vex...@googlegroups.com
Another minor update. I've been fiddling with more complex mouse interaction, specifically, mouse dragging. And since quite a few of you have expressed interest in such interaction I thought I'd show it off.

I've implemented the following in the demo 
left-click+drag up/down on a Note: move a note up/down pitch
right-click+drag left/right on a Note: change a note's duration

double clicking on a note deletes note

Demo here (only tested in Chrome): http://cyrilsilverman.com/wip/editor - Go into edit mode using the top toolbar and clicking the "mode" dropdown

In addition to the dragging functionality, I totally revamped my engine's mouse event functionality. Currently the Score now has the ability listen to all types of standard mouse events and will correctly associate it with a target object in the score. So I can create mouse event listeners for objects on the score just like on DOM elements. Ultimately, I hope this will open up the notation engine to be used in more ways than a simple editor, but an extendable engine that could facilitate all sorts of content requiring interactive notation.

Mohit Muthanna Cheppudira

unread,
Jan 4, 2014, 6:07:29 AM1/4/14
to vex...@googlegroups.com
Great progress!


--
--
You received this message because you are subscribed to the Google
Groups "vexflow" group.
To post to this group, send email to vex...@googlegroups.com
To unsubscribe from this group, send email to
vexflow+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/vexflow?hl=en
 
---
You received this message because you are subscribed to the Google Groups "vexflow" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vexflow+u...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.



--
Mohit Muthanna [mohit (at) muthanna (uhuh) com]

Alexander Dorsk

unread,
Jan 4, 2014, 9:13:03 AM1/4/14
to vex...@googlegroups.com
Cool!

The dragging feels quite smooth on chrome. 

It's interesting to compare with NoteFlight's dragging interaction (A "drag race"?), in which the duration/pitch change is all in the left click when you first place a note.

I like how in your editor you can change the duration of an already placed note via dragging.

-Alex


On Sat, Jan 4, 2014 at 1:43 AM, Cyril <silver...@gmail.com> wrote:
--
--
You received this message because you are subscribed to the Google
Groups "vexflow" group.
To post to this group, send email to vex...@googlegroups.com
To unsubscribe from this group, send email to
vexflow+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/vexflow?hl=en
 
---
You received this message because you are subscribed to the Google Groups "vexflow" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vexflow+u...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.



--
---
Want to learn music? We're building an online musical dojo:
---

Cyril

unread,
Jan 24, 2014, 8:24:02 PM1/24/14
to vex...@googlegroups.com
Another update!  Here's what's new:
  • Tied Notes
  • Tab
  • Responsive Systems - Auto formatting to fit to the container
    • If you re-size your window or re-scale the score (shift + mousewheel up/down) the score will reformat to fit
    • Cross-measure ties will break accordingly
I have a couple blog posts that go into slightly more detail. But this mainly covers it. Slowly but surely this is starting to come together.

Nikos M.

unread,
Jan 25, 2014, 11:42:51 AM1/25/14
to vex...@googlegroups.com
Hello Cyrill,

the demo looks good so far,

this was also a project of mine to create an interactive music editor using (parts of) vexflow api
(there was a post on this group about 1-2 years ago) but other things had priority.

Is this open-source, somewhere it can be downloaded?
If not it is ok.

Thanks,
Nikos

Cyril

unread,
Jan 29, 2014, 12:10:14 AM1/29/14
to vex...@googlegroups.com
It's closed source for now. I may eventually open it up but that will be much farther down the line, after I'm satisfied with the codebase and the engine's core features.

john saylor

unread,
Jan 29, 2014, 10:41:04 AM1/29/14
to vex...@googlegroups.com
On 1/29/14, 24:10 , Cyril wrote:
> It's closed source for now. I may eventually open it up but that will be
> much farther down the line, after I'm satisfied with the codebase and
> the engine's core features.

as the developer, you are certainly entitled to do with the code as you
like. and i understand how you may not want to throw your "dirty
laundry" up on the network.

btw, i do not mean to say anything about your code or it's functionality
or it's implementation- i'm speaking more abstractly.

but i would contend that opening it up will only increase the chances
that the codebase will get to a "satisfactory" state. also, it is
possible that someone else will be able to help. maybe unlikely, but
possible.

anyway, good luck however you choose to proceed.

--
\js [http://or8.net/~johns/] : i am alive

YusufSalahAdDin

unread,
Mar 11, 2016, 1:18:22 AM3/11/16
to vexflow
Hi Cyrill, what's about this? I want do something like it, but i don't know how begin, i don't know how to do a toolbar with accidentals, times, etc. Can you help me?

André Bakker

unread,
Apr 1, 2016, 10:49:03 AM4/1/16
to vexflow
Hi Guys,


Some (a loong) time ago, I started developing an music notation editor, and had to stop because my job was consuming all my time.

If you guys want, I can put my code on github. There's still much to be done, but it's better than nothing.

Let me know if you want! =)

Luuk de Waal Malefijt

unread,
Apr 2, 2016, 4:53:15 PM4/2/16
to vex...@googlegroups.com

Hi Andre,

Im definitely interested! :)

Op 1 apr. 2016 16:49 schreef "André Bakker" <arbp...@gmail.com>:
--
--
You received this message because you are subscribed to the Google
Groups "vexflow" group.
To post to this group, send email to vex...@googlegroups.com
To unsubscribe from this group, send email to
vexflow+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/vexflow?hl=en

---
You received this message because you are subscribed to the Google Groups "vexflow" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vexflow+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

André Bakker

unread,
Apr 4, 2016, 9:39:30 AM4/4/16
to vexflow
Ok! Let me just make some minor adjustments, prepare a readme and I'll soon post a link to github!

=)

André Bakker

unread,
Apr 4, 2016, 12:13:26 PM4/4/16
to vexflow
Hello guys!!

I finished the details I wanted, and pushed to github.
The github page:


This page contains a simple demo if anyone likes to see its current state (but there's still much work to be done!).

The github repo:

Well, that's it. I hope you guys like it and are able to contribute.
=)

Michael Scott Cuthbert

unread,
Apr 4, 2016, 3:39:25 PM4/4/16
to vex...@googlegroups.com
Wonderful work!  Congrats.

I wonder if it might make sense to separate out the playback functionality into a separate project (willing to help with that), since it’s something that any VexFlow project can benefit from, regardless of whether it uses the editor here or not.

Thanks for putting this up!

Best,
Myke

André Bakker

unread,
Apr 5, 2016, 7:36:40 AM4/5/16
to vexflow
Thank you Michael! =)

About separating playback funcionality, I think it makes total sense. I just didn't think at the time because I thought other VexFlow players would already be on github and opensource, and I would just switch into using one of them.

If i recall, the playback is mostly on Player.js, which is called by Handler.js (in its "play" function), and uses the "getPlayEvents" functions on VexFlowExtension.js.

Hopefully it won't be too hard (unless I'm missing something, its been so long). As soon as I have some time, I'll try to do it!

Regards!

Dani

unread,
Apr 12, 2016, 12:34:27 PM4/12/16
to vex...@googlegroups.com
Hi to all,

we have also been working in an editor. In our case is focused on lead sheets (monophonic melodies and chord sequence). We have implemented midi and audio players as well as an audio visualizer. Also there are editing funcitonalities for notes, chord symbols and structure, and export to png and pdf functionality among other features. All information is in this link  http://lsdb.flow-machines.com/leadsheetJS

Best,


Mohit Muthanna Cheppudira

unread,
Apr 12, 2016, 1:10:45 PM4/12/16
to vexflow
Hi Dani, Is there any way to try a demo without having to register?

Dani

unread,
Apr 12, 2016, 2:17:19 PM4/12/16
to vex...@googlegroups.com
ups sorry, now it should work.

Best

Mohit Muthanna Cheppudira

unread,
Apr 12, 2016, 2:22:46 PM4/12/16
to vexflow
Very nice! Thanks for sharing. Were there any particular pieces that you had trouble rendering?

Dani

unread,
Apr 12, 2016, 2:31:11 PM4/12/16
to vex...@googlegroups.com
Well yes, the more complex pieces like pieces with many n-tuples, and also those with structure changes. For more information we also published a paper on this library: http://www.csl.sony.fr/bibdetails.php?reference=dani:15a

best

Dani

unread,
Apr 12, 2016, 2:33:23 PM4/12/16
to vex...@googlegroups.com
...but off course, I'll be happy to answer to any question you make.

best

André Bakker

unread,
Apr 17, 2016, 2:25:56 PM4/17/16
to vexflow
Hello Dani!

I really really liked your library! Congrats!!!! It is so much better than mine, lol ;)

Good job =)

Dani

unread,
Apr 25, 2016, 5:08:01 AM4/25/16
to vex...@googlegroups.com
Well, it is in a more advanced developement stage. VexUI looks nice. What I miss most is being able to remove notes.

By the way we have added a commenting feature lsdb.flow-machines.com/leadsheetJS/example_comments
Reply all
Reply to author
Forward
0 new messages