This blog is created by Vilbjørg Broch to keep track of my process during the artist
residency at the Institute for Electronic Music and Acoustics in Graz Austria. Possibly it will also
serve as a tool to share details for discussion along the way. It is not particularly ordered, and should not be viewed as a
final product. A description of the project can be found here:
Corporeity of Numbers
For binaural renderings it is necessary to listen with headphones. Stereo can be played on speakers or via headphones.
In the 3 months I will be working at IEM, I will get a chance to test some of my ideas for audio spatialization. The main objective with the process is to see how 3D projections of higher dimensional geometric and algebraic structures and transformations, can be implemented in audio projects. For the moment the realization of this happens in some very large Pure Data external objects, in which the encoding to Higher order ambisonics happens directly. I have used Aaron Heller's Python tool ADT2 to make the encoding functions. With this project I am not aiming at producing anything natural, but rather exploring new possibilities in algorithms. I guess what I am looking for is a sort of abstract geometrical and mathematical consequence. The project inter-connects the ideas of respectively resonance, instrument and algorithmic composition. In the coming time I have especially planned to look at structures and symmetries in the so called Lie Groups, and explore some of the vast algorithmical possibilities they offer. Audio Kaleidoscopes and time symmetries are guiding expressions.
I have been revisiting the hypercubes. I finished a PD external encoding for 5th order ambisonics using the 8D hypercube –
measure polytope dimension 8 (MP8) – to model a feedback delay network (FDN) - wave guide mesh , using the edges and vertices of the measure polytope as
respectively delay lines and junctions. This can not be run as realtime audio,
it is too processing intensive, but there is the -batch option with PD with which I can run it offline.
Iohannes Zmoelnig was so kind to point that out to me. In my ignorance I did not know this after all these years of using PD.
It works really well, the -batch option. I hear or see no clicks in the recordings.
This FDN -waveguide mesh is completely similar in structure to the ones I have realized based on lower dimensional
measure polytopes, more or less just exchanging the datasets for the particular polytope
The time varying effect comes from constantly rotating the polytope while it is projected onto 3D. The measure polytopes are so fundamental to euclidean
space that there are many algebraic cancellations by orthogonal projection. Still, when the system is rotation, I find an interesting progressive
variation. I have experimented with other projection methods along the way for the MPs. The coordinate-vectors of the polytope vertices in the 3D projection are
normalized to the unit sphere, S2, for the ambisonics encoding. Original lengths of the vectors are stored and used for amplitude scaling. For the
moment no further distance encoding is attempted, such as filtering. The lengths of the edges in the 3D projection are mapped
to delay lengths. DC block and simple lowpass filtering (moving average) is build in to the object.
The following 2 test recordings are made today. The MP8 and the MP6 to compare. The 2 PD MP objects both have
5 audio inlets. Each inlet is routed to one of the 256/64 vertices.
There is a method to set this routing. For this test recording audio input is a series of small envelopes(ms: at55, sus15, dec55) over 172Hz sine wave,
11 seconds between each. The pitch bendings derive from the changing delay lengths.
The maximum delay length is set up to around 5 sec (maximum due to buffer size) , but will mostly be a lot shorter.
MP8 test1 binaural ogg vorbis
MP6 test1 binaural ogg vorbis
The binaural renderings are done with the IEM binaural decoder vst, using Ardour. Decoded from 5th order, using default
plugin settings / no headphone equalization.
There is a density in the sound from the MP8 which I find interesting. The work towards understanding the structure of measure polytopes,
what regards their composition and connection of sub spaces, I mostly did that a few years back. The mathematician Coxeter did much research on these structures.
Another clue for me to map the measure polytopes completely was a publication by Glenn C. Smith :
Flatscape of Measure Polytopes The measure polytopes can be generated
recursively by tripling, which also shows the interesting relation between the binary and the ternary in these objects. For dimension n,
the number of vertices is 2^n and the total number of subspaces is 3^n. For the Mp8 the number of subspaces dimensions 0-8
(0:vertices.. 8:full polytope) is : {256, 1024, 1792, 1792, 1120, 448, 112, 16, 1} for MP6 it is : {64, 192, 240, 160, 60, 12, 1}.
flatspace data file
3D projection of 8 dimensional measure polytope, 2 projection views
animation of measure polytopes (made 2018) vimeo link
The following test recording is made with a new PD object using the structure of the 8D measure polytope. It is thought as an algorithmic
spatialization tool, and besides that it keeps the spatial reverberation function of the waveguide mesh. Though I will comment
that I think the reverberation is not very interesting in this way. The rotation of the polytope is set to be very slow, which means
that the delaylengths are not varying much, to avoid too much pitch bending effect. And with the orthogonal projection
the delaylengths only take on a few different values, hence a very 'square' effect, lets say. The purpose of this object is
to let the 5 audio inputs move on each their
path through the polytope, from vertice to vertice. Since each vertice is connected to 8 other vertices, there is a choice to be made each time
an input node arrives at a vertice.
The selection is made by iterating over finite prime fields using the spread-polynomials discovered by mathematician Norman Wildberger
- then taking the value modolus 8.
This family of polynomials can be recursively generated. The 2nd polynomial is the logistic equation, and I have made functions
for polynomials #2 - 20, which I have been using for different applications for a few years.
When using large prime numbers one can create large orbits getting close to white noise. But it is also possible
to use smaller primes and create smaller orbits. I think the audio PD object worked better when listening to this in the IEM Lehrstudio, than what I perceive from the binaural
rendering here. The samples used for this test are small bits of recordings of Arnold Schoenberg, which I found on the website of
the Schoenberg center based in Vienna. For now this is just meant as a test, and not an 'art work'. I will contact the center
and ask for permission if I will use these files at a later moment.
MP8 Path samples binaural ogg vorbis
MP8 Path perspective projection, samples binaural ogg vorbis The audio file linked above is similar to the one liked in the previous post, except that the measure polytope is first projected onto 4D by orthogonal projection, and from there onto 3D with perspective projection. This gives a much larger variation in delay lengths and distances which are used for level scaling. The following file is a test similar to the file linked in the post from 2021-05-31 Again with the exception that the projection method uses perpective projection. MP8 perspective projection, 172hz input binaural ogg vorbis
Graphics is a way for me to test some geometric functions before implementing the algorithms in audio projects. For the moment I am using OpenFrameworks to realize the graphics.. The simplex is in 2D a triangle, and in 3D it is a tetrahedron. It is a regular polytope which is simple to construct in all dimensions.
A first look at the symmetries of the E8 Lie group. First a single point, then 5 randomly generated points are reflected in the hyperplanes defined by the root vectors of the E8. The 8D structure is rotated while projected onto 3D. E8 is a massive mathematical object, with much details which are not apparent in this little animation
The following audio test is made with a waveguide mesh modeled after the simplex. This particular geometric structure has 23 vertices, so it is 22 dimensional. But for a simple construction it is layed into a 23 dimensional space. Imagine a 2D equilateral triangle constructed in a 3D coordinate system by putting its 3 vertices at (1,0,0),(0,1,0),(0,0,1). This is extendable upwards in the dimensions. The scattering junctions are time varying, they are done with reflections in rotating hyper planes. The whole system is rotating (slowly) as well in 23 dimensions, while projected onto 3D. The delay lengths are computed from the projected edge lengths, so there is a slight bit of time variation there too. This polytope gives a far greater variation by orthogonal projections than the MP family. There is also a method in the PD object to let all delay-lengths take the value of a prime number, but this recording is made with delay-lengths from the projected edge-lengths. The structure has 253 edges.( binomial-coeff(23,2) ) The input to the test are small envelopes over brown noise (lowpass filtered). The PD object has 5 audio inlets, which each are traveling around in the structure, in the same manner as with the MP8-path from 2021-06-14. The direct signal, as well as the signal from the mesh, are amplitude-scaled inverse proportionally to the node's distance from the origin. For the ambisonics encoding, each node point is 'normalized' to the unit sphere . I made the system 'one-way' so that each node/vertex has 11 incoming and 11 outgoing lines. For the vertices to have the same number of incoming and outgoing lines the simplex needs to have an odd number of vertices. For a prime number of vertices the 'one-way' passages through the system are easily created using modular arithmetics. The PD object needs some better lowpass filtering for the future. There are various methods in the object to scale delay lengths and to control decay. The decay can in this setup be controlled by shortening the vectors which define the reflecting hyperplanes. These vectors cannot be longer than 1, to ensure stability of the system. Below there is a drawing showing the structural idea for a simplex with 5 vertices. simplex23 noise impulses binaural ogg vorbis
The roots of the E8 are projected onto 3D. X, Y, Z - where z is the depth axis. The X-Y-plane is spanned by the eigenvectors of the Coxeter-element, respectively the real and imaginary part of each of the 8 eigenvectors. The animation moves through all the eigenvectors, it starts and ends with the X-Y-plane being the Coxeter plane. The Z-axis is orthogonal to the X-Y-plane. It has 6 dimensions (8 - 2) to rotate in. The colors depend on my ordering of the roots, which is not canonical / it could be done in many ways. One specific root and it's negative have the same color, but the hues are so close that it is a bit difficult to see that exactly. Again, the animation is made to test my functions for a spatialization application.
7sphere Revisited Binaural rendering of composition for 5th order ambisonics - 8min55 7sphere_revisited.ogg Practically everything is generated with the 8 dimensional algebra the octonions. The octonions have been with me for several years. In 2016 I started the audio-visual performance 7sphere Journey. In the winter of 2020, while working at CCRMA, I made the piece 7sphere Karma. For this composition I have refined the tools which I developed spread over several years. Orbits in 8D space, generated with octonion multiplication, are projected and mapped for synthesis. Time structures are generated with octonion multiplication over finite fields of varying sizes. The sound enters a waveguide mesh for spatialization and reveberation, again created with octonion orbits. In this mesh I have parted the delay-lengths in to 2 groups so that it is possible to smoothly vary how large a part of the delay-lengths will vary with the rotation of the mesh.
Syntropy77 Binaural rendering of composition for 5th order ambisonics - 5min15 syntropy77.ogg The compositional structure for this piece was made last winter. But it is here reworked somewhat and realized through the Simplex23 waveguide mesh described above. The piece explores harmonic structures generated from the numbers 7 and 11, which usually do not have a place in traditional tuning systems. The synthesis has bits af quasicrystal waveforms, non-periodic order.
This animation is similar to the one above, showing the root vectors of the E8. But besides the 240 roots of the E8 it includes the 6720 edges of the Gosset polytope. This animation moves through the eigenvectors of the Coxeter element twice in different order. To my best understanding the edges of the Gosset polytope make a triangulation of the 7sphere into equally sized equilateral triangles. So that every root is the vertex of a high number of equilateral triangles. I still have to compute that number.