back to list

Weil tuning

🔗Mike Battaglia <battaglia01@gmail.com>

8/22/2012 11:31:30 PM

The (unnormalized) Weil norm on a weighted monzo |a b c ...> is:

|| |a b c ...> ||_W = |a| + |b| + |c| + ... + |a+b+c+...|

Where the subscript W on the lefthand side is there to note that this
is the Weil norm.

To define a Weil tuning, we need to figure out what the dual norm
induced by the Weil norm onto tuning space is, so that we can define
it on vals and tuning maps. To figure this out, one immediately
important thing to note is that this norm itself has the structure of
being the L1 norm of a special "augmented" vector:

|| |a b c ...> ||_W = || |a b c ...; (a+b+c+...)> ||_1

The vector |a b c ...; (a+b+c+...)> is an augmented monzo with one
additional augmented coordinate tacked on at the end, set equal to the
sum of the other coordinates; again, all coordinates involved are
weighted beforehand. Therefore, for any monzo, the Weil norm can be
turned onto an ordinary L1 norm by first left-multiplying weighted
monzos (represented as column vectors) by the following matrix:

[1 0 0 0 0 ... 0]
[0 1 0 0 0 ... 0]
[0 0 1 0 0 ... 0]
[0 0 0 1 0 ... 0]
[0 0 0 0 1 ... 0]
·
·
·
[0 0 0 0 0 ... 1]
[1 1 1 1 1 ... 1]

and then taking the L1 norm of the result. This is a diagonal matrix
with an additional row of ones concatenated on the bottom.

This matrix is, essentially, a mapping from ordinary interval space
into a larger "augmented interval space" that's one dimension bigger.
It's basically a V-map, but where we're treating ordinary JI as a
subspace of an even larger vector space. The non-augmented coordinates
can be interpreted as defining a monzo in the usual way, and the last
"augmented" coordinate can be interpreted as representing the
interval's span. The image of the above mapping is only those
augmented vectors where the final coordinate actually matches up with
the JI span of the corresponding interval defined by the non-augmented
coordinates.

We can use this to obtain our Weil dual norm on vals by looking at the
dual space of augmented interval space, which we can call augmented
tuning space. Ordinary tuning space can be constructed as a quotient
space of augmented tuning space, where the subspace we're modding by
is the left nullspace of the above V-map, which is span{<1 1 1 1 1
...; -1|}. So for any JI val <a b c d e ...|, the coset of augmented
vals mapping to it is of the form <a b c d e ...; 0| + k*<1 1 1 1 1
...; -1|.

This should look familiar, because it's the same thing that we've been
talking about with subgroups these past few weeks: svals are cosets of
full-limit vals. Since we've effectively set things up so that
ordinary JI vals are being treated like "svals", and augmented vals
are being treated like "full-limit vals", then we're back to the same
situation we were at with subgroups a few weeks ago. This means that
we can use Hahn-Banach again to get our Weil dual norm.

If V is an ordinary val that we want to get the Weil dual norm || ·
||_W* of, then ||V||_W* is given by the following:

||V||_W* = inf ||A||_inf: A*M = V

where A is an augmented val, M is the V-map from above, and || ·
||_inf is the Linf norm on augmented vals. IOW, the Weil dual norm of
any val is the Linf norm of the shorted augmented val mapping to it.
This has the structure of being an norm on ordinary non-augmented
tuning space, and as such defines a norm on ordinary vals and tuning
maps.

Now that we have our dual norm on tuning maps, we can define a new
class of optimal tunings, called Weil tunings, in the obvious way:
given any regular temperament, the Weil tuning of that temperament is
the tuning map T which minimizes ||T-JIP||_W*. This tuning will
minimize the max Weil-weighted error over all intervals in the lattice
- meaning it minimizes the max integer-limit-weighted error over all
intervals (and hence integer-limits) in the lattice. This, of course,
paves the way for us looking at octave-equivalent intervals and
minimizing the max odd-limit-weighted error over all odd-limits in the
lattice.

Of course, much like normal TOP, this is a pain in the ass to compute.
So next, we'll take a cue from the Graham Breed playbook and define an
L2-based approximation to all the above that allows us to easily
compute an optimal tuning using the pseudoinverse - the Weil-Euclidean
or WE tuning. We'll then look at generalized Wp norms.

-Mike

🔗Mike Battaglia <battaglia01@gmail.com>

8/22/2012 11:34:42 PM

On Thu, Aug 23, 2012 at 2:31 AM, Mike Battaglia <battaglia01@gmail.com> wrote:
>
> This has the structure of being an norm on ordinary non-augmented
> tuning space, and as such defines a norm on ordinary vals and tuning
> maps.
>
> Now that we have our dual norm on tuning maps, we can define a new
> class of optimal tunings

I should add that this is only one approach to the problem - turning
the Weil norm into an ordinary L1 norm, then getting the dual norm to
that norm, and inducing the Weil dual norm as a quotient norm. There's
most likely a simpler way to calculate it directly from the val
coefficients without going through all that hoopla, but I haven't
worked it out yet. It's more of an implementation detail anyway, and
this lays out the theoretical groundwork.

-Mike