proximity_mapping_details

Herman Haverkort > Recursive tilings and space-filling curves > Sound of space-filling curves > Sound of space-filling curves II > Proximity mapping details

I am exploring different approaches to make sonifications or music of space-filling curves. One of these approaches is *proximity mapping*. For an introduction and examples of proximity mapping, please check out the main page first. Below, I provide more details of the mapping, and some additional examples that may be interesting.

For ease of description, consider a *d*-dimensional self-similar space-filling curve *f*: [0,1] → [0,1]^{d} (however, the approach below can also be applied, mutatis mutandis, to non-continuous traversals). We traverse the curve, that is, the values *f*(*t*), from *t*=0 to *t*=1, sampling it at a set *T*⊂[0,1] of *n* uniformly spaced values of *t*. When we are at a specific value of *t*, we generate a tone for *each* other point *f*(*t′*) with *t′*∈*T*, generating louder tones for points that, together with *f*(*t*), define pairs for which the space-filling curve does not preserve locality well. So in total, we generate roughly |*T*|² tones: there are |*T*| time steps *t*, and in each step, we superimpose |*T*|−1 tones, one for each pair (*t*,*t′*) with *t*≠*t′*.

*Frequency:* with a typical mapping, the generated tone for the pair (*t*,*t′*) would be 24·sin(½π(*t*−*t′*)) semitones above C♯4 (so it will be between C♯2 and C♯6). However, for many sound tracks, I use a different mapping—as long as it is a non-increasing or non-decreasing function of *t*-*t′*.

*Amplitude:* let *r* be the Euclidean distance between *f*(*t*) and *f*(*t′*), and let *V* be the volume of a *d*-dimensional sphere with radius *r*. One could argue that in a hypothetical ideal locality-preserving space-filling curve, all points of that sphere would be covered by the curve section from *f*(*t*−½*V*) to *f*(*t*+½*V*). Therefore, we can say that *f*(*t′*) is “too far away” along the curve by a factor |*t*−*t′*| ⁄ (½*V*); we denote this factor by *s*. We now map this factor to an amplitude of, in principle, 0.01·*cap*(α*s*²), where α is a parameter that controls the sensitivity of the mapping (in practice, I used α values between 0.001 and 0.05), and *cap*(*x*) = *x* ⁄ (1+*x*) is a function that dampens higher values so that the amplitude stays below 0.01. However, within distance *r*, there will be a number of points proportional to *r*^{d} that generate waves of similar frequency and amplitude, and, unless they are somehow in phase, they will add up to a sound with an effective amplitude that is a sublinear but still rising function of *r*^{d}. If we would not compensate for that, points farther away would completely dominate the sound track due to their sheer number. Therefore, for each point *f*(*t′*), we divide the amplitude by *r*^{βd}, for a suitable parameter β. So far, for the three- to seven-dimensional cube grids, I got best results with β values between 1/2 and 1/3. (A value of 1/2 makes sense theoretically, since the standard deviation of *r*^{d} independent signals with standard deviation 1 is equal to *r*^{d/2}, but sometimes lower values work better in practice; I believe it might have something to do with how we perceive the loudness of mixtures of different frequencies.). For the permutation traversal orders, I used β=4.

*Phase:* to prevent unintended interferences, a random phase shift is applied to each tone.

A showcase of nice tracks can be found here.
Below is an additional set of five six-dimensional traversals (4^{6} points at 60 points per second, α=0.005). These do not sound nice, but they might be interesting to compare. They are roughly ordered from smoothly (and quite boring) rising sound at the top to less-smoothly rising and melodically more interesting sound at the bottom. Does this correspond to an ordering by locality-preserving properties? All space-filling curves and traversals are described in my manuscript on higher-dimensional curves.

mp3 | traversal |
---|---|

Beta Hilbert, 6D | |

Butz-Hilbert, 6D | |

Base-camp Hilbert, 6D | |

Inside-out traversal, 6D | |

Z-order traversal, 6D |

proximity_mapping_details.txt · Last modified: 2022/12/31 09:20 by administrator