It's far from perfect, but I thought someone here might get a kick out of this.
It's written in CoffeeScript, and uses Raphael.js to draw parts of the Gonville font.
Audio playback is done via Flash, so it may give an error in your browser. I looked into using MIDI.js for playback, but that gave worse results in some browsers.
I've done a few experiments into git-style music collaboration. I'm not convinced that enough people will actually pay for private collaboration, so I've put that on hold, for now.
Side Note: I'm currently looking for remote work. Contact details are in my profile.
I have a (now in maintenance-mode) site at http://eMusicTheory.com that's based on Java applets... but based on the number of subscribing teachers who are contacting me over the past 2 years saying "the school is getting a bunch of iPads, but the drills don't work!", at some point I'm going to have to start migrating to JavaScript.
I have a pretty significant codebase (in Java, for now) representing music theory concepts as objects, which should be pretty simple to convert to JS, but I haven't tried tackling the notation rendering yet at all -- mostly because I've been busy on another project for 2 years now.
Get in touch if you'll be open sourcing this library, or if you have any interest in building JS-based music theory drills; there's certainly a market.
This is a really neat application! It would be really interesting cool for an application like to work with guitar tablature notation. Maybe I have a new project ahead of me?
I think it would also be easier to use purely from the keyboard if there was a way to use the Up and Down keys. I realize that Up and Down will scroll the window - perhaps "CTRL+UP" and "CTRL+DOWN" could move the cursor up and down on the staff? I know some people that are used to applications like Finale Notepad/Sibelius prefer entering notes purely from the keyboard for speed purposes.
We've got standard notation support high on our to-do list. :-)
It's sort of a different product than RiffUp, as Soundslice is all about "reverse engineering" songs and giving you tools to help learn a song, with the philosophy that it's better to learn from a source recording than from sheet music/tab alone.
This is brilliant. I've been working lately on something very similar (using d3 + gonville) so I know how much work must have gone into this.
I'm sure you're aware of how much is left to do, but if I had to offer one criticism for right now it's that getting around is a bit slow. Ctrl+left/right for moving between measures and home/end for each line would be quite helpful.
it will be interesting to see how soundslice and riffup solve the collaboration thing. that's where these tools can differentiate themselves from desktop apps such as transcribe!.
online crowdsourcing tool for reverse engineering of music. nice!
I agree, Noteflight is excellent, and they're making good progress with their new version.
My initial idea was to create something closer to GitHub, but with music notation and guitar tab instead of text files. I'm not sure where I'll take things, at the moment, though.
This is really neato. How "richly-featured" do you plan on making this?
The reason I ask is that it would be really nifty to be able to share or export these tunes. Either via MIDI, or preferably, via another notation format. If they will be fairly simple melodies, ABC might be a great output format, which converts easily into sheet music notation and midi.
Otherwise, you might want something fancy-pants like Sibelius (or whatever people are using nowadays for notation.)
Midi is hardly appropriate or useful for music engraving. It's for controlling a device to output music in the way you want, not for recording how it looks on paper.
Disclaimer: I have no experience with MusicXML. The vast majority of the music I want to notate fits on a single staff, and ABC is brilliant for that -- it's a well-established portable open music format that's easily entered and edited by hand. (Technically speaking it can do multi-staff music as well, but it starts to get a bit over-complicated and hacky at that point, IMO.) http://en.wikipedia.org/wiki/ABC_notation
PS The "Score" example on the ABC notation page is terrible, but it's a limitation of the lousy standard abc2ly translator, not the ABC format. I've got my own abc2ly which does a much better job of it...
I'd consider RiffUp incomplete until it could express the same musical concepts as GuitarPro/Sibelius/Finale. I don't have much interest in purely presentational features, though.
Import/Export is on the TODO list. If there ended up being a custom RiffUp format, it would be open and documented.
Actually, that's not such a crazy idea. Realistically, it would be months or years away, but Hummingbird seems like a valuable teaching language, and it could fit well with some of the other ideas I have.
Nice! One suggestion: up/down keys for changing the selected note(s). Personally, the thing that I've never been satisfied with Sibelius (and others) is that I have to use a mouse way too often to do things that could easily be accomplished with keystrokes. I want notating music to be more fluid, like programming…or playing piano–just pluck away as the ideas come. Good luck, the possibilites here are exciting.
Very cool! I'm a n00b to the music-notation-app-world, but was able to get going pretty quickly. I'm not sure if any of these are already standard features on most music notation apps...but I think keyboard shortcuts to the note/rest types would help. Maybe even an option to eliminate some clicks (just press the key corresponding to the note/rest to place it underneath current cursor position)
Then again, being a n00b, maybe I don't realize that speed-of-input isn't the bottleneck for composers hehe.
This is a step in the right direction. Music notation in the browser is hard. I'm a music composer turned software developer, so of course I have been interested in an open, web-based music notation solution for a long time. Nobody has really hit the nail on the head.
There is just a TON to take into consideration when it comes to music notation, and one misstep will get in the way of the creative process and leave someone hating using your app.
Make sure you're ready for a seriously uphill battle if you continue working on this. It's a good start.
Maybe it sounds silly, but has anyone thought about using D3 to draw the music notation? Just an afterthought.
This is pretty cool. How far do you intend to take it? Here's a "use case"/feature request:
In addition to being a developer/entrepreneur, I moonlight as a high school marching band instructor/arranger. In other words, I'm a semi-professional composer. I work with a team of people who write different aspects of the music: One guy writes the winds, I write the percussion, and others contribute as well.
Currently, whenever one of us has an idea about something to do with whatever we're arranging, we have to either get everyone together in a room with a piano to talk through it, or someone has to sit down with a professional music notation program (we use Finale) and "sketch" it all out.
It would be really cool if there was something online like RiffUp that would let me put together that "sketch" quickly and easily, and send a link to my colleagues. Like a "pastebin" for sheet music.
To get there, it would need to do a few more things, in roughly priority order:
* Allow you to save your creation and send a link to someone else.
* Support "-let" rhythms (triplets, for example)
* Use multiple staves
* Set the tempo
* Allow other time signatures (time changes would be good too)
* Choose a different voice for each staff
The great benefit here would be simple composition without having to worry about all of the stuff associate with making a real score. So much of music notation is about making stuff that prints nicely, which is actually a separate process from just creating the music. And, of course, being able to easily share it with colleagues without requiring them to have the same software I do (or to download a file and open it in that software).
And to answer the followup question that you'll ask: Yes, I'd be willing to pay for this.
Your use case would certainly be supported by the kind of service that I've had in mind. That said, it sounds like Noteflight would already fit your need to share quick musical sketches.
I'm not sure how far I'll take RiffUp. Competing directly against Noteflight/GuitarPro/Sibelius/Finale/... is an option, and there are a few innovations that can be made in that space. That wouldn't be an easy path, though.
I was more excited by the prospect of creating a community based around mass collaboration. The idea that a few notes could be forked to create many distinctly different songs.
For now, finding money to live is the overwhelming priority, so I can't justify spending much time on this. It could be that I pursue things further, later on.
39 comments
[ 4.5 ms ] story [ 102 ms ] threadIt's written in CoffeeScript, and uses Raphael.js to draw parts of the Gonville font.
Audio playback is done via Flash, so it may give an error in your browser. I looked into using MIDI.js for playback, but that gave worse results in some browsers.
I've done a few experiments into git-style music collaboration. I'm not convinced that enough people will actually pay for private collaboration, so I've put that on hold, for now.
Side Note: I'm currently looking for remote work. Contact details are in my profile.
I have a pretty significant codebase (in Java, for now) representing music theory concepts as objects, which should be pretty simple to convert to JS, but I haven't tried tackling the notation rendering yet at all -- mostly because I've been busy on another project for 2 years now.
Get in touch if you'll be open sourcing this library, or if you have any interest in building JS-based music theory drills; there's certainly a market.
I can't get ctrl-click to work because Chrome (Mac) brings up a pop-up context menu only.
I've updated it so that you can use either Ctrl-Click or Shift-Click. Let me know, if you're still having problems.
I think it would also be easier to use purely from the keyboard if there was a way to use the Up and Down keys. I realize that Up and Down will scroll the window - perhaps "CTRL+UP" and "CTRL+DOWN" could move the cursor up and down on the staff? I know some people that are used to applications like Finale Notepad/Sibelius prefer entering notes purely from the keyboard for speed purposes.
I agree, editing purely with the keyboard can be much faster. Holding down Ctrl with the UP and DOWN keys sounds like a good suggestion, too.
We've got standard notation support high on our to-do list. :-)
It's sort of a different product than RiffUp, as Soundslice is all about "reverse engineering" songs and giving you tools to help learn a song, with the philosophy that it's better to learn from a source recording than from sheet music/tab alone.
I'm sure you're aware of how much is left to do, but if I had to offer one criticism for right now it's that getting around is a bit slow. Ctrl+left/right for moving between measures and home/end for each line would be quite helpful.
Great suggestion for moving between measures! I'll definitely have to add that.
I am a big fan of, changing the octave and converting from piano -> clarinet etc..
i was planning to do something like this, but you have already done a great job
My initial idea was to create something closer to GitHub, but with music notation and guitar tab instead of text files. I'm not sure where I'll take things, at the moment, though.
The reason I ask is that it would be really nifty to be able to share or export these tunes. Either via MIDI, or preferably, via another notation format. If they will be fairly simple melodies, ABC might be a great output format, which converts easily into sheet music notation and midi.
Otherwise, you might want something fancy-pants like Sibelius (or whatever people are using nowadays for notation.)
An open format for export would be great!
Disclaimer: I have no experience with MusicXML. The vast majority of the music I want to notate fits on a single staff, and ABC is brilliant for that -- it's a well-established portable open music format that's easily entered and edited by hand. (Technically speaking it can do multi-staff music as well, but it starts to get a bit over-complicated and hacky at that point, IMO.) http://en.wikipedia.org/wiki/ABC_notation
PS The "Score" example on the ABC notation page is terrible, but it's a limitation of the lousy standard abc2ly translator, not the ABC format. I've got my own abc2ly which does a much better job of it...
They've both been around for awhile, work from custom text-formats, and support a ton of music typesetting features.
[1] http://www.lilypond.org/ [2] http://www.arkkra.com/
Import/Export is on the TODO list. If there ended up being a custom RiffUp format, it would be open and documented.
Next step... support http://www.hummingbirdnotation.com/ ? :)
Then again, being a n00b, maybe I don't realize that speed-of-input isn't the bottleneck for composers hehe.
There is just a TON to take into consideration when it comes to music notation, and one misstep will get in the way of the creative process and leave someone hating using your app.
Make sure you're ready for a seriously uphill battle if you continue working on this. It's a good start.
Maybe it sounds silly, but has anyone thought about using D3 to draw the music notation? Just an afterthought.
I have some relations at music schools. Reach out if you'd like me to connect you.
http://www.rdio.com/artist/Dead_Can_Dance/album/A_Passage_In...
In addition to being a developer/entrepreneur, I moonlight as a high school marching band instructor/arranger. In other words, I'm a semi-professional composer. I work with a team of people who write different aspects of the music: One guy writes the winds, I write the percussion, and others contribute as well.
Currently, whenever one of us has an idea about something to do with whatever we're arranging, we have to either get everyone together in a room with a piano to talk through it, or someone has to sit down with a professional music notation program (we use Finale) and "sketch" it all out.
It would be really cool if there was something online like RiffUp that would let me put together that "sketch" quickly and easily, and send a link to my colleagues. Like a "pastebin" for sheet music.
To get there, it would need to do a few more things, in roughly priority order: * Allow you to save your creation and send a link to someone else. * Support "-let" rhythms (triplets, for example) * Use multiple staves * Set the tempo * Allow other time signatures (time changes would be good too) * Choose a different voice for each staff
The great benefit here would be simple composition without having to worry about all of the stuff associate with making a real score. So much of music notation is about making stuff that prints nicely, which is actually a separate process from just creating the music. And, of course, being able to easily share it with colleagues without requiring them to have the same software I do (or to download a file and open it in that software).
And to answer the followup question that you'll ask: Yes, I'd be willing to pay for this.
Your use case would certainly be supported by the kind of service that I've had in mind. That said, it sounds like Noteflight would already fit your need to share quick musical sketches.
I'm not sure how far I'll take RiffUp. Competing directly against Noteflight/GuitarPro/Sibelius/Finale/... is an option, and there are a few innovations that can be made in that space. That wouldn't be an easy path, though.
I was more excited by the prospect of creating a community based around mass collaboration. The idea that a few notes could be forked to create many distinctly different songs.
For now, finding money to live is the overwhelming priority, so I can't justify spending much time on this. It could be that I pursue things further, later on.