Gene2Music: Translation of Genes to Music

"The primary goal of this work is to convert genome-encoded protein sequences into musical notes in order to hear auditory protein patterns. Although there have been previous efforts to do this, one of the main problems has involved the large jumps between consecutive notes in a 20 note range (2.5 octaves) that results from a one-to-one amino acid-to-musical note assignment. Some other concerns include assigning rhythm, dynamics, and accompaniment according to the characteristics of the protein sequence.
We derived a reduced 13 base note range according to hydrophobicity and pairing of similar amino acids. The amino acid pairs were differentiated using variants of three-note chords, namely the root position and first inversion chords. A rhythm has been encoded into the musical sequence according to the organism’s codon distribution used in the genome-encoded protein sequence. Such a designation allows each amino acid to be represented by different note durations. The result is a set of rules that produces musical compositions that can be applied to any protein sequence [1]. As an example, we have used a prototype human protein, Thymidylate Synthase A (ThyA). A detailed description of our coding assignment can be found in the Project Evolution
In addition to the primary goal, we also aim to use this conversion to help make protein sequences more approachable and tangible for the general public and children. The project also opens opportunities for visually impaired scientists to access protein sequences more readily. We show and allow one to listen to examples of several proteins translated into music by these methods and also provide the opportunity for others to convert their own gene of interest using our GENE2MUSIC program.
  1. Takahashi R, Miller, JH: Conversion of Amino Acid Sequences in Proteins to Classical Music: Search for Auditory Patterns. Genome Biology 2007."


Brian Eno on the importance of limits

“We are born endowed with a lot of creativity. We then go through an education system that very carefully is designed to get rid of most of that creativity.” Brian Eno (56:00)


Nature Sound Form Wave by Anna Marinenko

"Last weekend I spent in nature. Sitting at riverside and watching the opposite side I've been very calm. Water was moving slowly and meditative. It made me thoughtful and concentrated, I noticed line of reed on the opposite riverside reflected in water, it was so similar to picture which I see everyday on my music player screen. This graphical expression of sound is called sound form wave. What a beautiful name! I didn't know it before. On my way home I was looking for other nature views."

Brilliant concept by Anna Marinenko  


ChucK Demos

ChucK Demos site by Arve Knudsen collects demonstrations of the ChucK music programming language, with the useful ability to play them back in your browser (provided that your browser supports the Web Audio API). In-browser execution of ChucK programs is made possible by the ChucKJS JavaScript library.

The site will host my Risset's Arpeggio code,  re-written to use only functions and no classes, since ChucKJS does not have support for the latter. Sporking was eliminated as well, since that too is not yet implemented.

The nice Arve version:


Inharmonique 1

I composed Inarmonique 1 as a first study on spectral composition using sine wave interference patterns, aka Jean-Claude Risset's harmonic arpeggio. I have written previously on this topic here
The particular approach of the piece is to use "spectral scans", that involve the beating effect, of inharmonic partials.

To get the result I implemented the famous Risset instrument in chucK, wich, compared to csound, in my opinion allows for greater freedom of instrument design and parameter setting, given its OOP nature. 

First of all I needed an efficient additive synthesizer to create the wavetables:

Then in a 'score' file, the core 'risset' function. Delta is the basis on which detunings are calculated:

Finally, in the same score we can experiment with the 'classic' examples, and 2 new ones:

Since there isn't (still) an efficient way to destroy an object in chucK, I used concurrency (spork) as a workaround.
To run the code smoothly, remember to 'add' (spork) the class file shred (the additive synth) before sporking the 'score' file.
Inarmonique 1 is based on an extension of the last instrument inharm().

Read more: