After producing two albums with ADME, I pondered what else I could add to it. The most significant addition was the implementation of LFOs (low-frequency oscillators).
However, before I delve into that, I need to briefly discuss oscillators in general. When we hear a sound played over a loudspeaker, we are actually hearing the air pushed away by the speaker membrane, which moves back and forth at a frequency associated with a certain pitch. The smoothest path imaginable for the membrane would be a sine curve, which moves slowly when the membrane is stretched to its limits and quickly when it is unstretched, with steady velocity changes in between. Therefore, sine waves sound smooth. However, most commercial synthesizers also have triangle, saw, and square oscillators, which force the membrane to make more abrupt path changes, leading to harsher, sharper sounds. In ADME, I took it even further and allowed arbitrary oscillators, for example based on tangent, cycloid, or Clausen functions. The differences are small and often lost in the mix, and most oscillators I tested sounded like combinations of the classic ones, but I liked the possibility, especially since the oscillation math needed to be performed anyway.
LFOs work similarly but on a larger scale, modulating the shape of the sound at a slower rate. I tried both frequency and amplitude modulation, using oscillators to change both the pitch and the volume of the samples periodically between specified thresholds. This introduced a much wider variety of sounds, ranging from laser birds to lawn sprinklers to moist flutter-shite.
I also stumbled upon an interesting glitch, which can be heard at the beginning of the track “Centerm0st G0bbler.” Somehow, two samples were generated that were alike in every parameter but one. Playing them together on the left and the right channel creates a much more spatial effect than two unlike samples. The glitch can likely be attributed to similar random seeds, which I should have explored and exploited more in hindsight. Generally, I should have incorporated more means of control over the randomness.
Before I proceed with the self-criticism, let me introduce the second significant addition to this final version of ADME—the “A” in the acronym forming its very name. I managed to make any data files audible. Specifically, I allowed any unknown filetype to be interpreted as a Unicode text file, and the key was generated from the most common characters it contained. Anyone who has ever opened a binary file with a text editor knows what this looks like (sort of like this: î%®-;·î÷?Ð¥Íö5¿ÏYú[–‡×[°ze8¿WºS}). The zeros and ones are incorrectly interpreted as Unicode characters. The intriguing part is that program files often contain large segments and not-so-obvious patterns, forming melodies I had not heard before, as they could not be produced by experimental data, sounds, images, or actual hand-typed text. It was a cheap but effective trick, and I was able to feed ADME game libraries, PDF files, and more exotic types as input.
Again, I restricted myself to three channels in Cubase (left, center, right), not to overwhelm the listener any more than necessary. The resulting eleven tracks, dedicated to friends, ex-girlfriends, and certain game developers, became the final album “Pleasure Pressure.” This time, it was mastered with the help of AI (eMastered) to increase the loudness and fix some of the audio glitches I had let slide. My personal favorites are the first three tracks, with the later tracks slowly becoming worse and eventually unbearable. However, at the time, I was more infatuated with DEEP FL0YD, my visualizer project. It fit the ADME tracks like a glove because it functioned on similar principles, including arbitrary inputs, loose parameter ranges, and a high degree of randomness.
However, I felt that I had reached a dead end with ADME. It had no graphical user interface whatsoever, being entirely based on poorly commented MATLAB scripts. Moreover, it had become slow, much slower than the playtime of the samples it generated, making desired live and real-time applications impossible. Additionally, with every feature I implemented, the ratio of good to bad samples decreased. I had (and still have) no idea how to set up a machine learning model to filter the samples because I cannot formulate the criteria. Moreover, I noticed that the increasing number of bad samples might have been purely psychological. The samples I perceived as good were, in fact, the new sounds that I had not heard and used before, made interesting by their rarity and the fact that they were becoming rarer with each batch of samples I generated.
As a result, I decided to part ways with ADME (the MATLAB synth, that is!) and move on to new projects. From the beginning, it was mostly a proof of concept, and I had achieved the primary goal I had set for myself: turning any data file into sound.
It was only then that I realized how I had failed at my secondary goal: producing lowercase music. Therefore, I named the new genre UPPERCASE, which I am done with for now (the fourth album also being called “UPPERCASE” is pure coincidence as its genre is ambient noise). If I were a DJ, I would curate the finest parts from the top tracks and craft a dynamic remix set.
Leave a Reply