We built that feature at Soundslice. :-)
HN user
adrianh
Web developer from Chicago, living in Amsterdam. http://www.holovaty.com/
Co-creator of Django: http://www.djangoproject.com/
Working on Soundslice (interactive sheet music/tablature, "the Internet's finest music learning experience"): http://www.soundslice.com/
Founded EveryBlock (neighborhood news and discussion, now defunct)
Made http://www.chicagocrime.org/ (one of the original Google Maps mashups, now defunct)
Listen to my album of 10 original guitar tunes: https://www.holovaty.com/melodic-guitar-music/
And the follow-up EP: https://www.holovaty.com/layer-cake/
Guitar videos: http://youtube.com/adrianholovaty
Check out Soundslice for exactly this. It's great audio/video playback (with slowdown, looping, etc.), with an integrated tab and sheet music editor. So you can write down what you've figured out, and it remains synced with the original audio.
Soundslice lets you start with a real recording (MP3 or YouTube) and integrates the audio/video playback directly with a tab/notation editor.
So as you play the audio (with slowdown, looping, etc.), you can immediately write down what you figured out, and that written notation stays synced with the original recording. This workflow for transcription is fantastic, because otherwise you're juggling multiple apps (audio playback/slowdown, plus notation software).
Since you asked about MuseScore: MuseScore is purely scoring software, without the ability to sync with real audio. You can also use Soundslice as a pure sheet music editor; the main difference is it's web-based as opposed to being a desktop app like MuseScore. Soundslice also has the philosophy that the music might always be displayed on different devices, so it's engraved on the fly depending on your screen dimensions. (MuseScore sort of assumes the end result will be a fixed-dimension such as paper.)
Hey, great to hear! Thanks for taking the time to write that. :) Keep transcribing and playing music!
I'm curious how it works for videos that contain moving tab (as in, the playhead stays in the center while the tab moves behind it). Seems like that sort of tab wouldn't work with this approach...?
Kudos from one of the Soundslice guys — we've been making web-based tab and sheet music stuff since 2012. :)
I took Dave’s “Write a compiler” course several years ago, and it was mind-blowing in the absolute best sense of the term. What a great teacher and person.
Programmers are worse off for his retirement, but (given his career change) Chicago-area high school kids are in for a real treat.
I also make instrumental music, and I have this same problem. What I do is: find a word or phrase that matches the rhythmic phrasing of my main melody. That becomes the working title.
An example is how Paul McCartney’s original title for “Yesterday” was “Scrambled Eggs,” since those words fit naturally over the start of the melody.
I'm a very happy Google Closure Compiler user, especially with the "advanced optimizations" flag. It does a level of code elimination and variable renaming at a level that no other JavaScript tool even approaches. Excellent software.
I think it gets a bad rap because you need to write your code in a certain way to avoid the optimizations breaking things. But if you're a disciplined developer, you'll reap some large benefits.
Yes, Drumeo embeds the Soundslice player within its product. :)
Great to hear. Thanks very much, and keep playing music!
You're very welcome, and thanks for using it!
I've been working on it full-time since 2012, so it's hard for me to reduce 14 years' worth of work to a single "most difficult technical step."
Sorry, I don't mean to be rude or unhelpful, but that's not a question I can provide a meaningful answer to. There have been dozens, probably hundreds, of difficult technical challenges in building Soundslice.
I’ve transcribed hundreds of hours of guitar music over 25+ years, using the method described in this article. It was such a slog that I ended up creating tool to help streamline the process: Soundslice (https://www.soundslice.com/).
It combines audio playback directly with a tab editor, so that you can immediately write down what you’ve figured out and your transcription stays in sync with the original audio. This makes transcribing incredibly fast and (importantly) accurate.
It’s got audio slowdown, precise looping, “synth overlay” (playback of the transcription and original audio at the same time, to spot errors), auto stem separation and a full-featured tab/notation editor with support for hundreds of notations.
When you’re done, you get a very useful artifact: a synced transcription, effectively a bespoke practice environment for that piece of music.
Over the years, Soundslice has expanded into a lot more than a pure transcription tool, but lots of people still use it for its original intended purpose. (It supports any instrument that uses western music notation, not just guitar.) If you’re at all interested in transcribing music, give it a shot.
Hi, I make that site! We don't have any "basic effects like normalization/compression," so I think you may be mistaking us for something else?
Soundslice is oriented around sheet music that's synced with audio. So while we have a few audio-processing features (basic cropping, slowdown and fine-grained pitch correction), that stuff is all secondary to the notation aspect.
This contains a lot of advice about good writing in general. Ironically I’d recommend it to humans as well as AIs.
Thanks for sharing this. Your site is great. I've already learned a bunch of stuff, just browsing around the existing submissions.
I had a chuckle pondering whether you A/B tested "really freaking cool-looking" versus "really cool-looking" in the prompt. What a weird world we live in! :-)
Interpreting sheet music images is very complex, and I’m not surprised general-purpose LLMs totally fail at it. It’s orders of magnitude harder than text OCR, due to the two-dimensional-ness.
For much better results, use a custom trained model like the one at Soundslice: https://www.soundslice.com/sheet-music-scanner/
I've been using the Django ORM for 20 years, and it has yet to get annoying. What's your definition of "quickly" — perhaps 25 years?
Definitely a subtle distinction there. Soundslice supports tab in many formats (MusicXML, Guitar Pro, PowerTab, TuxGuitar, PDF/images of published tab, or tab notated directly in the Soundslice editor) but didn't support ASCII format yet.
Yes, Soundslice has a ton of tab-first users. And in fact the primary reason I founded the site was to scratch my own itch of being able to create tab that's synced with real audio recordings. (I'm a guitarist myself.)
I don't fully understand your comment, but Soundslice has had first-class support for tablature for more than 10 years now. There's an excellent built-in tab editor, plus importers for various formats. It's just the ASCII tab support that's new.
Yes, that's a Soundslice feature called "Expand repeats," and you can read about it here:
https://www.soundslice.com/help/en/player/advanced/17/expand...
That's available for any music in Soundslice, not just music that was created via our scanning feature.
Just a quick plug: check out Soundslice. It's interactive sheet music with a ton of learning tools built in, including easy navigation, looping, tempo changing and transposition.
We've also got a scanning feature that does OCR for sheet music, to get music into our system. Plus there's a full-featured notation editor. A good overview is at https://www.soundslice.com/features/
Try our machine-learning powered sheet music scanning engine at Soundslice:
https://www.soundslice.com/sheet-music-scanner/
Definitely doesn't suck.
Soundslice (https://www.soundslice.com/) is a fully baked version of this idea. Tabs synced with videos, with a full notation/tab editor and tons of built-in music practice tools.
Hi, I'm one of the creators of Django. For what it's worth, here's what I do for my product Soundslice (https://www.soundslice.com/). I've been working on it full-time for 12 years, so a lot of thought has gone into this.
Soundslice is very complex in its front-end JavaScript. It has an entire sheet-music rendering engine, capable of "responsive" sheet music [1], plus an integrated audio/video player for music practice, a full-fledged sheet music/tab editor [2] and a ton more [3].
In short: we don't use any JS frameworks. It's just vanilla JS — and in this day and age, that is totally fine for building a quality product.
We're disciplined in how the JS logic is structured, trying to find the right abstractions for the concepts of our app, and we use native JS/DOM APIs (which are full-featured these days).
Every web page on our site is served by Django — in other words, there's no single-page-app stuff. I've always found the idea of single-page apps to be "against the grain": it goes against how web browsers are optimized, and it goes against how HTTP/HTML were designed. Plus it adds a ton of complexity that mainly benefits the maintainers of front-end JS frameworks (it gives them power over you).
I think an entire generation of web developers has been misled into assuming JS frameworks are table stakes for building high-quality web apps — and that is 100% wrong.
The time-tested pattern of "serve the initial HTML (with Django or whatever), then add functionality with JavaScript" is solid and helps you build high-quality, maintainable websites.
On a meta note: for years I've sat on the sidelines and rolled my eyes at the frontend JS world, knowing it doesn't affect me or my product. But I've come to realize all web developers — including those who don't choose to use frontend frameworks — do indeed have a vested interest in pushing back against the bullshit. That's because the JS frameworks are making the web crappier, and that affects us all by giving the web a worse reputation. Sites load slower, UI is weird/buggy/non-standard, and the culture perpetuates (meaning it's harder to find developers who know "actual" JS instead of frameworks).
[1] https://www.soundslice.com/help/en/player/basic/100/resizing...
I'd call this a California thing — or, more broadly, a behavior by people who want to align themselves culturally with Silicon Valley.
Work with some Chicagoans (or Midwesterners in general) and you'll get a lot less BS.
Obviously this is painting with broad strokes, as different types of people live everywhere.
No React to be found (and good riddance). It's two vanilla JavaScript files:
We do indeed generate vector PDFs, not embedded bitmaps.
Our graphics engine works with Canvas API instructions — like "draw a line from point (A,B) to (C,D)." This API is small enough and low-level enough that it can also generate pristine vector output.
That's in fact one of the features of Skia Canvas (vector output in PDF and SVG).
At Soundslice, we have a custom sheet-music-rendering graphics library in frontend JavaScript/Canvas.
We also need to generate vector PDFs serverside — so we use a node library that speaks the HTML Canvas API and can generate PDFs. This way the result is exactly the same as the rendered sheet music in the web browser. Nice!
The upshot is: this kind of library allows for code reuse in non-browser contexts.