0
Upcoming SlideShare
×

# Pycon5 creare soundscape con pyo

126

Published on

Presentazione della libreria Pyo al Pycon5 (2014).

Published in: Technology
0 Likes
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

• Be the first to like this

Views
Total Views
126
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
1
0
Likes
0
Embeds 0
No embeds

No notes for slide

### Transcript of "Pycon5 creare soundscape con pyo"

1. 1. Creare Soundscape con PYO PyCon 5 - Maggio 2014
2. 2. Chi sono Riccardo Lemmi sviluppatore Zope/Plone chitarrista ERG (8string)
3. 3. Damned Chorus Ascolto
4. 4. PYO https://code.google.com/p/pyo/ “pyo is a Python module written in C to help digital signal processing script creation”
5. 5. Come funziona Pyo Suono come: vettore di float stream di sample flusso di campioni
6. 6. Pyo Hello world from pyo import * s = Server().boot() s.start() a = Sine(mul=0.01).out()
7. 7. Esempio di generatore Sine(freq=1000, phase=0, mul=1, add=0) ● freq: frequenza ● phase: fase iniziale ● mul: moltiplicatore dei campioni ● add: parametro sommato ai campioni
8. 8. Cambiare i parametri Es: la frequenza a.setFreq(1000) a.freq = 1000 a.set('freq', 1000, 5) … in qualsiasi momento
9. 9. Concatenare stream Modulazione mod = Sine(freq=6, mul=50) a = Sine(freq=mod + 440, mul=0.1).out() amp = Sine(freq=6) a = Sine(freq=440, mul=amp).out()
10. 10. Concatenare stream Inviluppo amp = Adsr(attack=.01, decay=.2, sustain=.5, release=.1, dur=5, mul=.5) a = Sine(mul=amp).out() amp.play()
11. 11. Audio Server Server Setup from pyo import * s = Server(???).boot() s.start() a = Sine(440, mul=0.01).out() s.gui(locals())
12. 12. Audio Server class Server( sr=44100, nchnls=2, buffersize=256, duplex=1, audio='portaudio', jackname='pyo')
13. 13. Audio Server Server nchnls streams
14. 14. Audio Server Tipi ● portaudio ● offline ● jackd
15. 15. Audio Server .boot: setup server .start: inizia l’elaborazione .stop: ferma l’elaborazione .gui: attiva la UI
16. 16. Audio Server Interazione s.gui(locals()) locals() per accedere agli oggetti istanziati
17. 17. Classi base PyoObject rappresenta uno stream
18. 18. Classi base PyoObject .play(dur=0, delay=0) .out(...) .stop() .mix(voices=1) -> Mix .set(attr, value, port=0.025)
19. 19. Classi base PyoObject s1 = Sine().out() s1.set('freq', 500, 5)
20. 20. Classi base PyoObject .get & .set .ctrl: gestione UI .mul: moltiplica il sample .add: aggiuge al sample
21. 21. Classi base PyoTableObject buffer dove memorizzare un vettore pre-calcolato
22. 22. Classi base PyoMatrixObject matrice bidimensionale dove memorizzare campioni pre-calcolati
23. 23. Operazioni matematiche sin cos pow round ...
24. 24. Segnali di controllo Generatori di campioni utilizzabili per controllare i parametri dei segnali audio
26. 26. Segnali di controllo Linseg Generatore di inviluppo lineare: collega i punti con segmenti .graph
27. 27. Segnali di controllo Sig Segnale continuo: stream di un solo sample .value stream .get sample
28. 28. Gestione dinamica Gestione dell’ampiezza del segnale Clip Compress ...
29. 29. Effetti Disto: distorsore Delay: ritardo Chorus ...
30. 30. Filtri EQ AllPass ...
31. 31. Trasformata di Fourier Analisi del segnale nel dominio della frequenza. FFT e IFFT... Spectrum: mostra lo spettro del segnale
32. 32. Generatori di segnali audio Possono essere usati come generatori di segnali audio oppure come generatori di segnali di controllo
33. 33. Generatori di segnali Oscillatori Sine sinusoide SineLoop Phasor dente di sega, rampa FM modulatore di frequenza LFO… low frequency oscillator
34. 34. Generatori di segnali Rumore BrownNoise Noise (white) PinkNoise
35. 35. Routing Mixer: audio mixer Pan: distribuisce uno stream su due canali Selector: interpola più stream
36. 36. Generatori di Eventi CallAfter: call al tempo t Pattern: call periodica
37. 37. Generatori di Eventi a = Sine() def callback1(): a.set('freq', 100, 1) c1 = CallAfter(callback1, 2)
38. 38. Lettori di file audio Modellano un file audio SfPlayer: legge un file e genera lo stream
39. 39. Generatori Random Generatori di rumore usati prevalentemente come controllori per i parametri di altri generatori Choice Rand* Xnoise*
40. 40. Tabelle Vettori monodimensionali che contengono campioni pre-calcolati
41. 41. Tabelle CosTable: punti intepolati con un coseno .graph DataTable: tabella vuota SawTable: contiene un “dente di sega” SndTable: riempita con un file ...
42. 42. Processori di Tabelle Granulator: synth granulare Looper: player Osc: oscillatore che usa una tabella OscLoop: oscillatore con feedback ...
43. 43. Trigger Flusso di 0 in cui “ogni tanto” c’è un 1
44. 44. Generatori di Trigger Trig: genera un singolo evento Metro: metronomo Seq: generatore di pattern ritmici Beat: generatore di pattern ritmici pseudo-random ...
45. 45. Handler di Trigger Iter: cambia valore sequenzialmente TrigRand: genera un valore random TrigChoice: cambia valore scegliendo da una lista TrigFunc: esegue una funzione ...
46. 46. Interfaccia utente SLMap: slider generico SLMapFreq: legato a ‘freq’ SLMapMul: legato a ‘mul’ …
47. 47. Interfaccia utente a = Sine(440, mul=0.5).out() a.ctrl([ SLMapFreq(init=a.freq), SLMapMul(init=a.mul), ])
48. 48. Utilities Print: stampa il valore corrente di uno stream Record: scrive su disco
49. 49. Il coro demoniaco Analisi del codice
1. #### A particular slide catching your eye?

Clipping is a handy way to collect important slides you want to go back to later.