Heads up: in English, "tablature" is an uncountable noun, it doesn't need to be pluralized.
Show HN: Generate guitar tablature using a constraint solver
11–20 of 28 posts
Re: Show HN: Generate guitar tablature using a constraint solver
#12If you’re looking for a more practical algorithm: this problem can be formulated as a shortest path problem on the graph whose vertices are (n, fret, finger, string) tuples. A simple dynamic programming solution is to fill out a distance table whose entry distance[n, fret, finger, string] is the optimal cost of the prefix of the melody ending at note n, which can be computed as 0 if n = 1, or in terms of the entries…
Re: Show HN: Generate guitar tablature using a constraint solver
#13Author 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…
Re: Show HN: Generate guitar tablature using a constraint solver
#14If you’re looking for a more practical algorithm: this problem can be formulated as a shortest path problem on the graph whose vertices are (n, fret, finger, string) tuples. A simple dynamic programming solution is to fill out a distance table whose entry distance[n, fret, finger, string] is the optimal cost of the prefix of the melody ending at note n, which can be computed as 0 if n = 1, or in terms of the entries…
How did you learn this. Math undergrad? Comp sci? Something else?
Re: Show HN: Generate guitar tablature using a constraint solver
#15Re: Show HN: Generate guitar tablature using a constraint solver
#16If you’re looking for a more practical algorithm: this problem can be formulated as a shortest path problem on the graph whose vertices are (n, fret, finger, string) tuples. A simple dynamic programming solution is to fill out a distance table whose entry distance[n, fret, finger, string] is the optimal cost of the prefix of the melody ending at note n, which can be computed as 0 if n = 1, or in terms of the entries…
As explained in the first comment, one of the motivations for the project was to learn constraint programming. The tablature generator could be a nice example to compare different paradigms and algorithms.
Re: Show HN: Generate guitar tablature using a constraint solver
#17Author 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…
Jesus, what's going on between -O3 and -O4? This type of a gain warrants investigation. Have you tried profiling both cases?
Re: Show HN: Generate guitar tablature using a constraint solver
#18You 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
Re: Show HN: Generate guitar tablature using a constraint solver
#19Heads up: in English, "tablature" is an uncountable noun, it doesn't need to be pluralized.
Re: Show HN: Generate guitar tablature using a constraint solver
#20Earlier quoted context omitted.
Jesus, what's going on between -O3 and -O4? This type of a gain warrants investigation. Have you tried profiling both cases?
The authors of the Gecode solver could explain it better than me, but I think that -O3 and -O4 perform a first pass that pre-compute variable bounds and values, which could reduce the exploration space significantly.
As a side note, while MiniZinc uses Gecode for the optimization this is not actually anything special built-in to Gecode, it is just a usage of the library.