Integrate CCN 2025-2026 files

This commit is contained in:
2025-11-13 21:25:52 +01:00
parent 7a0d89735a
commit e1bfb17b3c
26 changed files with 3791 additions and 1071 deletions

View File

@ -0,0 +1,477 @@
_ _ _ _ _____ _____ _ _ _____ _
| | (_) | (_) / __ \/ __ \| \ | | / __ \ | |
| | ___ _____ ___ ___ __| |_ _ __ __ _ | / \/| / \/| \| | | / \/ ___ __| | ___
| | | \ \ / / _ \ / __/ _ \ / _` | | '_ \ / _` | | | | | | . ` | | | / _ \ / _` |/ _ \
| |___| |\ V / __/ | (_| (_) | (_| | | | | | (_| | | \__/\| \__/\| |\ | | \__/\ (_) | (_| | __/
\_____/_| \_/ \___| \___\___/ \__,_|_|_| |_|\__, | \____/ \____/\_| \_/ \____/\___/ \__,_|\___|
__/ |
|___/
; Ce document contient toutes les informations sur les fonctions (mots) utilisables
; dans la plateforme de livecoding.
; Vous pouvez copier-coller les exemples dans le fichier "livecode.orc".
_
| |
| |_ ___ _ __ ___ _ __ ___
| __/ _ \ '_ ` _ \| '_ \ / _ \
| || __/ | | | | | |_) | (_) |
\__\___|_| |_| |_| .__/ \___/
| |
|_|
; Pour modifier le tempo, il faut utiliser la fonction de tempo
; Par défaut, le tempo est de 1, ce qui signifie 1 pulsation par seconde
; Si on met 2, la pulsation est donc de ... 2 pulsations par secondes
tempo(2) ; [0.001 - 10]
; La modification du tempo modifiera la vitesse du rythme de TOUS les sons en train d'être joués
; Un attracteur chaotique gère d'autres paramètres du temps, on peut changer sa vitesse en écrivant
; Il influence notamment la vitesse d'évolution des modes "sauvages" (voir les Sons)
chaos_speed(4) ; [0.1 - 100]
; Pour entendre le tempo, on peut utiliser le metronome (sans accent ici pour éviter l'erreur)
metronome
_____
/ ___|
\ `--. ___ _ __ ___
`--. \/ _ \| '_ \/ __|
/\__/ / (_) | | | \__ \
\____/ \___/|_| |_|___/
; "ping" - son artificiel percussif brillant
; Paramètres :
; - Rythme
; - Volume [0-1]
; - Hauteur (note) [0-100]
; - Durée [>0]
ping(beat(4), 0.3, 50, 1/4)
; "buzzy" - Un son plus doux que Ping et dont le rythme interne peut être imprévisible
; Paramètres :
; - Rythme
; - Volume [0-1]
; - Hauteur (note de base de l'accord) [0-100]
; - Durée [>0]
buzzy(beat(1/4), 0.5, 50, 4)
; "glidy" - un son qui glisse vers la note choisie
; - Rythme
; - Volume [0-1]
; - Hauteur (note de base de l'accord) [0-100]
; - Durée [>0]
glidy(beat(1), 0.5, 60, 1)
; "darkwave" - une vague sombre, qui gronde quand elle devient forte
; - Rythme
; - Volume [0-1]
; - Hauteur (note de base de l'accord) [0-100]
; - Durée [>0]
darkwave(beat(1/4), 0.6, 30, 4)
; "brightwave" - une vague brillante et lumineuse
; - Rythme
; - Volume [0-1]
; - Hauteur (note de base de l'accord) [0-100]
; - Durée [>0]
brightwave(beat(1/4), 0.6, 30, 4)
; "buzzwave" - une vague qui fait bzzz
; - Rythme
; - Volume [0-1]
; - Hauteur (note de base de l'accord) [0-100]
; - Durée [>0]
buzzwave(beat(1/4), 0.6, 30, 4)
; "noisywave" - une vague avec un bruit de fond, comme l'écume de la mer
; - Rythme
; - Volume [0-1]
; - Hauteur (note de base de l'accord) [0-100]
; - Durée [>0]
noisywave(beat(1/4), 0.6, 30, 4)
; "crunchy" - un son percussif qui croustille
; - Rythme
; - Volume [0-1]
; - Hauteur (note de base de l'accord) [0-100]
; - Durée [>0]
crunchy(beat(4), 0.6, 20, 1/4)
; Strike : un son percussif et très saturé (distordu, sauvage)
; Paramètres :
; - Rythme
; - Volume [0-1]
; - Hauteur (note) [0-100]
; - Durée [>0]
strike(beat(1), 0.9, 8, 1)
; Smooth : un son doux, assez rond
; Paramètres :
; - Rythme
; - Volume [0-1]
; - Hauteur (note) [0-100]
; - Durée [>0]
smooth(beat(1/3), 0.5, 20, 4)
; Bounce : un son qui rebondit et qui brille !
; Paramètres :
; - Rythme
; - Volume [0-1]
; - Hauteur (note) [0-100]
; - Durée [>0]
bounce(beat(1/2), 0.5, 30, 3)
______ _ _ _ _ _
| ___| | | (_) | | | | | |
| |_ ___ _ __ ___| |_ _ ___ _ __ ___ __| | ___ _ __ _ _| |_| |__ _ __ ___ ___
| _/ _ \| '_ \ / __| __| |/ _ \| '_ \/ __| / _` |/ _ \ | '__| | | | __| '_ \| '_ ` _ \ / _ \
| || (_) | | | | (__| |_| | (_) | | | \__ \ | (_| | __/ | | | |_| | |_| | | | | | | | | __/
\_| \___/|_| |_|\___|\__|_|\___/|_| |_|___/ \__,_|\___| |_| \__, |\__|_| |_|_| |_| |_|\___|
__/ |
|___/
; "beat" - pulsation régulière
;Paramètres :
; - Vitesse (par rapport au tempo) [> 0]
beat(2) // 2 pulsations par temps
; "swing" - pulsation régulière + une pulsation swing
; Paramètres :
; - Vitesse (par rapport au tempo) [> 0]
; - Swing [0 - 1]
swing(2, 0.75)
swing(2, 3/4)
; "rhythm" - rythme écrit sous la forme d'une liste
; Paramètres :
; - liste de 1 et 0 sous forme d'un "array"
; - Vitesse (par rapport au tempo) [> 0]
rhythm(array(1, 0, 0, 1, 0, 0, 1, 1 ), 1)
; Peut aussi s'écrire
rhythm(
array(1, 0, 0, 1),
1)
; "drunk" - rythme aléatoire mais quand même lié au tempo
; Paramètres :
; - Vitesse (par rapport au tempo) [> 0]
; - Taux d'aléatoire [0 - 1]
drunk(2, 0.8)
; "euclidian" - rythmes basés sur la division euclidienne
; (voir https://dbkaplun.github.io/euclidean-rhythm/)
; Paramètres :
; - Vitesse [> 0]
; - Nombre de "steps" [> 0]
; - Division du cercle [> 0]
; - Rotation [0 - 1]
euclidian(2, 3, 7, 0)
; "chaos_rhythm" - rythmes basés sur l'horloge chaotique principale
; Paramètres
; - Choix de l'horloge [1, 2 ou 3]
; - Seuil de détection [0 - 1]
chaos_rhythm(1, 0.6)
______ _ _ _ _ _
| ___| | | (_) | | | | | |
| |_ ___ _ __ ___| |_ _ ___ _ __ ___ __| | ___ ___ ___ _ __ | |_ _ __ ___ | | ___
| _/ _ \| '_ \ / __| __| |/ _ \| '_ \/ __| / _` |/ _ \ / __/ _ \| '_ \| __| '__/ _ \| |/ _ \
| || (_) | | | | (__| |_| | (_) | | | \__ \ | (_| | __/ | (_| (_) | | | | |_| | | (_) | | __/
\_| \___/|_| |_|\___|\__|_|\___/|_| |_|___/ \__,_|\___| \___\___/|_| |_|\__|_| \___/|_|\___|
; "chance" - fait évoluer un paramètre aléatoirement - comme un lancer de dé
; Paramètres :
; - Minimum - valeur minimum possible [< Maximum]
; - Maximum - valeur maximum possible [> Minimum]
chance(1, 5) // Donnera à chaque fois un nombre (décimal) entre 1 et 5 différent
; "trajectory" - part d'une valeur et évolue progressivement vers une autre
; Paramètres :
; - Départ - valeur de départ
; - Durée - Durée totale de l'évolution (en nombre de temps) [> 0]
; - Arrivée - Valeur finale
trajectory(0, 10, 1) // évolue de 0 à 1 progressivement en 10 temps
; "oscillation" - va et vient entre deux valeurs
; Paramètres :
; - Minimum : valeur minimum [< Maximum]
; - Maximum : valeur maximum [> Minimum]
; - Vitesse (par rapport au tempo) [> 0]
oscillation(10, 30, 1/2) // évolue progressivement entre 10 et 30 avec un cycle de 2 temps
; "alternate" - alterne entre deux valeurs à une certaine vitesse et avec une proportion
; Paramètres :
; - Valeur 1
; - Valeur 2
; - Vitesse (par rapport au tempo) [> 0]
; - Proportion de la valeur 1 [0 - 1] -
; par exemple une proportion de 0.75 fait qu'on restera 3/4 du temps sur la valeur 1, et 1/4 du temps sur la valeur 2
alternate(50, 55, 1, 0.75) // alterne entre 50 et 55 tous les temps (75% du temps sur valeur 1)
; "sequence" - lit une suite de valeurs (utile pour les notes et mélodies)
; Paramètres :
; - liste de valeurs
; - Vitesse (par rapport au tempo) [> 0]
sequence(array(30, 33, 35), 1)
; "chaos_control" - génère une valeur qui change en permanence en fonction de l'attracteur
; chaotique principal
; Paramètres :
; - Choix de l'attracteur [1, 2 ou 3]
; - Valeur minimum
; - Valeur maximum
chaos_control(1, 0.5, 1) ; Pour du volume
chaos_control(2, 40, 60) ; Pour une note
_
| |
_____ _____ _ __ ___ _ __ | | ___ ___
/ _ \ \/ / _ \ '_ ` _ \| '_ \| |/ _ \/ __|
| __/> < __/ | | | | | |_) | | __/\__ \
\___/_/\_\___|_| |_| |_| .__/|_|\___||___/
| |
|_|
crunchy(beat(4), 0.5, 10, 1)
tempo(0.5)
darkwave(beat(1/2), 0.5, 30, 2)
darkwave(beat(1/2), 0.5, 33, 2)
darkwave(beat(1/4), 0.5, 40, 4)
chaos_speed(1)
noisywave(beat(1/4), 0.5, 50, 4)
noisywave(beat(1/4), 0.5, 55, 4)
brightwave(beat(1/2), 0.7, 70, 1)
buzzwave(beat(1/2), 0.8, 60, 2, 2)
_ _ _ _ _ _ _
/\| |/\ /\| |/\ /\| |/\ /\| |/\ /\| |/\ /\| |/\ /\| |/\
\ ` ' / \ ` ' / \ ` ' / \ ` ' / \ ` ' / \ ` ' / \ ` ' /
|_ _|_ _|_ _|_ _|_ _|_ _|_ _|
/ , . \ / , . \ / , . \ / , . \ / , . \ / , . \ / , . \
\/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/
/*
crunchy(beat(4), 0.6, 10, 1, 2)
crunchy(beat(8), 0.6, 50, 1, 2)
crunchy(beat(8), 0.6, 55, 1)
*/
;crunchy(beat(8), 0.8, sequence(array(60, 57, 57, 63, 58), 8), 1)
tempo(.5)
chaos_speed(7)
/*
brightwave(beat(1/8), 0.5, 50, 3, 3)
brightwave(beat(1/8), 0.5, 53, 3)
brightwave(beat(1/8), 0.5, 57, 3, 3)
*/
/*
glidy(beat(1/2), 0.7, 60, 2)
glidy(beat(1/3), 0.7, 64, 2)
glidy(beat(1/4), 0.7, 65, 2)
*/
/*
darkwave(beat(1/4), 0.6, 30, 5, 1)
darkwave(beat(1/4), 0.6, 32, 5, 1)
darkwave(beat(1/4), 0.6, 27, 5)
darkwave(beat(1/4), 0.6, 20, 5)
*/
_ _ _ _ _ _ _
/\| |/\ /\| |/\ /\| |/\ /\| |/\ /\| |/\ /\| |/\ /\| |/\
\ ` ' / \ ` ' / \ ` ' / \ ` ' / \ ` ' / \ ` ' / \ ` ' /
|_ _|_ _|_ _|_ _|_ _|_ _|_ _|
/ , . \ / , . \ / , . \ / , . \ / , . \ / , . \ / , . \
\/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/
/*
darkwave(beat(1/4), .7, 60, 4)
darkwave(beat(1/6), .7, 42, 4)
darkwave(beat(1/4), .7, 67, 4)
darkwave(beat(1/6), .7, 10, 4)
crunchy(beat(4), 0.9, 10, 1, 2)
crunchy(beat(8), 0.7, 50, 1, 2)
crunchy(beat(8), 0.7, 55, 1)
crunchy(beat(8), 0.7, sequence(array(60, 57, 57, 63, 58), 8), 1)
tempo(.125)
chaos_speed(8)
ping(beat(4), 1, sequence(array(50, 55, 50, 57, 50, 58), 1), 1)
*/
/*
brightwave(beat(1/8), 0.5, 50, 3, 3)
brightwave(beat(1/8), 0.5, 53, 3)
brightwave(beat(1/8), 0.5, 57, 3, 3)
*/
/*
brightwave(beat(1/8), 0.5, 50, 3, 3)
brightwave(beat(1/8), 0.5, 53, 3)
brightwave(beat(1/8), 0.5, 57, 3, 3)
*/
/*
tempo(1)
glidy(beat(1/2), 0.3, 60, 2)
glidy(beat(1/3), 0.3, 64, 3)
glidy(beat(1/4), 0.4, 65, 4)
glidy(beat(1/7), 0.5, 40, 5)
glidy(beat(1/5), 0.4, 44, 6)
glidy(beat(1/6), 0.5, 45, 7)
*/
/*
noisywave(beat(1/4), 0.9, 20, 6)
noisywave(beat(1/4), 0.9, 48, 6)
noisywave(beat(1/8), 0.9, 34, 6)
noisywave(beat(1/8), 0.9, 39, 6)
*/
_ _ _ _ _ _ _
/\| |/\ /\| |/\ /\| |/\ /\| |/\ /\| |/\ /\| |/\ /\| |/\
\ ` ' / \ ` ' / \ ` ' / \ ` ' / \ ` ' / \ ` ' / \ ` ' /
|_ _|_ _|_ _|_ _|_ _|_ _|_ _|
/ , . \ / , . \ / , . \ / , . \ / , . \ / , . \ / , . \
\/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/
tempo(1)
chaos_speed(1)
darkwave(beat(1/4), .5, 60, 4)
darkwave(beat(1/6), .65, 36, 6)
darkwave(beat(1/8), .65, 38, 8)
darkwave(beat(1/4), .65, 67, 4)
darkwave(beat(1/6), .65, 24, 6)
darkwave(beat(1/3), .65, 40, 4)
darkwave(beat(1/5), .65, 31, 5)
crunchy(beat(4), 1, 12, 1/2, 2)
crunchy(beat(1), 1, 22, 1)
crunchy(beat(8), 0.6, 50, 1/2, 2)
crunchy(beat(8), 0.6, 55, 1/2)
crunchy(beat(8), 0.7, sequence(array(60, 57, 57, 63, 58), 8), 1/2)
crunchy(beat(8), 0.8, sequence(array(72, 48, 74, 75, 46, 50, 78), 8), 1/2)
/*
tempo(.125)
chaos_speed(8)
ping(beat(4), 1, sequence(array(50, 55, 50, 57, 50, 58), 1), 1)
*/
/*
brightwave(beat(1/8), 0.5, 50, 3, 3)
brightwave(beat(1/8), 0.5, 53, 3)
brightwave(beat(1/8), 0.5, 57, 3, 3)
*/
/*
brightwave(beat(1/8), 0.5, 50, 3, 3)
brightwave(beat(1/8), 0.5, 53, 3)
brightwave(beat(1/8), 0.5, 57, 3, 3)
*/
/*
tempo(1)
glidy(beat(1/2), 0.3, 60, 2)
glidy(beat(1/3), 0.3, 64, 3)
glidy(beat(1/4), 0.4, 65, 4)
glidy(beat(1/7), 0.5, 40, 5)
glidy(beat(1/5), 0.4, 44, 6)
glidy(beat(1/6), 0.5, 45, 7)
*/
/*
noisywave(beat(1/4), 0.9, 20, 6)
noisywave(beat(1/4), 0.9, 48, 6)
noisywave(beat(1/8), 0.9, 34, 6)
noisywave(beat(1/8), 0.9, 39, 6)
*/
/*
Exemple réalisé en première séance à l'école du Centre
crunchy(beat(2), 0.9, chance(15, 80), 0.5)
buzzy(beat(1/4), 0.8, 10, 4)
tempo(4)
glidy(beat(1), 0.6, 60, 1)
darkwave(beat(1/4), 0.9, 30, 4)
*/
/*
ping(beat(8), 1, 10, 1/8)
ping(beat(8), 1, sequence(array(20, 22), 1/4), 1/8)
crunchy(beat(4), 0.9, chance(30, 80), 1/6)
crunchy(beat(4), 0.8, chance(30, 80), 1/6)
kick(beat(2), 0.5)
snare(beat(1), 0.8, 100, 1/10)
*/
/*
noisywave(beat(1/4), 0.6, 80, 4)
noisywave(beat(1/8), 0.6, 60, 8)
noisywave(beat(1/6), 0.6, 40, 6)
snare(rhythm(array(1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1), 8), 0.5)
kick(rhythm(array(0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0), 8), 0.7)
*/
/*
; MELODY
ping(beat(2), oscillation(.5, 1, 1/2), sequence(array(52, 55, 50, 48, 50)+sequence(array(2, 0), 2), 2), oscillation(.5, 2, 1/2))
; CHORD
buzzwave(beat(4), oscillation(0, .5, 1/6), sequence(array(52, 55, 50, 48, 50)-24, 1/2), 1)
buzzwave(beat(4), oscillation(0, .5, 1/3), sequence(array(52, 55, 50, 48, 50)-7, 1/2), 2)
; BUZZ
noisywave(beat(1/4), .5, sequence(array(52, 55), 2), 8)
*/
_ _ _ _ _ _ _
/\| |/\ /\| |/\ /\| |/\ /\| |/\ /\| |/\ /\| |/\ /\| |/\
\ ` ' / \ ` ' / \ ` ' / \ ` ' / \ ` ' / \ ` ' / \ ` ' /
|_ _|_ _|_ _|_ _|_ _|_ _|_ _|
/ , . \ / , . \ / , . \ / , . \ / , . \ / , . \ / , . \
\/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/ \/|_|\/
; Rythme 1
kick(swing(1, 0.75), 0.5)
snare(swing(0.5, 0.25), 0.7)
hihat( rhythm(array(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1), 4), 0.5, 95, 0.1)
; Ping à corriger
; Noisywave avec mode sauvage ou son grave avec mode sauvage aussi

View File

@ -0,0 +1,162 @@
kick(swing(1, 0.75), 0.5)
snare(swing(0.5, 0.25), 0.7)
hihat( rhythm(array(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1), 4), 0.3, 95, 0.05)
tempo(0.5)
chaos_speed(0.5)
; Base rythmique
crunchy(beat(8), 1, 8, 1/4)
crunchy(beat(2), 1, 20, 1/2)
crunchy(beat(8), 1, trajectory(60, 15, 30), 1/4)
crunchy(beat(4), 1, 23, 1/4)
; Mélodie aléatoire
buzzy(beat(8), 0.8, chance(60, 90), 1/16)
buzzy(beat(8), 0.8, chance(70, 80), 1/16)
buzzy(beat(4), 0.8, trajectory(80, 10, 60), 1/8)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ping(beat(1), 0.8, 50,1)
ping(beat(1/2), 0.2, 90,2)
ping(beat(4), 0.9, 41, 1/3)
ping(beat(4), 0.9, 46, 1/4)
ping(beat(1/2), 0.8, 37,3)
ping(beat(1/4), 0.8, 60,4)
ping(beat(1/2), 0.8, 62,2)
ping(beat(1/6), 0.8, 67,6)
buzzwave(beat(1/3), 0.8, sequence(array(20, 25), 1), 3)
tempo(1)
snare(swing(2, 0.25), 0.9)
kick(swing(0.5, 0.75), 0.5)
hihat( swing(4, 0.25), 0.6, chance(80, 100), 0.1)
hihat( beat(8), 0.8, 100, 0.05)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Lunégroove
noisywave(beat(1/4), 0.9, sequence(array(20, 30, 23, 27), 1/4), 4)
noisywave(beat(1/8), 0.9, sequence(array(60, 60, 65, 53), 1/8), 8)
noisywave(beat(1/6), 0.9, sequence(array(40, 43, 46), 1/6), 6)
glidy(rhythm(array(1, 1, 1, 0, 0, 1), 2), 0.5, sequence(array(70, 75, 53, 51), 3), 1/4)
glidy(rhythm(array(0, 1, 0, 1, 1, 1), 2), 0.5, sequence(array(73, 65, 60), 3), 1/2)
brightwave(beat(1/4), 1, sequence(array(15, 18, 23), 1/4), 7)
snare(rhythm(array(1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1), 4), 0.5)
kick(rhythm(array(0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0), 2), 0.7)
tempo(1)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; LA VOITURE EN PANNE !!!!!!
tempo(1.5)
kick(rhythm(array(1, 0, 0, 0, 0, 1, 0, 0), 2), 0.45)
snare(rhythm(array(0, 0, 1, 0, 0, 0, 1, 0), 2), 0.25)
hihat(beat(4), 0.15, 95, 1/12)
ping(beat(2), 0.45, sequence(array(20, 21), 1/8), .5)
ping(beat(1/4), .95, sequence(array(20, 21)-12, 1/8), 4)
crunchy(beat(1), .95, sequence(array(20, 18, 28, 21), 1/7)+12*sequence(array(1, 2, 3), 1), 1+sequence(array(1, 2, 3), 1))
brightwave(swing(1/8, .95), 0.55, sequence(array(21, 20, 25, 30)+24, 1/8), 6)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; on va faire fortune dans le reggae
tempo(1)
crunchy(rhythm(array(1, 1, 1, 1, 1, 1, 0, 0), 8), 0.8, sequence(array(11, 17), 1/2), 1/4)
ping(rhythm(array(0, 1), 2), 0.9, sequence(array(43, 41), 1/2), 0.25 )
ping(rhythm(array(0, 1), 2), 0.9, sequence(array(47, 45), 1/2), 0.25)
ping(rhythm(array(0, 1), 2), 0.9, sequence(array(50, 48), 1/2), 0.25)
glidy(beat(1/4), 0.2, sequence(array(49, 55, 52, 67, 46, 70), 1/4), 6)
kick(rhythm(array(1, 0), 2), 0.8)
snare(beat(1), 0.6)
hihat(rhythm(array(1, 1, 1, 0, 1, 0), 6), 0.7, 90, 0.1)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Ardoise
tempo(1.25)
kick(rhythm(array(1, 1, 0, 0, 0, 1), 4), .5)
snare(beat(1/2), .5)
hihat(rhythm(array(0, 1, 1, 0, 1, 1, 1), 4), .25, 95-4*swing(1, .25), 1/8)
ping(beat(6), .35, sequence(array(48, 51, 55, 60, 48, 51, 55, 60, 47, 51, 55, 60, 44, 51, 55, 60), oscillation(6, 12, 1/32)), oscillation(.25, 3, 1/8))
ping(beat(6), .35, sequence(array(48, 51, 55, 60, 48, 51, 55, 60, 47, 51, 55, 60, 44, 51, 55, 60), oscillation(2, 16, 1/24)), oscillation(.25, 3, 1/3))
darkwave(beat(3), .85, sequence(array(48, 51, 55, 60, 47, 51, 55, 60, 44, 51, 55, 60)-24, oscillation(3, 9, 1/48)), oscillation(1, 3, 1/3))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;KS
chaos_speed(1)
$tempo = .5
;ks(beat(1), 0.8, 44, .5)
ks(beat(.25), 0.8, 16, .5)
ks(beat(1), 0.9, 52, .5)
ks(beat(3), 0.9, 64, 1)
ks(beat(4), 0.9, 83, 2)
;ks(beat(8), 0.5, sequence(array(75, 83, 80, 85, 83), 1), .25)
;ks(beat( alternate(.5, 2, .5, 0.5) ), 0.8, 30, 1)
;ping(beat(4), 0.8, 72, .8)
;crunchy(beat(16), 0.6, trajectory(16, 4, 32), .5)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;MOBILE 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
$tempo = 0.25
klf = abs(lfo:k(1, 0.05))
kilf = 1 - klf
strike(beat(1/16), 0.9 * klf , alternate(40, 28, 1/4, 0.5), 16)
strike(beat(1/16), 0.9 * klf , alternate(6, 18, 1/4, 0.5), 16)
strike(beat(1/12), 0.9 * kilf , alternate(30, 18, 1/8, 0.5), 12)
kmet = drunk(0.125, 0.25)
ktog init 0
krhythm_mult init 1
if(kmet == 1 ) then
ktog = 1 - ktog
if(rint:k(1, 6) == 1) then
krhythm_mult = rint:k(1, 3)
endif
endif
if(ktog == 1) then
strike( rhythm(array(1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1), 4 * krhythm_mult),
oscillation(0.1, 0.6, 10),
sequence(array(60, 64, 66, 67, 69), 8) +
sequence(array(2, 3, 8, 1, 5, 10), 3.3), 1/2)
else
buzzy(beat(krhythm_mult * 2), 0.9, oscillation(40, 70, 10), 1)
buzzy(beat(1/2), 0.8 * klf , alternate(44, 33, 1/4, 0.5), 2)
buzzy(beat(1/3), 0.8 * kilf , alternate(24, 21, 1/8, 0.5), 2)
endif
smooth(drunk(1/10, 0.3), 0.5, sequence(array(60, 30, 64, 67), 1), 8)
smooth(drunk(1/9, 0.3), 0.5, sequence(array(48, 18, 66, 70, 65), 1/2), 8)

View File

@ -0,0 +1,9 @@
░▒▓████████▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓██████▓▒░░▒▓██████████████▓▒░░▒▓███████▓▒░░▒▓█▓▒░ ░▒▓████████▓▒░░▒▓███████▓▒░
░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░
░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░
░▒▓██████▓▒░ ░▒▓██████▓▒░░▒▓████████▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓███████▓▒░░▒▓█▓▒░ ░▒▓██████▓▒░ ░▒▓██████▓▒░
░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░
░▒▓█▓▒░ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░ ░▒▓█▓▒░
░▒▓████████▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓████████▓▒░▒▓████████▓▒░▒▓███████▓▒░

View File

@ -0,0 +1,159 @@
gktempo init 1
gkphasor init 0
gkslowph init 0
gkbeat init 0
gkgain init 0.05
#define tempo #gktempo#
instr metronome_instr
kenv = expseg(1.01, p3, 0.01) - 0.01
asig = oscili(0.3, 3000) * kenv
chnmix(asig, "out1")
chnmix(asig, "out2")
endin
opcode metronome, 0, 0
kmet = gkbeat
if(kmet == 1) then
schedulek("metronome_instr", 0, 0.1)
endif
endop
instr gclock
gkphasor = phasor:k(gktempo)
gkslowph = phasor:k(gktempo / 100)
gkbeat = metro:k(gktempo)
endin
schedule("gclock", 0, -1)
opcode reset_clock, 0, 0
turnoff2( nstrnum("gclock"), 0, 0)
schedule("gclock", 0.01, -1)
endop
instr audio_out
a1 = clip:a(chnget:a("out1"), 0, 0.99);limit:a(chnget:a("out1"), -1, 1) ;* gkgain
a2 = clip:a(chnget:a("out2"), 0, 0.99);limit:a(chnget:a("out2"), -1, 1) ;* gkgain
chnclear("out1")
chnclear("out2")
outs a1, a2
endin
schedule("audio_out", 0, -1)
gklorenz_speed init 0.00001
gklorenz_x init 0
gklorenz_y init 0
gklorenz_z init 0
gkmirlorenz_x init 0
gkmirlorenz_y init 0
gkmirlorenz_z init 0
galorenz_x init 0
galorenz_y init 0
galorenz_z init 0
opcode lorenz_ctl, aaa, kppp
kspeed, ix, iy, iz xin
kspeed = limit:k(kspeed, 0.0000001, 0.09)
ksv init 10
krv init 28
kbv init 2.6
; kh init 0.001
kh = kspeed
ix = (ix != 0) ? ix : 0.6
iy = (iy != 0) ? iy : 0.6
iz = (iz != 0) ? iz : 0.6
iskip = 1
ax1, ay1, az1 lorenz ksv, krv, kbv, kh, ix, iy, iz, iskip
ax1 /= krv
ay1 /= krv
az1 /= krv
xout ax1, ay1, az1
endop
#define LORENZ_TIME #720#
instr lorenz_sched
ix = random:i(0, 1)
iy = random:i(0, 1)
iz = random:i(0, 1)
ax, ay, az lorenz_ctl gklorenz_speed, ix, iy, iz
gklorenz_x = lag(k(ax), 0.01)
gklorenz_y = lag(k(ay), 0.01)
gklorenz_z = lag(k(az), 0.01)
gkmirlorenz_x = mirror:k(gklorenz_x, 0, 1)
gkmirlorenz_y = mirror:k(gklorenz_y, 0, 1)
gkmirlorenz_z = mirror:k(gklorenz_z, 0, 1)
galorenz_x = ax
galorenz_y = ay
galorenz_z = az
schedule("lorenz_sched", $LORENZ_TIME, $LORENZ_TIME)
endin
schedule("lorenz_sched", 0, $LORENZ_TIME)
#define FQ #
isavage_mode init p6
ifq mtof inote
ksavage init 0
if(isavage_mode == 1) then
ksavage = savage_1()
elseif(isavage_mode == 2) then
ksavage = savage_2()
elseif(isavage_mode == 3) then
ksavage = savage_3()
elseif(isavage_mode == 4) then
ksavage = savage_4()
elseif(isavage_mode == 5) then
ksavage = savage_5()
endif
kfq = limit:k(ifq + (ksavage * ifq), 20, 20000)
#
#define FQPERC #
isavage_mode = rint:i(1, 5)
ksavage init 0
if(isavage_mode == 1) then
ksavage = savage_1()
elseif(isavage_mode == 2) then
ksavage = savage_2()
elseif(isavage_mode == 3) then
ksavage = savage_3()
elseif(isavage_mode == 4) then
ksavage = savage_4()
elseif(isavage_mode == 5) then
ksavage = savage_5()
endif
#
#define SAVAGE(isavage_mode') #
ksavage init 0
if(isavage_mode == 1) then
ksavage = savage_1()
elseif(isavage_mode == 2) then
ksavage = savage_2()
elseif(isavage_mode == 3) then
ksavage = savage_3()
elseif(isavage_mode == 4) then
ksavage = savage_4()
elseif(isavage_mode == 5) then
ksavage = savage_5()
endif
#
opcode tempo, 0, k
kval xin
$tempo = limit:k(kval, 0.001, 10)
endop
opcode chaos_speed, 0, k
kval xin
gklorenz_speed = 0.0000001 * (limit:k(kval, 0.01, 100) * 10)
endop

414
public/system-files/lib.orc Normal file
View File

@ -0,0 +1,414 @@
; instruments management
instr KillImpl
Sinstr = p4
if (nstrnum(Sinstr) > 0) then
turnoff2(Sinstr, 0, 0)
endif
turnoff
endin
opcode kill, 0, S
Sinstr xin
schedule("KillImpl", 0, .05, Sinstr)
endop
opcode refresh, 0, S
Sinstr xin
if (nstrnum(Sinstr) > 0) then
kill(Sinstr)
schedule(Sinstr, ksmps / sr, -1)
endif
endop
#define _endin #
endin
refresh("livecoding")
#
opcode rint, i, ii
imin, imax xin
irnd = int(random:i(imin, int(imax) + 0.99))
xout irnd
endop
opcode rint, k, kk
kmin, kmax xin
krnd = int(random:k(kmin, int(kmax) + 0.99))
xout krnd
endop
opcode euclidian, k, kkkk
konset, kdiv, kpulses, krot xin
kphasor = gkphasor
kph = int( ( ( (kphasor + krot) * kdiv) / 1) * kpulses)
keucval = int((konset / kpulses) * kph)
kold_euc init i(keucval)
kold_ph init i(kph)
kres = ((kold_euc != keucval) && (kold_ph != kph)) ? 1 : 0
kold_euc = keucval
kold_ph = kph
xout kres
endop
// Simple rhythm array
opcode array_rhythm, k, k[]
karr[] xin
kmet = gkbeat
kcnt init 0
ilen = lenarray(karr)
ktrig = 0
if( kmet > 0 ) then
kval = karr[kcnt]
ktrig = kval
kcnt = (kcnt + 1) % ilen
endif
xout ktrig
endop
opcode trunc, k, k
kx xin
ky = (kx < 0) ? -(floor(-kx)) : floor(kx)
xout ky
endop
opcode mfmod, k, kk
kone, ktwo xin
kres = kone - trunc(kone/ktwo) * ktwo
xout kres
endop
opcode phase_trig, k, k
kphase xin
kold init 1
ktrigger init 0
ktrigger = 0
if(kold > kphase) then
ktrigger = 1
endif
kold = kphase
xout ktrigger
endop
opcode downprint, 0, kki
kprint, kdown, imargin xin
kcnt init 0
if(kcnt == 0) then
printk2(kprint, imargin)
endif
kcnt = (kcnt + 1) % kdown
endop
opcode phasor_fqmult, k, kk
kphase, kmult xin
if(kmult <= 0) then
kmult = 1
endif
kfphase init 0
if(kmult <= 1) then
kfphase = mfmod(gkslowph * (kmult * 100), 1)
elseif(kmult > 1) then
kfphase = mfmod(gkslowph * (kmult * 100), 1)
;kfphase= mfmod(gkphasor * kmult, 1)
endif
xout kfphase
endop
opcode rh_subd, k, k[]P
karr[], kpdiv xin
ilen = lenarray(karr)
if(kpdiv <= 0) then
kpdiv = ilen
endif
kdiv = kpdiv
kph = phasor_fqmult(gkphasor, kdiv )
ktr = phase_trig(kph)
kidx init 0
ktrigger = 0
if(ktr == 1) then
ktrigger = karr[kidx]
kidx = (kidx+1) % ilen
endif
xout ktrigger
endop
opcode rhythm, k, k[]P
karr[], kpdiv xin
ilen = lenarray(karr)
if(kpdiv <= 0) then
kpdiv = ilen
endif
kdiv = kpdiv
kph = phasor_fqmult(gkphasor, kdiv)
ktr = phase_trig(kph)
kidx init 0
ktrigger = 0
if(ktr == 1) then
ktrigger = karr[kidx]
kidx = (kidx+1) % ilen
endif
xout ktrigger
endop
opcode beat, k, k
kmult xin
kmult = limit:k(kmult, 0.001, 1000)
km = rhythm(array(1), kmult)
;kph = phasor:k(kmult * gktempo)
;km = phase_trig(kph)
xout km
endop
opcode swing, k, kk
kspeed, ksw xin
ktrig init 0
kold init 0
kph = phasor_fqmult(gkphasor, kspeed)
ktr1 = phase_trig(kph)
ktr2 = 0
if(kold < ksw && kph >= ksw) then
ktr2 = 0.6
endif
kold = kph
ktrig = limit:k(ktr1 + ktr2, 0, 1)
xout ktrig
endop
opcode drunk, k, kk
kspeed, kdrunk xin
kold init 0
kspeed = limit:k(kspeed, 0.001, 1000)
knoi = random:k(0, kdrunk)
kph = phasor_fqmult(gkphasor, kspeed)
;kph = phase_incr_mod(gkphasor, 1/ kspeed)
ktrig = limit:k(phase_trig(kph) + ((kold < knoi && kph > knoi) ? 1 : 0), 0, 1)
kold = kph
xout ktrig
endop
opcode filter_first_trig, k, k
ktrig xin
ksub init 1
ktrig -= ksub
ksub = 0
xout ktrig
endop
opcode check_trig, k, k
ktrig xin
kf = filter_first_trig(ktrig)
kres = (changed:k(kf) > 0 && kf > 0) ? 1 : 0
xout kres
endop
opcode to_tempo_dur, k, k
kdur xin
ktdur = kdur / gktempo
xout ktdur
endop
opcode chance, k, kk
kmin, kmax xin
kres = random:k(kmin, kmax)
xout kres
endop
opcode alternate, k, kkkO
kone, ktwo, kspeed, kduty xin
if(kduty == 0) then
kduty = 0.5
endif
if(kspeed <= 0) then
kspeed = 1
endif
kspeed = limit:k(to_tempo_dur(kspeed), 0.0001, 1000)
kph = phasor_fqmult(gkphasor, kspeed)
kres init i(kone)
if(kph < kduty) then
kres = kone
else
kres = ktwo
endif
xout kres
endop
opcode trajectory, k, kkk
kfrom, kdur, kto xin
kdur = to_tempo_dur(kdur)
kres = linseg:k( i(kfrom), i(kdur), i(kto) )
xout kres
endop
opcode oscillation, k, kkk
kmin, kmax, kspeed xin
if(kmin > kmax) then
ktmp = kmin
kmin = kmax
kmax = ktmp
endif
kspeed = limit:k(gktempo / kspeed, 0.001, 1000)
kfq = kspeed ; / gktempo
iphs init i(gkphasor)
kosc = oscili(0.5, kfq, -1, iphs) + 0.5
kres = kosc * (kmax - kmin) + kmin
xout kres
endop
opcode sequence, k, k[]P
karr[], kpdiv xin
ilen = lenarray(karr)
if(kpdiv <= 0) then
kpdiv = ilen
endif
kdiv = kpdiv
kph = phasor_fqmult(gkphasor, kdiv )
ktr = phase_trig(kph)
kidx init 0
if(ktr == 1) then
kidx = (kidx+1) % ilen
endif
ktrigger = karr[kidx]
xout ktrigger
endop
opcode random_array_int, i[], iii
isize, imin, imax xin
iarr[] init isize
icnt init 0
while icnt < isize do
iarr[icnt] = int(random:i(imin, imax+0.99))
icnt += 1
od
xout iarr
endop
opcode random_array_int, k[], iii
isize, imin, imax xin
kArr[] init isize
icnt init 0
iArr[] = random_array_int(isize, imin, imax)
while icnt < isize do
kArr[icnt] = iArr[icnt]
icnt += 1
od
xout kArr
endop
#define arr #fillarray(#
; kind of random based savage
opcode savage_1, k, 0
k1 = gkmirlorenz_x
k2 = abs(oscili:k(1, gkmirlorenz_y * 6 + 0.01))
k3 = rspline:k(0, gkmirlorenz_z, 1, 5)
kfq = gkmirlorenz_x * rspline:k(1, 3, 1, 5) + 0.001
kmod = beat(kfq) ;lfo:k(1, kfq, 3)
ksel init 0
ksel_sig init 0
if(trigger:k(kmod, 0.5, 0) == 1) then
ksel = rint:k(0, 2)
endif
if(ksel == 0) then
ksel_sig = k1
elseif(ksel == 1) then
ksel_sig = k2
elseif(ksel == 2) then
ksel_sig = k3
endif
kres = (kmod > 0) ? ksel_sig : 0
xout kres
endop
; direct lorenz savage mode
opcode savage_2, k, 0
kmult = pow(abs(lfo:k(1, rspline:k(0, gklorenz_x, 0.1, 3), 1)),3)
kmod = abs(poscil:k( pow(gkmirlorenz_z, 3) * kmult, gkmirlorenz_x * gkmirlorenz_y * 40))
xout kmod
endop
; pwm based savage mode
opcode savage_3, k, 0
kduty = gkmirlorenz_y
kph = phasor:k(gkmirlorenz_x * 5 )
kres init 0
if(kph < kduty) then
kres = 1
else
kres = 0
endif
kmult = mirror:k(gklorenz_z, 0, 1)
kres *= kmult
xout kres
endop
opcode savage_4, k, 0
iarr[] = fillarray(random:i(0, 1), random:i(0, 1), random:i(0, 1), random:i(0, 1))
kchange init 1
kchange = changed:k(round(abs(gklorenz_x )))
kmod init 1
if(kchange == 1) then
iarr[0] = random:i(0, 1)
iarr[1] = random:i(0, 1)
iarr[2] = random:i(0, 1)
iarr[3] = random:i(0, 1)
endif
ksel = int(abs(gklorenz_x) * 4.99) % 4
kres = limit:k (lineto(iarr[ksel], mirror:k(abs(gklorenz_y), 0, 1) ), 0, 1)
xout kres
endop
opcode savage_5, k, 0
kamp = pow(abs(gklorenz_x), 2)
kfq = 8 - (0.01 + abs(gklorenz_y) * 8)
kmod = oscili:k(kamp, kfq)
xout kmod
endop
opcode chaos_rhythm, k, kk
kchoice, kthresh xin
kthresh = limit:k(kthresh, 0, 1)
kchoice = int(limit:k(kchoice, 1, 3.99))
kval init 0
if(kchoice == 1) then
kval = gkmirlorenz_x
elseif(kchoice == 2) then
kval = gkmirlorenz_y
elseif(kchoice == 3) then
kval = gkmirlorenz_z
endif
kres = trigger:k(kval, kthresh, 2)
xout kres
endop
opcode chaos_control, k, kkk
kchoice, kmin, kmax xin
kmax = max:k(kmin, kmax)
kmin = min:k(kmin, kmax)
kchoice = int(limit:k(kchoice, 1, 3.99))
kval init 0
if(kchoice == 1) then
kval = gkmirlorenz_x
elseif(kchoice == 2) then
kval = gkmirlorenz_y
elseif(kchoice == 3) then
kval = gkmirlorenz_z
endif
kdiff = kmax - kmin
kres = kval * kdiff + kmin
xout kres
endop

View File

@ -0,0 +1,3 @@
instr livecoding
$_endin

View File

@ -0,0 +1,207 @@
gi3semitone ftgen 0, 0, 5, -2, 0, 3, 6, 9, 12
gi4semitone ftgen 0, 0, 4, -2, 0, 4, 8, 12
giaeolian ftgen 0, 0, 7, -2, 0, 2, 3, 5, 7, 8, 10
giaeolian ftgen 0, 0, 8, -2, 0, 2, 3, 5, 7, 8, 10, 12
gialgerian ftgen 0, 0, 8, -2, 0, 2, 3, 6, 7, 8, 11, 12
gialgerian1 ftgen 0, 0, 8, -2, 0, 2, 3, 6, 7, 8, 11, 12
gialgerian2 ftgen 0, 0, 8, -2, 0, 2, 3, 5, 7, 8, 10, 12
gialtered ftgen 0, 0, 8, -2, 0, 1, 3, 4, 6, 8, 10, 12
giarabian ftgen 0, 0, 8, -2, 0, 1, 4, 5, 7, 8, 11, 12
giaugmented ftgen 0, 0, 7, -2, 0, 3, 4, 7, 8, 11, 12
gibalinese ftgen 0, 0, 6, -2, 0, 1, 3, 7, 8, 12
gibebopdominant ftgen 0, 0, 9, -2, 0, 2, 4, 5, 7, 9, 10, 11, 12
gibebopdominantflatnine ftgen 0, 0, 9, -2, 0, 1, 4, 5, 7, 9, 10, 11, 12
gibebopmajor ftgen 0, 0, 9, -2, 0, 2, 4, 5, 7, 8, 9, 11, 12
gibebopminor ftgen 0, 0, 9, -2, 0, 2, 3, 5, 7, 8, 9, 10, 12
gibeboptonicminor ftgen 0, 0, 9, -2, 0, 2, 3, 5, 7, 8, 9, 11, 12
giblues ftgen 0, 0, 7, -2, 0, 3, 5, 6, 7, 10, 12
gibyzantine ftgen 0, 0, 8, -2, 0, 1, 4, 5, 7, 8, 11, 12
gichahargah ftgen 0, 0, 8, -2, 0, 1, 4, 5, 7, 8, 11, 12
gichinese ftgen 0, 0, 6, -2, 0, 2, 4, 7, 9, 12
gichinese2 ftgen 0, 0, 6, -2, 0, 4, 6, 7, 11, 12
gichroma ftgen 0, 0, 12, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
gichromatic ftgen 0, 0, 13, -2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
gidim ftgen 0, 0, 4, -2, 0, 3, 6, 9
gidiminished ftgen 0, 0, 9, -2, 0, 2, 3, 5, 6, 8, 9, 11, 12
gidorian ftgen 0, 0, 7, -2, 0, 2, 3, 5, 7, 9, 10
gidorian ftgen 0, 0, 8, -2, 0, 2, 3, 5, 7, 9, 10, 12
gidoubleharmonic ftgen 0, 0, 8, -2, 0, 1, 4, 5, 7, 8, 11, 12
giegyptian ftgen 0, 0, 8, -2, 0, 2, 3, 6, 7, 8, 11, 12
gienigmatic ftgen 0, 0, 8, -2, 0, 1, 4, 6, 8, 10, 11, 12
giethiopian ftgen 0, 0, 8, -2, 0, 2, 4, 5, 7, 8, 11, 12
giflamenco ftgen 0, 0, 9, -2, 0, 1, 3, 4, 5, 7, 8, 10, 12
gigypsy ftgen 0, 0, 8, -2, 0, 1, 4, 5, 7, 8, 11, 12
giharmonic ftgen 0, 0, 7, -2, 0, 2, 4, 5, 7, 9, 11
giharmonicmajor ftgen 0, 0, 8, -2, 0, 2, 4, 5, 8, 9, 11, 12
giharmonicminor ftgen 0, 0, 7, -2, 0, 2, 3, 5, 7, 8, 11
giharmonicminor ftgen 0, 0, 8, -2, 0, 2, 3, 5, 7, 8, 11, 12
gihindu ftgen 0, 0, 8, -2, 0, 2, 4, 5, 7, 8, 10, 12
gihirajoshi ftgen 0, 0, 6, -2, 0, 2, 3, 7, 8, 12
gihungariangypsy ftgen 0, 0, 8, -2, 0, 2, 3, 6, 7, 8, 11, 12
gihungarianmajor ftgen 0, 0, 8, -2, 0, 3, 4, 6, 7, 9, 10, 12
gihungarianminor ftgen 0, 0, 8, -2, 0, 2, 3, 6, 7, 8, 11, 12
giindian ftgen 0, 0, 8, -2, 0, 1, 3, 4, 7, 8, 10, 12
giinverteddiminished ftgen 0, 0, 9, -2, 0, 1, 3, 4, 6, 7, 9, 10, 12
giionian ftgen 0, 0, 7, -2, 0, 2, 4, 5, 7, 9, 11
giionian ftgen 0, 0, 8, -2, 0, 2, 4, 5, 7, 9, 11, 12
giiwato ftgen 0, 0, 6, -2, 0, 1, 5, 6, 10, 12
gijapanese ftgen 0, 0, 6, -2, 0, 1, 5, 7, 8, 12
gijavanese ftgen 0, 0, 8, -2, 0, 1, 3, 5, 7, 9, 10, 12
gijewish ftgen 0, 0, 8, -2, 0, 1, 4, 5, 7, 8, 10, 12
gikumoi ftgen 0, 0, 6, -2, 0, 1, 5, 7, 8, 12
gileadingwholetone ftgen 0, 0, 8, -2, 0, 2, 4, 6, 8, 10, 11, 12
gilocrian ftgen 0, 0, 7, -2, 0, 1, 3, 5, 6, 8, 10
gilocrian ftgen 0, 0, 8, -2, 0, 1, 3, 5, 6, 8, 10, 12
gilocrianmajor ftgen 0, 0, 8, -2, 0, 2, 4, 5, 6, 8, 10, 12
gilocriannatural ftgen 0, 0, 8, -2, 0, 2, 3, 5, 6, 8, 10, 12
gilocriansuper ftgen 0, 0, 8, -2, 0, 1, 3, 4, 6, 8, 10, 12
gilocrianultra ftgen 0, 0, 8, -2, 0, 1, 3, 4, 6, 8, 9, 12
gilydian ftgen 0, 0, 7, -2, 0, 2, 4, 6, 7, 9, 11
gilydian ftgen 0, 0, 8, -2, 0, 2, 4, 6, 7, 9, 11, 12
gilydianaugmented ftgen 0, 0, 8, -2, 0, 2, 4, 6, 8, 9, 10, 12
gilydiandominant ftgen 0, 0, 8, -2, 0, 2, 4, 6, 7, 9, 10, 12
gilydianminor ftgen 0, 0, 8, -2, 0, 2, 4, 6, 7, 8, 10, 12
gim7 ftgen 0, 0, 19, -2, 0, 3, 7, 10, 14, 17, 21, 24, 27, 31, 34, 38, 41, 45, 48, 51, 55, 58, 62
gimajor ftgen 0, 0, 7, -2, 0, 2, 4, 5, 7, 9, 11
gimarva ftgen 0, 0, 8, -2, 0, 1, 4, 6, 7, 9, 11, 12
gimelodicminor ftgen 0, 0, 8, -2, 0, 2, 3, 5, 7, 9, 11, 12
gimelodicminorascending ftgen 0, 0, 7, -2, 0, 2, 3, 5, 7, 9, 11
gimelodicminordescending ftgen 0, 0, 7, -2, 0, 2, 3, 5, 7, 8, 10
giminor ftgen 0, 0, 7, -2, 0, 2, 3, 5, 7, 8, 10
giminor3 ftgen 0, 0, 7, -2, 0, 2, 2.75, 5, 7.15, 8, 10
gimjnor ftgen 0, 0, 7, -2, 0, 1.75, 2.75, 5.35, 7.35, 8, 10
giminor2v5 ftgen 0, 0, 7, -2, 0, 2, 2.5, 5, 7, 8, 10
gimixolydian ftgen 0, 0, 7, -2, 0, 2, 4, 5, 7, 9, 10
gimixolydian ftgen 0, 0, 8, -2, 0, 2, 4, 5, 7, 9, 10, 12
gimixolydianaugmented ftgen 0, 0, 8, -2, 0, 2, 4, 5, 8, 9, 10, 12
gimohammedan ftgen 0, 0, 8, -2, 0, 2, 3, 5, 7, 8, 11, 12
gimongolian ftgen 0, 0, 6, -2, 0, 2, 4, 7, 9, 12
gimonotone ftgen 0, 0, 1, -2, 0
ginaturalminor ftgen 0, 0, 7, -2, 9, 11, 0, 2, 4, 5, 7
ginaturalminor ftgen 0, 0, 8, -2, 0, 2, 3, 5, 7, 8, 10, 12
gineapolitanmajor ftgen 0, 0, 8, -2, 0, 1, 3, 5, 7, 9, 11, 12
gineapolitanminor ftgen 0, 0, 8, -2, 0, 1, 3, 5, 7, 8, 11, 12
giocta_1_2 ftgen 0, 0, 8, -2, 0, 1, 3, 4, 6, 7, 9, 10
giocta_2_1 ftgen 0, 0, 8, -2, 0, 2, 3, 5, 6, 8, 9, 11
gioriental ftgen 0, 0, 8, -2, 0, 1, 4, 5, 6, 9, 10, 12
giovertone ftgen 0, 0, 8, -2, 0, 2, 4, 6, 7, 9, 10, 12
gipa ftgen 0, 0, 6, -2, 0, 2, 3, 7, 8, 12
gipb ftgen 0, 0, 6, -2, 0, 1, 3, 6, 8, 12
gipd ftgen 0, 0, 6, -2, 0, 2, 3, 7, 9, 12
gipe ftgen 0, 0, 6, -2, 0, 1, 3, 7, 8, 12
gipelog ftgen 0, 0, 6, -2, 0, 1, 3, 7, 10, 12
gipentamaj ftgen 0, 0, 5, -2, 0, 2, 4, 7, 9
gipentamin ftgen 0, 0, 5, -2, 0, 3, 5, 7, 10
gipentatonicmajor ftgen 0, 0, 6, -2, 0, 2, 4, 7, 9, 12
gipentatonicminor ftgen 0, 0, 6, -2, 0, 3, 5, 7, 10, 12
gipersian ftgen 0, 0, 8, -2, 0, 1, 4, 5, 6, 8, 11, 12
gipfcg ftgen 0, 0, 6, -2, 0, 2, 4, 7, 9, 12
giphrygian ftgen 0, 0, 7, -2, 0, 1, 3, 5, 7, 8, 10
giphrygian ftgen 0, 0, 8, -2, 0, 1, 3, 5, 7, 8, 10, 12
giphrygianmajor ftgen 0, 0, 8, -2, 0, 1, 4, 5, 7, 8, 10, 12
giquarter ftgen 0, 0, 22, -2, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6, 6.5, 7, 7.5, 8, 8.5, 9, 9.5, 10, 10.5, 11, 11.5
giromanian ftgen 0, 0, 8, -2, 0, 2, 3, 6, 7, 9, 10, 12
gispanish ftgen 0, 0, 8, -2, 0, 1, 4, 5, 7, 8, 10, 12
gispanish8tone ftgen 0, 0, 9, -2, 0, 1, 3, 4, 5, 6, 8, 10, 12
gisymmetrical ftgen 0, 0, 9, -2, 0, 1, 3, 4, 6, 7, 9, 10, 12
gitodi ftgen 0, 0, 8, -2, 0, 1, 3, 6, 7, 8, 11, 12
giwhole ftgen 0, 0, 6, -2, 0, 2, 4, 6, 8, 10
giwhole ftgen 0, 0, 7, -2, 0, 2, 4, 6, 8, 10, 12
gibp ftgen 0, 0, 12, -2, 0, 1.3324, 3.0185, 4.3508, 5.8251, 7.3693, 8.8436, 10.1760, 11.6502, 13.1944, 14.6687, 16.0011, 17.6872, 19.0196
#define chinese #gichinese#
#define persian #gipersian#
#define indian #giindian#
#define arabian #giarabian#
#define minor #giminor#
#define major #gimajor#
opcode scale_up, k, ikkk
iscale, kmin, kmax, kspeed xin
ktrig = metro:k(kspeed)
idiff = abs( i(kmax) - i(kmin) )
ibase = i(kmin)
kpick init 0
knote init ibase
kitv init 0
ilen = ftlen(iscale)
if(ktrig == 1) then
kpick = (kpick + 1) ;% ilen
if(kpick == ilen) then
kpick = 0
kitv = 0
endif
kitv = table(kpick, iscale) - kitv
printk2 kitv
knote = knote + kitv
if(knote > kmax) then
knote = kmin + (knote - kmax)
endif
endif
xout knote
endop
/*
opcode scale_up, k, ikkk
iscale, kmin, kmax, kspeed xin
ktrig = metro:k(kspeed)
idiff = abs( i(kmax) - i(kmin) )
ibase = i(kmin) + (idiff/2)
kpick init 0
knote init ibase
ilen = ftlen(iscale)
if(ktrig == 1) then
kpick = (kpick + 1) % ilen
kitv = table(kpick, iscale)
knote = knote + kitv
if(knote > kmax) then
knote = kmin + (knote - kmax)
endif
endif
xout knote
endop
*/
opcode scale_down, k, ikkk
iscale, kmin, kmax, kspeed xin
ktrig = metro:k(kspeed)
idiff = abs( i(kmax) - i(kmin) )
ibase = i(kmax)
kpick init 0
knote init ibase
ilen = ftlen(iscale)
if(ktrig == 1) then
kpick = (kpick + 1) % ilen
kitv = table(kpick, iscale)
knote = knote - kitv
if(knote < kmin) then
knote = kmax ;- (kmin - knote)
endif
endif
xout knote
endop
opcode scale_random, k, ikkk
iscale, kmin, kmax, kspeed xin
ktrig = metro:k(kspeed)
idiff = abs( i(kmax) - i(kmin) )
ibase = i(kmin) + (idiff/2)
kpick init 0
knote init ibase
ilen = ftlen(iscale)
if(ktrig == 1) then
ksign = (rint:k(0, 1) == 0) ? -1 : 1
kpick = (kpick + 1) % ilen
kitv = table(kpick, iscale)
knote = knote + (kitv * ksign)
if(knote < kmin) then
knote = kmax ;- (kmin - knote)
endif
if(knote > kmax) then
knote = kmin ;+ (knote - kmax)
endif
endif
xout knote
endop

File diff suppressed because it is too large Load Diff