2roundrobins / messiaen

norns script based on birdsong
MIT License
15 stars 1 forks source link

messiaen

norns script based on birdsong

main_gui2

single buffer delay / looper for mimicking birdsong @fellowfinch, @sonocircuit with GUI illustrations @mechtai.

HARDWARE / INSTALL

required

install directly from gitHub

or

in maiden type:

;install https://github.com/2roundrobins/messiaen

BIRD DELAY/LOOPER

The messiaen script takes it's name from the contemporary french composer and ornithologist Olivier Messiaen, whose work "Catalogue d'oiseaux" for solo piano is devoted to birds and the regions they inhabit. Messiaen, being an avid bird watcher and collector of their songs, transcribed many bird calls, songs, and chirps in vast quantities and used their musical qualities as the basis of his pieces. Focusing on the melody, harmonics, and textures of some bird species, I have tried to honour this practice by creating a script where the complexity and characteristics of birdsong translate to rate changes within the softcut's playheads.

Simply record a sound into norns and let the birds sing!

featured bird species

the script features the following bird species;

bird species scientific name transcriber
Eurasian wren Troglodytes troglodytes @fellowfinch AKA 2roundrobins
European robin Erithacus rubecula @fellowfinch AKA 2roundrobins
Eurasian blackbird Turdus merula @fellowfinch AKA 2roundrobins
Eurasian chaffinch Fringilla coelebs @fellowfinch AKA 2roundrobins
Great Tit Parus major @fellowfinch AKA 2roundrobins
Greenfinch Chloris chloris @fellowfinch AKA 2roundrobins
Willow Warbler Phylloscopus trochilus @fellowfinch AKA 2roundrobins

If you would like to add your own birds to the species, I suggest reading the MESSIAEN COMMUNITY PROJECT

MAIN SCREEN

bird_gui2

controls

recording

Recording is done by exceeding the recording threshold or by pressing K3. When you press K3, a symbol shall appear on the right side of your screen »)))» - this shows that it is in rec arm mode. Once you exceed the threshold, it will grab a very short snippet of recorded material and throw it into the softcut rates. By default, the threshold is set to -18.0 db, but you can freely change it by visiting the params menu or changing it in the code.

singing and bird selection

Press K2 and the bird will start singing a random birdsong based on its species repertoire. You can stop it by toggling K2 again. By moving E1 you can change the bird species and the corresponding birdsongs.

mood

Mood, which can be changed by turning E2, is simply bird's »feistiness«. The higher the mood value, the feistier the bird will act, resulting in more staccatto notes. Moving the value downward, however, shall make the birdsong a bit more "legato" and drawned out.

chirp

This is the general volume control of the bird.

bird info

bird_info_gui

Each birdsong has its own description that will hopefully help you understand the wacky rate changes. You can initiate this by holding K1 and pressing K3.

PARAMS

There are a couple of extra controls in the PARAMS section of norns. There you can change a couple of parameters, such as;

birds

You can change the bird control values for your main bird (the one that is shown on the main screen) and friendly visitors (birds that you can call through garden mode).

main level: changes the main level of all birds (even in garden mode)

main bird: changes solo bird species and its parameters

visitor: changes the birds in the garden and their parameters

bird submenu

Eeach chosen bird has a separate menu where you can manually add different parameters, such as;

bird: changes the active bird

level: changes the volume of birdsong

mood: changes the feistiness

position: changes the bird panning position in the stereo field

distance: alters the LPF cutoff frequency

recording

Change the recording threshold accordingly by default it's -18db and the input source (you can have it summed or double mono)

garden

garden_gui

Garden is a place of gathering. You can call different bird species and place them in your »garden«. Evoke garden mode in params or by pressing the key combo K1 + K2 on the main screen.

Workflow suggestion: what I like to do is pretty simple. Go into each visitor parameter and only chose a corresponding bird species, then move to the garden section and choose the position to auto. With this you can add a bit of bird activity. Once you invite friends it will position the bird and let them roam around the garden freely.

bird position

Can either be auto or manual. Manual is a great option if you want to manually position each visitor aroudn the stere field. Auto is great if you want to quickly have them positioned and have them move around the garden.

bird activity

The amount of LFO that is used within birds moving around. Simply said, the larger the value, livlier their movement is.

song density

Lower density means a longer pause between songs, while higher density results in more chaotic behavior.

feed birds

This controls the handling of your recorded material. You can still record new material by pressing K3 in garden mode

simultanious:the recorded material is fed to each bird simultaneously.

sequential:the recorded material is fed to birds sequentially.

random:the recorded material is fed to a random visitor.

forest

Here you can change the ambience file by loading your own enviroment. You can also turn off the enviromental sounds by turning to "no" on the plant forest option. For future use, if you do not want to have an enviroment in the background each time you boot up the script - you can freely change that in the code by going to the params section


 params:add_option("plant_forest", "plant?", {"no", "yes"}, 2)

and changing the 2 to 1.

MESSIAEN COMMUNITY PROJECT

The goal here is to make messiaen a community-driven script, where users can catalogue birdcalls of different species or extend the library of already existing species present in the script. If you would like to transcribe new bird species for the script and add them to the library, then you can do so by following the guide in the birds library (--lib.), or by following my method of birdsong-to-rates transcription process.

proposed methodology

Please note that this is my own method of doing it and I don't doubt there are better or even easier ways of transcribing and automating the process. I've worked with what I had and hopefully will refine or completely change the method for the better in the future. However, if you feel like starting somewhere, you can by following this short basic guide.

know your birds

Coming from a non-scientific background, I've spent quite some time studying birdcalls and reading on birdspecies that are present in this script. You can of course transcribe the birds quite easily by looking at a spectrogram and processing audio files, but I've found that having some insight into the characteristics and nuances of birds and their song proves rewarding, as well as essential when you fine-tune the timbre and rate changes with the limitation of softcut.

transcribing

Various sources helped me with transcription, however my main method was using the 12-tet ntor formula in lua, which simply translates the SC rates to ratio of 12-tet intervals. Using a mixture of Izotope RX, Melodyne and my ears I was able to transcribe the birdsong to a somewhat understandable notation and from there I moved to translating the results to softcut rates in code.

slowing down the audio files can help with more complex birdsong such as eurasian blackbird or european robin.

note: there is probably an easier way to transcribe these to rates and if you know a better method please let me know!

code

There are some instructions in the birds.lua file that you can find in the lib folder. since, the current script is built around this method it is crucial to follow it in such a way. This might change in the future, however...

1. add the <name> of your bird to the bird.names table. this will be displayed in the script.

2. create a table containing the birdsong parameters and add the <key> to the bird.keys table.

bird.<key> = {}

3. use the following template where,

- i is the index of the birdsong
- r is rate
- d is duration
- pb is pitchbend
- ft is fade time

bird.<key>[i] = {
  {r = 0, d = 0.2, pb = 0, l = 0.5, ft = 0.2},   
  {r = 0, d = 0.2, pb = 0, l = 0.5, ft = 0.2},   
  {r = 0, d = 0.2, pb = 0, l = 0.5, ft = 0.2},   
  {r = 0, d = 0.2, pb = 0, l = 0.5, ft = 0.2}
}

sharing

You can share the library either by opening an issue, stating which bird species and your github name, so I can properly credit you in any upcoming updates. gui illustration will also be provided from @mechtai

you can also get in touch with me via discord @fellowfinch or just join the server https://discord.gg/KtqJGGDR

also find me on lines...

CREDITS

REFERENCES