[HN Gopher] Show HN: Generate guitar tablatures using a constrai...
       ___________________________________________________________________
        
       Show HN: Generate guitar tablatures using a constraint solver
        
       Author : senshu
       Score  : 20 points
       Date   : 2020-03-08 11:37 UTC (11 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | senshu wrote:
       | Author here. TablaZinc is a proof-of-concept tablature generator
       | for fretted string instruments -- such as the guitar, bass,
       | mandolin, banjo, etc.
       | 
       | It is a week-end project that I started for two reasons:
       | 
       | * As a software developer, I was looking for an original case
       | study to learn constraint programming.
       | 
       | * As a guitar player whot is not fluent reading sheet music, I
       | was interested in a tool to rapidly convert existing
       | transcriptions of jazz solos into playable guitar tablatures.
       | 
       | TablaZinc is written in the MiniZinc language.
       | https://www.minizinc.org Feedback from advanced users of MiniZinc
       | and experts in constraint programming will be welcome.
        
       | cormacrelf wrote:
       | Pretty cool. It's nice that computing the good fingerings takes a
       | while, makes my brain feel less 'out of a job' that it can do
       | that nearly real-time. Would be good to see some harmony and how
       | the solver would deal with multiple notes at once.
       | 
       | If you're seriously writing out tabs and need some software, I've
       | been using Dorico and it's pretty damn good. It gives you a
       | medium grade solve and then you hit a few keys to move a note
       | between the strings where it is currently playable.
        
         | superpermutat0r wrote:
         | I think in one of the algorithm lectures by Eric Demaine he
         | outlines the idea of making a dynamic programming algorithm for
         | good finger positions for chord progressions. Although you have
         | to carefully design your cost function (moving the finger from
         | one place to another is costly)
         | 
         | I did implement the one for normal notes and the extension to
         | chords shouldn't be that difficult but the execution is
         | instantaneous because the sequence is not that long.
         | 
         | edit: https://www.youtube.com/watch?v=tp4_UXaVyx8 this lecture
        
         | senshu wrote:
         | I think I understand what you mean. A trained guitar player
         | would not need such a tool, and a beginner should probably
         | avoid using it :). My original idea was to explore how I could
         | rapidly get playable tablatures of jazz solos from available
         | sheet music that I still cannot read fluently.
         | 
         | > It's nice that computing the good fingerings takes a while
         | 
         | Actually, a few tweaks and the use of optimization options
         | allowed to dramatically reduce the execution time for my
         | 20-note example.
         | 
         | > Would be good to see some harmony and how the solver would
         | deal with multiple notes at once.
         | 
         | Yes. I think it would take some effort to adapt the current set
         | of constraints but it should be feasible.
         | 
         | > If you're seriously writing out tabs and need some software,
         | I've been using Dorico and it's pretty damn good
         | 
         | Thanks for the tip. They don't seem to offer a Linux version
         | though.
        
       | tschiller wrote:
       | You can also formulate the problem as a dynamic programming
       | problem.
       | 
       | Here's a Java repo I made back in college solving the simpler
       | problem: given a tab, what's the easiest fingering to play it?
       | https://github.com/twschiller/optimal-guitar.
       | 
       | It works by modeling the (1) the difficulty of hand positions,
       | and (2) transitions
        
       ___________________________________________________________________
       (page generated 2020-03-08 23:00 UTC)