Happy New Year and a wonderful 2020 everyone!
As we have changed into a new decade I was reflecting on my compositions and how my style, skill, and attitudes have changed over the years.
I looked through my library of compositions and it just so happened that I had 3 very early pieces that I did back in high school (to much ridicule of my classmates at the time) all the way back “in the year 2000″… So it seemed like a good time, after 20 years of composing to reflect a little and look back in order to move forward.
Listening through the years was interesting, cringeworthy, and above all very educational. Since I didn’t want to share 10 hours of music (according to my iTunes playlist) I thought I’d take a creative approach. I decided to create 3 short etudes of using only the recordings of my own music. The first is using only the opening of each piece, the second only the ending, and the third and final one would “slide” through the years (see below for more on this).
To facilitate the project and to give each recording an equal chance regardless of my personal feelings about the piece, I created a number of scripts that would automate most of the process for me. These scripts can be found on GitHub (https://github.com/MIB1700/MRaudioChopperStitcher) and I am reproducing the readme/helpfile below.
As mentioned above, these scripts would chop my pieces into various segments (beginning, end, sliding) and then recombine them using long cross-fade times to merge the sounds, creating a seamless whole.
What was very interesting in the process was hearing how my technique and taste changed over time. This is a very audible process, at least to me and is very fascinating. Have a listen below and let me know what you think.
I am intending to ask composer colleagues if they would be interested in a similar treatment of their work. Also, since the scripts are freely available, anyone can play around with this idea and create their own meta pieces. Fair warning, the scripts are pretty bare-bone: there is no error-handling or input checking at all. See the GitHub readme for instructions on how to use the scripts (also reproduced below).
I. Catalogue: Start
Take the first 20 seconds of each track and crossfade them:
II. Catalogue: End
Take the last 20 seconds of each track and crossfade them:
III. Catalogue: Sliding
Take a sliding snapshot of each piece and crossfade them. The “sliding snapshot” increments a window from which to extract the excerpt a little bit further for each successive recording. In essence we are going to hear the opening of my early pieces, sliding on through the mid point of the pieces during about my undergrad and masters, and coming towards end of the pieces by the present.
There are a total of 103 audio files in each of the above pieces and they appear always in the same order in each of the etudes. The only things that differ are the location from where the excerpts were taken and the crossfade amount. I chose a rather extreme crossfade time that almost used the entire excerpt, which means that in the end multiple pieces (and of course multiple years of materials) will overlap and be presented at the same time. Earlier experiments with the scripts resulted in very long etudes where there was very little overlap. This meant I could better hear the individual compositions, but musically, or rather meta musically speaking it was not satisfying since I lost any sense of my development due to the excessive duration. In the end I decided that a good amount of time was between 3 and 4 minutes for each etude.
Scripts:
There are 4 separate scripts that need to be run from the terminal:
- MRaudioChopper
- MRaudioChopperSliding
- MRaudioStitcher
- MRaudioStitcherSliding
You need to have ffmpeg (https://ffmpeg.org) installed for the scripts to work.
The scripts are pretty basic and dumb. No serious error checking or input checking is done, therefor the following rules should be observed:
- The folder in which the script is run must only contain audio files
- Create 3 subfolders called:
- shortStart
- shortEnd
- shortSliding
MRaudioChopper
cd folder/with/sound/files/
navigate to the folder containing the sound files…
Run MRaudioChopper arg
where arg is an integer value that is the amount in seconds the audio file
is chopped to.
A positive value trims the file from the beginning and expects a folder named /shortStart
in the pwd
.
A negative value trims it from the end and expects a folder named /shortEnd in the pwd
.
The resulting file is transcoded to a .aiff at 44.1kHz
no checks are made if the files in the directory are actually soundfiles…
no checks are made if /shortStart exist
MRaudioChopperSliding
cd folder/with/sound/files/
navigate to the folder containing the sound files
Run MRaudioChopperSliding
(no arguments)
The script takes into account the number of files in the directory to decide on the starting
point of the trim -> each file will start a bit further into the file therefore sliding through
all files by the end. This means that for the first couple of files mostly the beginning of the files will be heard
and towards the last files only the ending of the files.
The duration of the files is 30sec 1%
of the total length of the current file.
The trimmed version is saved to /shortSliding
The resulting file is transcoded to a .aiff at 44.1kHz
no checks are made if the files in the directory are actually soundfiles…
no checks are made if /shortSliding exist
MRaudioStitcher
cd
to either /short[Start/End]
Run MRaudioStitcher
(no arguments)
Decides on a random cross-fade based on the length of the current file.
Final file is named output.aiff and should be moved and renamed before running this script again or it will be overwritten!!
MRaudioStitcherSliding
cd
to /shortSliding
Run MRaudioStitcherSliding arg
where arg is a positive integer value that is subtracted from the total length of the file, in seconds, and used as the cross-fade time
Final file is named output.aiff and should be moved and renamed before running this script again or it will be overwritten!!
Typical usage:
cd /folder/with/audio
MRaudioChopper 20
cd /folder/with/audio/shortStart
MRaudioStitcher
or
cd /folder/with/audio
MRaudioChopper -20
cd /folder/with/audio/shortEnd
MRaudioStitcher
or
cd /folder/with/audio
MRaudioChopperSliding
cd /folder/with/audio/shortSliding
MRaudioStitcherSliding 4
It is of course also possible to run MRaudioStitcherSliding
on /short[Start/End]:
cd /folder/with/audio
MRaudioChopper -20
cd /folder/with/audio/shortEnd
MRaudioStitcherSliding 2