close tab
What, do you somehow think that you will get anal sex from this setting?
...
Frankly, I'm not sure which is worse.
5--5--7--7--
-5-----5----
--5-----5---
7-----6-----
------------
------------http://riffbank.com/?q=5--5--7--7--%0D%0A-5-----5----%0D%0A-...
I'm actually surprised that I haven't scraped 124 different versions of it by now. Hopefully with lots of transcriptions things will show up to more diverse 'fingerings' (you know, the "right way" plus all the "other ways")...
---5-7--7-
--5---5---
-5-----5--
7----6----
----------
----------
although anyone would recognize your version.I talk about this a little bit toward the end of this tech presentation I gave: http://37signals.com/talks/soundslice
I definitely echo what some other comments have said -- if you made it based on intervals instead of "hard-coded" notes, it'd be a lot more flexible! That seems to be how our own brains store music -- if somebody sings "Happy Birthday," for example, you can instantly join in, regardless of what key it's in. Unless you're tone deaf... :-)
In my case I was initially just trying to leverage the vast trove of ascii tabs out there on the interwebs and see what came out of it hard-coded or not - first step was normalizing the format and storage (done, but always ongoing) - next would be intervals and pitch/tonality normalization (including various weird tunings if detectable) - but you're dead on right.
Also looked into doing some pseudo-tab to audio tones - then I could possibly compare it to inputted audio playing, etc. I haven't looked into the details - but it seems somewhat feasible...
I think that textarea input box is key - you should invest time making it look good and easy to use. Could you make it an insert-mode text input that replaces hyphens as you type? Could it auto-expand in width when you get to the end?
Can’t wait to see this evolve
Syntax highlighting would look cool in that box as well, albeit not very useful. GuitarHero colors? ;)
Also, even though the bitly link ends up being the exact same URL, it sometimes adds a bunch more erroneous results prior to The Haunted, making it listed 8th. But clicking the search button will again return it as the 3rd result.
Scoring seems to change oddly as well and I haven't been able to flag down exactly what is going on there
Thanks for the example url too. I'm glad that people are liking my little POC.
Just a short explanation of the (still very rudimentary) query "system" (using the term loosely here)...
Tab file gets scraped, broken down into individual passages based on how it's written (aka the "riffs", even though they might not technically be)..
P.M.---| h P.M. h
|---------------------------|
|---------------------------|
|--------7^8--7-------------|
|--------------------7^8--7-|
|-0---0-----------0---------|
|---------------------------|
becomes normalized / encoded to something like "5a 5a 3h 3i 3h 5a 4h 4i 4h"
and inserted into an ElasticSearch cluster, using a non-word analyzer for indexing (simplified a bit here for sake of argument - but I also save all spacing, symbol markup, bar sections and palm muting they just are not being utilized in search currently). "settings": {
"index.analysis.analyzer.nonword.type": "pattern",
"index.analysis.analyzer.nonword.pattern": "[^\\w]+"
}...
Upon search - the same encoding function is then applied to the incoming text, exploded and thrown in an ordered SPAN query with diff levels of 'slop'... "query": {
"span_near": {
"clauses": [
{
"span_term": {
"riff_code": "5a"
}
},
{
"span_term": {
"riff_code": "5a"
}
},
{
"span_term": {
"riff_code": "3h"
}
},
{
"span_term": {
"riff_code": "3i"
}
}
],
"slop": 6,
"in_order": true
} ....
I cut the score off at a >1.1 or something so that it doesn't show things that are way off.At the time it seemed like the best way to detect patterns that are mostly similar and look decent. I also experimented with MoreLikeThis and FuzzyLikeThis query variants, but ultimately the span query gave closer results to what one would EXPECT to see (but still has some scoring and clustering problems).
Any Lucene / ElasticSearch gurus feel free to suggest differently.