tag:blogger.com,1999:blog-19544619.post6971023733465831511..comments2023-06-18T05:41:56.518-04:00Comments on 0xFE - 11111110b - 0376: A Question of Formats0xfehttp://www.blogger.com/profile/11179501091623983192noreply@blogger.comBlogger34125tag:blogger.com,1999:blog-19544619.post-91065725222119809442010-05-17T04:31:31.696-04:002010-05-17T04:31:31.696-04:00If/when you open up the code, I'd be prepared ...If/when you open up the code, I'd be prepared to look at writing a MusicXML parser.Adam Hoylehttp://www.dotankstudios.com/noreply@blogger.comtag:blogger.com,1999:blog-19544619.post-445864009470183102010-05-16T16:56:05.962-04:002010-05-16T16:56:05.962-04:00Nice to see work on this. I have described a simil...Nice to see work on this. I have described a similar problem and a similar solution in a list of interesting <a href="http://people.opera.com/howcome/2008/research/" rel="nofollow">research projects</a>.<br /><br />Your example doesn't run fully in Opera, you may want to take a look in the error console.<br /><br />Your proposed language looks a lot like CSS, perhaps you could make it fully compliant?Håkonhttp://people.opera.com/howcomenoreply@blogger.comtag:blogger.com,1999:blog-19544619.post-85307807272936443622010-05-15T17:03:01.777-04:002010-05-15T17:03:01.777-04:00Kudos on this work, from someone who tried many ti...Kudos on this work, from someone who tried many times to complete an SVG/Java notation system! This is a great thing.<br /><br />Re MusicXML and lilypond, having used both extensively:<br /><br />MusicXML is primarily an interchange format, it's horrific on it's own, and no fun to assemble in code. But as an interchange format it is extremely useful for importing into WYSIWYG editors like Finale or Sibelius, for which it's pretty much the only solution.<br /><br />Re lilypond, I second the above post that it's quite nice as a basic note-entry system, with the added benefit that it goes to 11 if you want to go ahead and create a complex score. <br /><br />(also the lily open-source fonts are a great source of glyphs!)<br /><br />Cheers,<br />StuartAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-19544619.post-57156846293965411282010-05-15T13:27:18.871-04:002010-05-15T13:27:18.871-04:00We have just released version 1.0 of abcjs, a java...We have just released version 1.0 of abcjs, a javascript library for rendering abc in-browser.<br /><br />Check out http://drawthedots.com/abcjs for real-time abc visual and audio rendering and the project site: http://code.google.com/p/abcjsGregory Dykehttp://code.google.com/p/abcjsnoreply@blogger.comtag:blogger.com,1999:blog-19544619.post-83303927742531316562010-05-15T13:12:49.471-04:002010-05-15T13:12:49.471-04:00Also, don't underestimate the ability of Lilyp...Also, don't underestimate the ability of Lilypond for easy-to-type notes. If you take out all the fancy formatting notes, it's not all that different than ABC. What you could do is allow people to enter notes or tab in just that block, and do the rest with default templating.<br /><br />I only say this because - far from being a Lilypond expert - I just picked the thing up, and I've been impressed and pleasantly surprised.<br /><br />So, for instance, I can take this little snippet from a score I just did:<br /> d ef c4 bf<br /> a8 bf c4 d ef8 d c4 d2<br /><br />So long as you set up the relative note (\relative c) and a voice in which to put this, everything else could be done in templating and global parameters generated on the fly.Unknownhttps://www.blogger.com/profile/06049687384110830999noreply@blogger.comtag:blogger.com,1999:blog-19544619.post-442284108181060502010-05-15T13:10:27.310-04:002010-05-15T13:10:27.310-04:00@0xfe: Sorry, I may have used "dump" as ...@0xfe: Sorry, I may have used "dump" as I'm usually one of the first to dump on TeX, by contrast. Love the concept; just can't stand the execution. ;)<br /><br />My point is that it is very possible to read and edit Lilypond's text, which - I agree - isn't true on MusicXML.<br /><br />But I also agree, ABC may be more appropriate here for the application, because of its simplicity.<br /><br />The issue, though, is that you may not be able to support rendering Lilypond if you don't support its syntax. I'm not even necessarily saying it's a good idea to do that at all, but I'm not sure an import script will be all that easy -- there would have to be something to map to on the rendering side! <br /><br />Now, that said, maybe doing something simple based on ABC is a better way to go for this application. I would expect if you got that working, someone could extend that work to do something that would natively render Lilypond.Unknownhttps://www.blogger.com/profile/06049687384110830999noreply@blogger.comtag:blogger.com,1999:blog-19544619.post-8636784727873603992010-05-15T12:25:44.441-04:002010-05-15T12:25:44.441-04:00I am of the opinion that people generally use scor...I am of the opinion that people generally use score editors to generate a score, so the readability issue for the input format isn't such of an issue. Since practically everything is convertable from MusicXML, I'd go for that, so Lilypond and all the others can be generated from there. Even Guitar Pro (I'm a fan) is able to import and export MXML :)Tailshttps://www.blogger.com/profile/00646948022611816805noreply@blogger.comtag:blogger.com,1999:blog-19544619.post-14688161000195177992010-05-15T08:20:09.702-04:002010-05-15T08:20:09.702-04:00Thanks for the comments, everyone.
A few clarific...Thanks for the comments, everyone.<br /><br />A few clarifications:<br /><br />- I'm not looking for a fully specified music description language. MusicXML is already there and so is Lilipond. My focus is on the rendering engine, and providing a clean API such that others can build importers for it.<br /><br />- I am, OTOH, looking for an <i>easy-to-type</i> notation for notes and tabs, so that people can quickly type in their ideas and convert them to music notation. ABC notation seems to fit the bill perfectly here (for scores).<br /><br />@Han-Wen Thanks for chiming in, much appreciated. I did hit the triplet issue recently, and did have a very pronounced doh-moment! I then bumped up the tick-resolution and started using floating-point (and correcting for accuracy, of-course). But you're right, using rationals seems like the cleaner way to do it; I'll look into it.<br /><br />@Han-Wen Re: editing, I've actually built it such that it can render incrementally (though very rudimentary). One of the things I need to do is compute the successive measures/bars/notes that need to be updated when a note changes somewhere in the middle.<br /><br />I'm holding off on this until I finish the new layout engine that I'm currently working on. In particular, my previous one didn't account for the correct placement of accidentals and other modifiers (such as guitar string bends).<br /><br />@peterkirn I don't think I ever "dumped" on Lilypond. I agree that it is flexible and supports many of the really odd cases... but again, that's not what I'm looking for. The API will allow people to import and export to any format, so eventually there may be a Lilypond importer.<br /><br />And yes, I can fret the second and twelfth frets with one hand. Can't you?0xfehttps://www.blogger.com/profile/11179501091623983192noreply@blogger.comtag:blogger.com,1999:blog-19544619.post-41747140346494375782010-05-15T03:27:09.633-04:002010-05-15T03:27:09.633-04:00And how do you play 2 x x 12 12 12 on the guitar u...And how do you play 2 x x 12 12 12 on the guitar using a single left hand? Unless you are Mr. Elastic or something?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-19544619.post-67498487231411634242010-05-14T21:34:30.593-04:002010-05-14T21:34:30.593-04:00Bigendian, have you checked out ABCJ?
"...Bigendian, have you checked out ABCJ?<br /><br /> "The ABCJ Website"<br /> <br /><br />And especially the ABCJ Online page:<br /><br /> .<br /><br />Try "Flowers of Edinburgh" (above) in it.Christopher Karl Johansenhttps://www.blogger.com/profile/07794133762992845957noreply@blogger.comtag:blogger.com,1999:blog-19544619.post-18869130860501374582010-05-14T21:32:38.745-04:002010-05-14T21:32:38.745-04:00If you want a SAX (2.0) parser, this one is fairly...If you want a SAX (2.0) parser, this one is fairly far along: http://code.google.com/p/jssaxparser/ , but again as someone said, the browser usually does the parsing. If you mean finding specific nodes easily, XPath (especially when using a library to overcome differences in e.g., IE/Mozilla) makes accessing XML nodes very similar to accessing JSON. Great to hear you're going to try SVG, and awesome work man!Brett Zamirhttp://brett-zamir.menoreply@blogger.comtag:blogger.com,1999:blog-19544619.post-12964800919963980912010-05-14T18:46:07.286-04:002010-05-14T18:46:07.286-04:00Bigendian, marvelous!
I'm a big fan of ABC.
...Bigendian, marvelous!<br /><br />I'm a big fan of ABC.<br /><br />Have you looked at<br /><br /> "CONCERTINA.net - Tune-O-Tron: Converter"<br /> ?<br /><br />Try pasting this (EXCLUDE the "=====" lines)<br /><br />=====<br />X: 48<br />T:Flowers of Edinburgh<br />R:Reel<br />O:Scotland<br />O:Ireland<br />M:2/4<br />L:1/16<br />K:G<br />"G"GE|D2DE G2GA|BGBd cBAG|"D7"FGFE DEFG|ABAF E2GE|<br />"G"D2DE G2GA|"G"BABd "C"efge|"D7"dcBA GFGA|"G"B2G2 G2:|<br />|:"G"Bd|"G"g2gf gbag|"D7"f2fe fagf|"C"edef gfed|"Em"B2e2 e2ge|<br />"G"dBGB d2dd|"C"edef "Am"g2fe|"D7"dcBA GFGA|"G"B2G2 G2:|<br />=====<br /><br />and submitting it.Christopher Karl Johansenhttps://www.blogger.com/profile/07794133762992845957noreply@blogger.comtag:blogger.com,1999:blog-19544619.post-65439393318958536262010-05-14T16:57:21.786-04:002010-05-14T16:57:21.786-04:00Awesome program!
I'm currently working on a w...Awesome program!<br /><br />I'm currently working on a web server that's designed to host "thing" editors like your music editor. My server will give you a 100% in-browser Javascript API that lets you easily save music back to the server without any server-side coding. My server is also "social out of the box" in that it'll manage users, permissions, and sharing for you. Users will be able to share the music they create with anyone who has an OpenID.<br /><br />An example that I'm quite proud of is that I very quickly integrated http://canvaspaint.org/ to save images back to my server.<br /><br />My alpha server is located at http://objectcloud.kicks-ass.net. If you release your editor as open-source, I'll gladly help with integration.Andrew Rondeauhttp://andrewrondeau.comnoreply@blogger.comtag:blogger.com,1999:blog-19544619.post-25944294377525054682010-05-14T13:13:54.358-04:002010-05-14T13:13:54.358-04:00Ran across the story at slashdot, and it looks rea...Ran across the story at slashdot, and it looks really interesting. Something I've long wanted to do at my ABC-related site is add full support for non-Latin1 languages, so I can handle music in Chinese, Arabic, whatever. I've tried doctoring abc2ps to handle UTF-8, but I've never succeeded at making the results display correctly. All browsers now do UTF-8 pretty well, and if this music formatter can be used to get non-Latin1 titles, lyrics, etc. right, I'll switch to it. If you need any contributors to work on parts of it, let me know.John Chambershttp://trillian.mit.edu/~jc/cgi/abc/tunefindnoreply@blogger.comtag:blogger.com,1999:blog-19544619.post-4410619643025988462010-05-14T13:12:54.508-04:002010-05-14T13:12:54.508-04:00Sorry, that's non-geek-unfriendly. That's ...Sorry, that's non-geek-unfriendly. That's too many negatives.<br /><br />Lilypond is not just for geeks. ;)Unknownhttps://www.blogger.com/profile/06049687384110830999noreply@blogger.comtag:blogger.com,1999:blog-19544619.post-36503551534843439172010-05-14T13:12:07.662-04:002010-05-14T13:12:07.662-04:00I don't think it's entirely fair to dump o...I don't think it's entirely fair to dump on Lilypond because of TeX - and believe me, TeX's oddness turns me off, too. <br /><br />I find Lilypond eminently readable and usable. It's not simple, no, but then notation isn't all that simple, either. The difference between Lilypond and ABC is that Lilypond is more formalized, which is essential once you get beyond very basic scores.<br /><br />Here's my own guide to Lilypond, just written:<br />http://createdigitalmusic.com/2010/05/14/lilypond-free-beautiful-music-notation-engraving-for-anyone/<br /><br />And more thoughts on your (awesome) work:<br />http://createdigitalmusic.com/2010/05/14/music-notation-with-html5-canvas-in-the-browser-standard-formats-for-scores/<br /><br />I just wouldn't assume that Lilypond is geek-unfriendly. I think it's probably the only text format out there really usable for notation across a wide variety of circumstances, with the ability to directly edit, and a renderer associated with it on the desktop. (MusicXML is versatile, but as you say, not really usable directly - and there's no renderer, either.)Unknownhttps://www.blogger.com/profile/06049687384110830999noreply@blogger.comtag:blogger.com,1999:blog-19544619.post-81806774019022274472010-05-14T13:11:09.714-04:002010-05-14T13:11:09.714-04:00Han-Wen is of course correct that your internal da...Han-Wen is of course correct that your internal data structure is much more important than an input format. And if you make everything accessible via APIs, you can let anybody else write an input translator for their favorite format. But I don't see the need for another text-based notation format when MusicXML, LilyPond, GUIDO, and abc are all available.<br /><br />Joao, how is MusicXML not as open as it should be? I like Christopher Blizzard's definition of "open" at:<br /><br />http://www.0xdeadbeef.com/weblog/2010/04/open-vs-standard/<br /><br /><i>"It’s open if I don’t have to ask anyone for permission to use it. Or ship it. Or improve on it."</i><br /><br />MusicXML meets that test of openness 100%. Its license is based on the W3C's license. It's used throughout the world by open source and closed source projects, commercial and non-commercial, free and pay.<br /><br />Evan, if this project is trying to reach non-geeks, ease of typing an input format is irrelevant. The vast majority of musicians creating digital sheet music do so with a program like Finale, Sibelius, or MuseScore.Michaelhttps://www.blogger.com/profile/15484703769762940788noreply@blogger.comtag:blogger.com,1999:blog-19544619.post-48247651733267030002010-05-14T11:42:14.475-04:002010-05-14T11:42:14.475-04:00If you decide for ABC, you could be interested in ...If you decide for ABC, you could be interested in the abctab2ps extension by Christoph Dalitz: http://www.lautengesellschaft.de/cdmm/userguide/userguide.html <br />I'm not entirely convinced is the way to go to extend ABC to tablatures but it might give you some ideas.rdentatohttps://www.blogger.com/profile/10918443407843537881noreply@blogger.comtag:blogger.com,1999:blog-19544619.post-631364319187335382010-05-14T11:41:28.863-04:002010-05-14T11:41:28.863-04:00Would you be willing to host your project on githu...Would you be willing to host your project on github or something so that people who want to contribute can do so easily? :)Eddiehttps://www.blogger.com/profile/17213118088211078011noreply@blogger.comtag:blogger.com,1999:blog-19544619.post-66309332926109973672010-05-14T10:57:31.449-04:002010-05-14T10:57:31.449-04:00To me, the problem with MusicXML is that it's ...To me, the problem with MusicXML is that it's difficult for a person to write. It's just so verbose and unnatural. ABC lets me write simple bars pretty quickly and about as intuitively as can be expected when it comes to translating text to musical notation. Realistically, it is probably harder to parse, but I think it's worth it.Evanhttps://www.blogger.com/profile/02108313708875274320noreply@blogger.comtag:blogger.com,1999:blog-19544619.post-17492124392036396822010-05-14T10:41:09.127-04:002010-05-14T10:41:09.127-04:00Looks like a nice start, congratulations.
Don...Looks like a nice start, congratulations. <br /><br />Don't let anyone try to push you into supporting any file format; the file format is besides the point.<br /><br />Here are some things to think of:<br /><br />- you'll need to implement exact rational numbers, your tick based approach will fall apart when you start doing triplets<br /><br />- have you thought about line-breaking beyond "this does not fit on the line"?<br /><br />- what about editing? It looks as if you construct the whole thing object-by-object. Does that scale to page sized documents? It could be faster if you do something incrementally, but I could never think of a way to do that cleanly.<br /><br />good luck!<br /><br />Han-Wen<br />(LilyPond main author)Han-Wen Nienhuyshttps://www.blogger.com/profile/08449564875554831724noreply@blogger.comtag:blogger.com,1999:blog-19544619.post-83063510638832107012010-05-14T09:41:21.484-04:002010-05-14T09:41:21.484-04:00This is a really cool project. It'd be good to...This is a really cool project. It'd be good to have support for chord names written above the music, preferably in some standard format that a script using the API could automatically transpose.Mark William Darbyshirehttp://markdarb.com/noreply@blogger.comtag:blogger.com,1999:blog-19544619.post-61983663590795445982010-05-14T09:18:29.722-04:002010-05-14T09:18:29.722-04:00Just a note on my previous comment:
I do not in a...Just a note on my previous comment:<br /><br />I do not in any way subscribe to MusicXML. I just like the idea of developing a standard for music representation. Too bad MusicXML is not as "open" as it should be.Zamitehttps://www.blogger.com/profile/09650058307197347950noreply@blogger.comtag:blogger.com,1999:blog-19544619.post-20118559683014825812010-05-14T09:16:33.473-04:002010-05-14T09:16:33.473-04:00Well SVG and HTML5 IS XML....
Transforming MusicX...Well SVG and HTML5 IS XML....<br /><br />Transforming MusicXML into an SVG sounds like a feasible option through the use of a stylesheet or something of the sort.<br /><br />But nevertheless this seems like a brilliant idea.<br /><br />But if we can render MusicXML into SVG, and then back to MusicXML then perhaps we can start working on overcoming the MIDI limitations by working on a MusicXML sound renderer? any ideas? any previously done work?Zamitehttps://www.blogger.com/profile/09650058307197347950noreply@blogger.comtag:blogger.com,1999:blog-19544619.post-16077005891264001342010-05-14T08:45:31.664-04:002010-05-14T08:45:31.664-04:00Most browsers can parse XML for you, then you just...Most browsers can parse XML for you, then you just navigate the tree using DOM.Anonymousnoreply@blogger.com