Ecco una guida per creare un groove melodic techno ipnotico utilizzando Strudel, ambiente di live coding basato su browser che permette di scrivere musica in tempo reale.
Cliccare qui per ascoltare la traccia: APRI IN STRUDEL

1. Impostare il tempo
La Acid Techno si muove solitamente tra i 130 e i 135 BPM. In Strudel, impostiamo il tempo usando setCps (cycles per second).
// Impostiamo il tempo a 132 BPM
setCpm(132/4)
2. Creazione di una funzione per generare un suono “acido”
Creiamo una funzione personalizzata (“macro” o anche denominata “effetto”) per manipolare il suono.
register('acidenv', (x, pat) =>
pat
.lpf(200 + x * 2000)
.lpenv(x * 9)
.lps(0.2)
.lpd(0.12)
)
Il comando register('acidenv', ...) viene utilizzato per creare e memorizzare una funzione riutilizzabile chiamata “acidenv” (abbreviazione per “acid envelope”). L’uso di variabili e funzioni personalizzate è una pratica comune per rendere il codice più pulito, organizzato e facile da controllare in un’esibizione live.
Parametri della funzione: (x, pat) in input:
• x: Un valore numerico che funge da parametro di controllo per l’intensità dell’effetto.
• pat: Il pattern musicale (come una linea di basso o un ritmo) a cui verrà applicato l’effetto.
Elaborazione del suono (il corpo della funzione): il codice applica una catena di effetti al pattern (pat) per modellarne il timbro:
• .lpf(200 + x * 2000): Applica un Low-Pass Filter (filtro passa-basso). Questo filtro rimuove le frequenze alte, rendendo il suono più cupo e profondo. La frequenza di taglio è dinamica: varia da un minimo di 200 Hz a un massimo di 2200 Hz in base al valore di x.
• .lpenv(x * 9): Gestisce l’involucro del filtro (filter envelope). Questo parametro determina quanta influenza ha l’involucro sulla frequenza del filtro passa-basso. Un valore più alto di x renderà l’effetto di “apertura” del filtro più pronunciato.
• **.lps(0.2) e .lpd(0.12): setta il sustain (lps) e il decay (lpd) del filtro. Questi valori impostano la durata e il mantenimento della risonanza del filtro, contribuendo a creare quel suono ritmico e “acido” tipico dei sintetizzatori come il TB-303.
3. Acidline
$: n("<0 4 0 9 7>*16")
.scale("g:minor")
.trans(-24)
.o(3)
.s("sawtooth")
.acidenv(slider(0.39, 0,0.5,0.01))
._pianoroll()
Con questa funzione creiamo la traccia di basso. Ecco nel dettaglio la spiegazione:
• $:: È una scorciatoia utilizzata per creare ed eseguire un pattern direttamente su una riga.
• n(“<0 4 0 9 7>*16”):
◦ La funzione n() definisce le note del pattern.
◦ Le parentesi angolari (< >) indicano una selezione ciclica: Strudel sceglierà un valore diverso (0, poi 4, poi 0, ecc.) per ogni ciclo musicale.
◦ L’operatore *16 accelera il pattern, facendolo suonare 16 volte all’interno di un singolo ciclo.
• .scale(“g:minor”): Interpreta i numeri inseriti in n() come gradi della scala di Sol minore.
• .trans(-24): Questa funzione (abbreviazione di transpose) traspone le note verso l’alto o verso il basso. In questo caso, -24 sposta il suono verso il basso di 24 semitoni (ovvero due ottave).
• .o(3): Imposta l’ottava di riferimento a 3.
• .s(“sawtooth”): Imposta il suono (o strumento) su un’onda a dente di sega (sawtooth), tipica dei sintetizzatori elettronici.
• .acidenv(slider(0.39, 0, 0.5, 0.01)):
◦ acidenv applica un involucro (envelope) di tipo “acid”, spesso associato a filtri risonanti. Richiama la funzione personalizzata creata prima.
◦ slider(…) crea un cursore interattivo nell’interfaccia di Strudel, permettendoti di modificare il valore (da 0 a 0.5) in tempo reale mentre la musica suona.
• ._pianoroll(): Genera una visualizzazione grafica del pattern sotto forma di piano roll, mostrando le note su una griglia temporale.

4. Bassline
$: n("<0>*16")
.scale("g:minor")
.trans(-24)
.detune(rand)
.o(4)
.s("square")
.acidenv(slider(0.5, 0,0.5,0.01))
._pianoroll()
._scope()
Questa funzione crea una bassline ripetitiva e cadenzata, tipica del genere di Acid Techno che amo di più. Ecco l’analisi dettagliata della funzione:
• n(“<0>*16”): Genera un pattern ritmico dove la nota indicizzata come 0 viene ripetuta 16 volte per ogni ciclo: la nota rimane fissa sul grado fondamentale, creando un effetto di pulsazione continua.
• .detune(rand): Questa è una funzione di trasformazione che introduce la randomizzazione. Applicando rand (random) al detune, ogni nota avrà una leggera e imprevedibile variazione di intonazione, rendendo il suono del sintetizzatore più organico, “grosso” o leggermente scordato, aggiungendo una tipica sonorità Acid-line.
• .o(4): Imposta l’ottava a 4. Sebbene la trasposizione (.trans(-24)) abbassi il suono di due ottave, definire l’ottava di partenza aiuta a stabilire il registro esatto in cui opera il pattern.
• .s(“square”): Utilizza come sorgente sonora un’onda quadra. Le onde quadre hanno un timbro più “vuoto” e legnoso rispetto alle onde a dente di sega, molto comuni nelle linee di basso della musica elettronica.
• .acidenv(slider(0.5, 0, 0.5, 0.01)): Applica un involucro (envelope) della funzione personalizzata definita all’inizio per modellare il volume e il filtro di ogni nota. L’uso dello slider crea un cursore interattivo nell’interfaccia, permettendoti di manipolare questo effetto in tempo reale mentre il codice è in esecuzione.
• ._pianoroll(): visualizza le note su una griglia temporale (piano roll), permettendoti di vedere la densità delle 16 note generate.
• ._scope(): Aggiunge un oscilloscopio visuale. Questa funzione permette di vedere la forma d’onda del suono prodotto in tempo reale; in questo caso, vedresti l’oscillazione dell’onda quadra influenzata dall’involucro acid.

