[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Is Anyone Working on a Better Tablature Algorithm?

From: christopher-heckman
Subject: Re: Is Anyone Working on a Better Tablature Algorithm?
Date: Mon, 5 Dec 2016 01:12:45 -0700 (MST)

Okay, here we go ...

Thomas Morley-2 wrote
> from your initial posts I expected you'd rewrite the current
> noteToFretFunction, i.e. 'determine-frets'. Instead your 'chTab' is a
> music-function, still relying on 'determine-frets'. 

For the moment, this is easier to do. I didn't want to wreck my copy of
Lilypond, and I didn't particularly like the idea of rewriting
determine-frets, and not changing what works already.

And, as I mentioned, it's only a beta.

> Up to now I took only a very quick glance over the code. That said, we
> have context-properties for some of those settings. I'd  recommend to use
> them. 

This is my first big Lilypond project. I'm also learning Scheme for the
first time.

I agree about the context settings. There are too many ways to tweak this,
and the user might want tab that does certain things.

> Others are not documented sufficiently, like 'track-tabs'. (I don't
> understand what "best tabs" are.)

Those are Scheme variable names. Seriously, though, "track-tabs" is the
number of tablatures to create; if it's set to 4, that means chTab actually
finds the four best ways to tab the music.

> In general I'd prefer more comments why you do what inline. Otherwise
> you'll likely find not many people diving deeper into it. 

This is based on the algorithm in Chuanjun He's doctoral thesis: "An Expert
System for Guitar Sheet Music to Guitar Tablature". Most of the whys are
following what he did there.

> It fails for ...

Okay, I'll do a walk-through in about a week (which is why I posted it; it
works for my examples). Final Exams are coming up here at ASU.

> Even if I set 'use-open-strings' true. 

Since chTab doesn't refer to that property, I'm not surprised.

> With this example: 
> mus = { 
>   f4\1 f\2 f\3 f' 
>  }
> My settings for the strings are simply ignored. 

I went back and forth about this, and I decided that chTab would just ignore
the strings that are already set. There's no guarantee that they will
produce usable tablature, like in: 

{ f16\1 f'\1 f\1 }

In a future edition, chTab might generate about a dozen tablatures and look
to see if one matches the strings already selected, and then ignores them if
there isn't one.

> Too many errors

This occurred to me while coding. For instance, it does no error-checking.
There might not be any suitable tablatures for a particular piece, or notes
that are too high or too low to play, where an error message should be
returned (along with a graceful (?) exit). Once again, it's a beta. And will
probably remain a beta for a while.

One last question. You aren't by chance the Thomas Morley who used to teach
at Georgia Tech, are you?

View this message in context:
Sent from the Dev mailing list archive at

reply via email to

[Prev in Thread] Current Thread [Next in Thread]