Palestra sobre a AudioLazy no TDC 2014 (the developer's conference) que ocorreu na Universidade Anhembi Morumbi no dia 2014-08-09.
Site do evento: www.thedevelopersconference.com.br/tdc/2014/
Descrição da palestra:
Trata-se de uma exposição prática sobre o que é/faz um DSP (Digital Signal Processing), utilizando recursos da AudioLazy. Os tópicos incluem:
- Processamento: amostra-por-amostra e em blocos, STFT, filtros lineares variantes no tempo, processamento não linear "memoryless", distorção, flanger.
- Análise de áudio: Altura/nota musical, espectro (DFT/FFT/STFT), formantes, LPC, taxa de cruzamento no zero.
- Síntese: Aditiva, modulação (AM/Ring, FM), subtrativa.
- Psicoacústica: filtros gammatone, volume sonoro / loudness em phon e dB SPL (ISO/FDIS 226:2003 e Fletcher-Munson), modelo helicoidal de Shepard.
- Imagem: resposta em frequência, diagrama de polos e zeros, imagens artísticas com DSP de áudio.
- Outros: conversão de valores (nome de nota - altura MIDI - frequência), arquivos WAV e I/O de áudio via PyAudio (PortAudio com ALSA e Jack), cálculo numérico, aspectos gerais da biblioteca, interatividade e uso em jogos.
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!
1. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
AudioLazy
Danilo de Jesus da Silva BelliniDanilo de Jesus da Silva Bellini
(Desenvolvedor da AudioLazy)(Desenvolvedor da AudioLazy)
Twitter: @danilobelliniTwitter: @danilobellini
https://github.com/danilobellini/audiolazyhttps://github.com/danilobellini/audiolazy
https://pypi.python.org/pypi/audiolazyhttps://pypi.python.org/pypi/audiolazy
https://groups.google.com/forum/#!https://groups.google.com/forum/#!
forum/audiolazyforum/audiolazy
2. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
AudioLazy
● DSP (Digital Signal Processing)
– Análise
– Síntese
– Processamento
– Psicoacústica
● Expressividade de código
● Tempo real
Documentação (Sphinx)
http://pythonhosted.org/audiolazy
Python
2.7
Python
2.7
e
3.2+!
e
3.2+!
85% py.test
branch
coverage
Cálculo numérico
Imagens
...
3. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
Processamento
● Distorção
● Flanger
● Phaser
● Wah
● Robotização de voz
● Delay
● Reverb
● ... Novidade:
STFT
Arquivos WAV
ou ao vivo?
4. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
Loudness Fletcher-Munson (1933)?
Imagem
extraída de
Moore,
Elements of
Computer
Music, 1990
ISO226:2003!
Modelo antigo/tradicional
Atual!
Exemplo iso226_plot.py na AudioLazy
E Hoje?
5. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
Altura (pitch)! Shepard
● 2 dimensões:
– Altura (pitch height)
● Dimensão “linear”
– Croma (pitch chroma)
● Dimensão “circular”
● Lembra Escher →
Exemplo shepard.pyExemplo shepard.py
““Hélice”Hélice”
6. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
Síntese
● Modulação
– Ring/anel
– AM
– FM
● Síntese aditiva
● Síntese subtrativa
● Formas de onda
– Senoides
– Sawtooth
– Table lookup
● Ruído
– Branco/uniforme
– Gaussiano
● Exemplos
– FM: mcfm.py
– Subtrativa: formants.py
– Aditiva com senoides:
shepard.py
keyboard.py:
GGGSUGSUG
LLLPUTSUG
7. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
Envoltória espectral
FormantesFormantes
Modelo fonte-filtroModelo fonte-filtro
para a vozpara a voz
LPC (LinearLPC (Linear
Predictive Coding)Predictive Coding)
Classificação deClassificação de
vogaisvogais
(análise e síntese)(análise e síntese)
Exemplos lpc_plot.py e formants.pyExemplos lpc_plot.py e formants.py
8. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
Análise
● ZCR (Taxa de cruzamento no zero)
● DFT (Transformada Discreta de Fourier)
● AMDF (Average Magnitude Difference Function)
9. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
Filtros lineares
● Síntese subtrativa (e.g. play_bach_choral.py)
● Comb, ressonador, passa-baixas, passa-altas, …
● Wah, knob guitarra (passa-baixas RC), ...
filt = 1./9. * (4 - z ** -2) / (1 + .8 * z ** -1 + .4 * z ** -2)
filt.zplot().savefig("zeropolo.pdf")
fcomb = comb.fb(25, .95)
fcomb.plot().savefig("plot-comb.pdf")
filt = 1./9. * (4 - z ** -2) / (1 + .8 * z ** -1 + .4 * z ** -2)
filt.zplot().savefig("zeropolo.pdf")
fcomb = comb.fb(25, .95)
fcomb.plot().savefig("plot-comb.pdf")
1 2
1
2
10. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
Imagens feitas com a AudioLazyImagens feitas com a AudioLazy
11. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
12. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
13. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
14. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
15. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
16. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
17. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
18. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
19. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
20. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
21. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
22. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
AudioLazy + Matplotlib + “hipsterplot”
23. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
24. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
25. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
26. AudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobelliniAudioLazy 0.6 will robotize you! – Danilo J. S. Bellini – @danilobellini
2014-08-09 – São Paulo / SP2014-08-09 – São Paulo / SP
?
Obrigado! Perguntas?Perguntas?
https://github.com/dhttps://github.com/danilobellini/audiolazyanilobellini/audiolazy