5. Kick
$: s("rolandtr909_bd:1!4")
.duck("3:4:5:6")
.duckdepth(1)
.duckattack(.2)
._scope()
Aggiungiamo ora la linea di kick. Ecco una spiegazione dettagliata di ogni parte della funzione:
• $:: come per le tracce precedenti, la usiamo per generare subito il suono nella traccia.
• s(“rolandtr909_bd:1!4”):
◦ s() definisce un pattern sonoro (una sequenza di campioni).
◦ “rolandtr909_bd” indica il campione di una grancassa (bass drum) proveniente dalla classica drum machine Roland TR-909.
◦ :1 seleziona uno specifico campione all’interno di quella cartella (in questo caso, il secondo file, dato che il conteggio parte da zero).
◦ !4 è un operatore di ripetizione: indica a Strudel di suonare quel suono 4 volte in modo equamente spaziato all’interno di ogni singolo ciclo.
• .duck(“3:4:5:6”): questa funzione attiva un effetto di sidechain compression (o “ducking”). Il pattern “3:4:5:6” specifica i momenti o i passi ritmici in cui il volume del suono principale deve abbassarsi per lasciare spazio a un altro elemento.
• .duckdepth(1): Imposta l’intensità dell’effetto di ducking. Un valore di 1 indica generalmente una riduzione massima del volume quando l’effetto viene attivato.
• .duckattack(.2): Determina la velocità di attacco dell’effetto, ovvero quanto velocemente il volume diminuisce una volta attivato il ducking (in questo caso, 0.2 secondi).
• ._scope(): Questa funzione attiva una visualizzazione grafica (oscilloscopio) del segnale audio all’interno dell’editor di Strudel, permettendoti di vedere la forma d’onda del suono mentre viene riprodotto.

6. Synth Drone
$: n("<0 0 0 0 0 0 0 0>*1")
.scale("g:minor")
.trans(0)
.o(3)
.s("gm_fx_soundtrack:3")
.acidenv(slider(0, 0,0.5,0.01))
._pianoroll()
._scope()
Creiamo ora una traccia che aggiunga un drone di sottofondo (un synth continuo che dia spessore e atmosfera, in sottofondo). Ecco la spiegazione del codice:
◦ Il modificatore *1 indica la velocità di riproduzione: *n moltiplica la velocità per n, quindi *1 mantiene il ritmo standard del ciclo.
• .scale(“g:minor”): usiamo la stessa scala degli altri pattern
• .trans(0): Sta per “transpose” (trasposizione). Imposta lo spostamento tonale a 0, quindi non cambia la tonalità originale definita dalla scala.
• .o(3): Definisce l’ottava della sequenza, impostandola in questo caso al valore 3.
• .s(“gm_fx_soundtrack:3”): La funzione .s() (sound) seleziona lo strumento. Qui viene utilizzato il campione “soundtrack” dalla libreria General MIDI (gm_fx), specificamente la variante o l’indice numero 3.
• .acidenv(slider(0, 0, 0.5, 0.01)):
◦ Questa funzione applica un involucro (envelope) di tipo “acid” al suono usando la funzione personalizzata.
◦ L’uso di slider() crea un controllo interattivo nell’interfaccia di Strudel. I parametri (0, 0, 0.5, 0.01) definiscono rispettivamente il valore iniziale, il minimo, il massimo e l’incremento dello slider, permettendo di modificare l’effetto in tempo reale mentre la musica suona.
• ._pianoroll(): Questa funzione visualizza il pattern graficamente come note MIDI su un rullo di pianoforte (piano-roll) all’interno dell’editor.
• ._scope(): Questa funzione attiva una visualizzazione grafica (oscilloscopio) del segnale audio all’interno dell’editor di Strudel, permettendoti di vedere la forma d’onda del suono mentre viene riprodotto.

Pingback: lasix diuretic
Pingback: doxycycline for dogs
Pingback: antibiotics online prescription
Pingback: vibramycin doxycycline 100mg
Pingback: doryx antibiotic
Pingback: amoxicillin clavulanate
Pingback: lasix diuretico
Pingback: cenforce 200 mg online
Pingback: sildenafil and bph
Pingback: cheap cialis online
Pingback: viagra pill photo
Pingback: tirzepatide vs semaglutide reddit pcos
Pingback: semaglutid tablett usa
Pingback: tadalafil 5mg walmart
Pingback: what does acyclovir cure
Pingback: bupropion adhd treatment
Pingback: orlistat pubmed