SlideShare uma empresa Scribd logo
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 1/56
A
udioLazy
AudioLazy em 2017!AudioLazy em 2017!
https://github.com/danilobellini/audiolazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 2/56
A
udioLazy
Danilo J. S.
Bellini
Danilo J. S.
Bellini
● Formação na USP
– Engenheiro eletricista (Poli)
– Bacharel em música (ECA)
– Mestre em ciência da
computação (IME)
● Experiência
– Processamento de sinais
(áudio e imagem)
– Estatística
– GIS / GIScience
– Python, Shell script, …
– Web, Docker, testes, …
● FLOSS developer
– Projetos: AudioLazy,
Dose, PyScanPrev,
pyturing, pytest-doctest-
custom, fractal, …
– Contribuições: IPython,
watchdog, py.test,
openModeller, …
● https://github.com/danilobellini
● https://bitbucket.org/danilobellini
● https://br.linkedin.com/in/danilo-j-s-bellini-66a96310
● https://ericstk.wordpress.com/2014/10/16
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 3/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 4/56
A
udioLazy
AudioLazyAudioLazy
● DSP (Digital Signal Processing)
– Análise
– Síntese
– Processamento
– Psicoacústica (modelos)
●
Expressividade de código
●
Tempo real
●
100% Python
●
GPLv3
Documentação (Sphinx)
http://pythonhosted.org/audiolazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 5/56
A
udioLazy
Síntese!Síntese!
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 6/56
A
udioLazy
Exemplos de sínteseExemplos de síntese
● A partir de alguma partitura / notação
– Direto no código
./ode_to_joy.py jack
– Integração com Music21
./play_bach_choral_square.py jack
● Resultado
– Armazenamento da síntese (WAVE)
./save_and_memoize_synth.py
– I/O via PyAudio (Tempo real)
● PortAudio: ALSA, JACK, PulseAudio, ASIO, …
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 7/56
A
udioLazy
SínteseSíntese
● Modulação
– Ring/anel (produto)
– AM (anel + portadora)
– FM
./mcfm.py jack
● Síntese aditiva
– e.g. shepard.py
● Síntese subtrativa (filtros)
– e.g. ode_to_joy.py
● Formas de onda
– Senoidal
– Dente de serra (Sawtooth)
– Consulta à tabela (Table
lookup)
● Ruído
– Branco/uniforme
– Gaussiano
./keyboard.py jack
GGGSUGSUG
LLLPUTSUG
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 8/56
A
udioLazy
Análise!Análise!
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 9/56
A
udioLazy
AnáliseAnálise
● ZCR (Taxa de cruzamento no zero)
● DFT (Transformada Discreta de Fourier)
./dft_pitch.py jack
● AMDF (Average Magnitude Difference Function)
1
2
1
2
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 10/56
A
udioLazy
LPC
Linear Predictive Coding
LPC
Linear Predictive Coding
● Modelo fonte-filtro
– Classificação de vogais
– Análise
./lpc_plot.py
– Síntese
./formants.py jack
● Envoltória espectral
Formantes
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 11/56
A
udioLazy
Animated Plot!
(Matplotlib)
Animated Plot!
(Matplotlib)
● Análise em tempo
real
● Visualização no
tempo e na
frequência
– Sons harmônicos
./animated_plot.py jack
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 12/56
A
udioLazy
Psicoacústica!Psicoacústica!
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 13/56
A
udioLazy
Modelo ISO/FDIS 226:2003
(Loudness)
Modelo ISO/FDIS 226:2003
(Loudness) ./iso226_plot.py
./chirp_constant_phon.py
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 14/56
A
udioLazy
Filtros gammatone
(auditory modeling)
Filtros gammatone
(auditory modeling)
./gammatone_plots.py
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 15/56
A
udioLazy
Filtros gammatone
(auditory modeling)
Filtros gammatone
(auditory modeling)
./gammatone_plots.py
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 16/56
A
udioLazyAuditory Scene Analysis
(A. Bregman)
Auditory Scene Analysis
(A. Bregman)
./butterworth_with_noise.py jack
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 17/56
A
udioLazy
Filtros!Filtros!
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 18/56
A
udioLazy
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
Plots de ZFilter (objeto z)
Exemplo de filtro comb
Plots de ZFilter (objeto z)
Exemplo de filtro comb
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 19/56
A
udioLazy
Filtro de Butterworth
AudioLazy + Scipy
Filtro de Butterworth
AudioLazy + Scipy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 20/56
A
udioLazy
Processamento!Processamento!
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 21/56
A
udioLazy
STFTSTFT
● Transformada de Fourier de curto período
● Longo processo
– 1. Análise (transformada de Fourier)
– 2. Processamento (espectral)
– 3. Síntese (inversa da transformada de Fourier)
● Saltos diferentes do tamanho da janela de análise
– Overlap-add
● Dá para simular a mudança de timbre do pitch shift sem
mudar o pitch?
./roll_magnitude.py jack
● Permite efeitos como time stretch, pitch shift
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 22/56
A
udioLazy
Robotize!Robotize!
● DAFx (Livro)
● Oneliner: stft(abs)
./robotize.py jack
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 23/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 24/56
A
udioLazy
And now for
something
completely
different…
And now for
something
completely
different…
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 25/56
A
udioLazy
Imagens!
Criadas 100% em código (o mouse não foi usado)
Bibliotecas:
AudioLazy
Numpy
Matplotlib
Shapely
Hipsterplot
Imagens!
Criadas 100% em código (o mouse não foi usado)
Bibliotecas:
AudioLazy
Numpy
Matplotlib
Shapely
Hipsterplot
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 26/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 27/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 28/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 29/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 30/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 31/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 32/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 33/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 34/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 35/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 36/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 37/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 38/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 39/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 40/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 41/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 42/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 43/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 44/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 45/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 46/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 47/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 48/56
A
udioLazy
Senta que lá vem
história
Senta que lá vem
história
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 49/56
A
udioLazy
20132013
● Pedaleira
– Arduino + AudioLazy
– Orientandos do 2o ano de
graduação na Poli-USP
● Alunos:
– Daniel Ken Fujimori Killner
– Gabriel Moura Vieira
Martinez
– Rafael Alves de Araujo
Sena
– Ricardo Boccoli Gallego
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 50/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 51/56
A
udioLazy
https://github.com/ricardobg/DigitalPedalBoard
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 52/56
A
udioLazy
● Evidências de
uso:
– Issues no
GitHub
– E-mails
– Tweets
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 53/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 54/56
A
udioLazy
● Há usuários em diversos países
● Casos de uso: experimentação e aprendizado de DSP
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 55/56
A
udioLazy
Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 56/56
A
udioLazy
Fim!
Perguntas?
Fim!
Perguntas?

Mais conteúdo relacionado

Mais de Danilo J. S. Bellini

(2014-11-05) [PythonBrasil] Testando com py.test e tox
(2014-11-05) [PythonBrasil] Testando com py.test e tox(2014-11-05) [PythonBrasil] Testando com py.test e tox
(2014-11-05) [PythonBrasil] Testando com py.test e tox
Danilo J. S. Bellini
 
(2014-10-27) [SETI-UFLA-MG] AudioLazy
(2014-10-27) [SETI-UFLA-MG] AudioLazy(2014-10-27) [SETI-UFLA-MG] AudioLazy
(2014-10-27) [SETI-UFLA-MG] AudioLazy
Danilo J. S. Bellini
 
(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!
(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!
(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!
Danilo J. S. Bellini
 
(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...
(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...
(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...
Danilo J. S. Bellini
 
(2014-04-16) [Garoa HC] Strategy
(2014-04-16) [Garoa HC] Strategy(2014-04-16) [Garoa HC] Strategy
(2014-04-16) [Garoa HC] Strategy
Danilo J. S. Bellini
 
(2013-12-18) [Garoa HC] AudioLazy
(2013-12-18) [Garoa HC] AudioLazy(2013-12-18) [Garoa HC] AudioLazy
(2013-12-18) [Garoa HC] AudioLazy
Danilo J. S. Bellini
 
(2014-03-26) [7masters] AudioLazy
(2014-03-26) [7masters] AudioLazy(2014-03-26) [7masters] AudioLazy
(2014-03-26) [7masters] AudioLazy
Danilo J. S. Bellini
 
(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)
(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)
(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)
Danilo J. S. Bellini
 
(2013-10-16) [LatinoWare] Processamento de sinais em Python
(2013-10-16) [LatinoWare] Processamento de sinais em Python(2013-10-16) [LatinoWare] Processamento de sinais em Python
(2013-10-16) [LatinoWare] Processamento de sinais em Python
Danilo J. S. Bellini
 
(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...
(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...
(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...
Danilo J. S. Bellini
 
(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazy
(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazy(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazy
(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazy
Danilo J. S. Bellini
 
(2013-10-17) [LatinoWare] Automatizando o GIMP com Python
(2013-10-17) [LatinoWare] Automatizando o GIMP com Python(2013-10-17) [LatinoWare] Automatizando o GIMP com Python
(2013-10-17) [LatinoWare] Automatizando o GIMP com Python
Danilo J. S. Bellini
 
(2013-10-02) [PythonBrasil] Compatibilidade entre Python 2 e 3
(2013-10-02) [PythonBrasil] Compatibilidade entre Python 2 e 3(2013-10-02) [PythonBrasil] Compatibilidade entre Python 2 e 3
(2013-10-02) [PythonBrasil] Compatibilidade entre Python 2 e 3
Danilo J. S. Bellini
 
(2013-07-05) [fisl] Semáforo Gráfico dose para TDD em dojos
(2013-07-05) [fisl] Semáforo Gráfico dose para TDD em dojos(2013-07-05) [fisl] Semáforo Gráfico dose para TDD em dojos
(2013-07-05) [fisl] Semáforo Gráfico dose para TDD em dojos
Danilo J. S. Bellini
 
(2013-07-05) [fisl] Compatibilidade entre Python 2 e 3
(2013-07-05) [fisl] Compatibilidade entre Python 2 e 3(2013-07-05) [fisl] Compatibilidade entre Python 2 e 3
(2013-07-05) [fisl] Compatibilidade entre Python 2 e 3
Danilo J. S. Bellini
 
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
Danilo J. S. Bellini
 
(2013-05-03) AudioLazy - Slides
(2013-05-03) AudioLazy - Slides(2013-05-03) AudioLazy - Slides
(2013-05-03) AudioLazy - Slides
Danilo J. S. Bellini
 

Mais de Danilo J. S. Bellini (17)

(2014-11-05) [PythonBrasil] Testando com py.test e tox
(2014-11-05) [PythonBrasil] Testando com py.test e tox(2014-11-05) [PythonBrasil] Testando com py.test e tox
(2014-11-05) [PythonBrasil] Testando com py.test e tox
 
(2014-10-27) [SETI-UFLA-MG] AudioLazy
(2014-10-27) [SETI-UFLA-MG] AudioLazy(2014-10-27) [SETI-UFLA-MG] AudioLazy
(2014-10-27) [SETI-UFLA-MG] AudioLazy
 
(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!
(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!
(2014-08-09) [TDC] AudioLazy 0.6 will robotize you!
 
(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...
(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...
(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...
 
(2014-04-16) [Garoa HC] Strategy
(2014-04-16) [Garoa HC] Strategy(2014-04-16) [Garoa HC] Strategy
(2014-04-16) [Garoa HC] Strategy
 
(2013-12-18) [Garoa HC] AudioLazy
(2013-12-18) [Garoa HC] AudioLazy(2013-12-18) [Garoa HC] AudioLazy
(2013-12-18) [Garoa HC] AudioLazy
 
(2014-03-26) [7masters] AudioLazy
(2014-03-26) [7masters] AudioLazy(2014-03-26) [7masters] AudioLazy
(2014-03-26) [7masters] AudioLazy
 
(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)
(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)
(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)
 
(2013-10-16) [LatinoWare] Processamento de sinais em Python
(2013-10-16) [LatinoWare] Processamento de sinais em Python(2013-10-16) [LatinoWare] Processamento de sinais em Python
(2013-10-16) [LatinoWare] Processamento de sinais em Python
 
(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...
(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...
(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...
 
(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazy
(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazy(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazy
(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazy
 
(2013-10-17) [LatinoWare] Automatizando o GIMP com Python
(2013-10-17) [LatinoWare] Automatizando o GIMP com Python(2013-10-17) [LatinoWare] Automatizando o GIMP com Python
(2013-10-17) [LatinoWare] Automatizando o GIMP com Python
 
(2013-10-02) [PythonBrasil] Compatibilidade entre Python 2 e 3
(2013-10-02) [PythonBrasil] Compatibilidade entre Python 2 e 3(2013-10-02) [PythonBrasil] Compatibilidade entre Python 2 e 3
(2013-10-02) [PythonBrasil] Compatibilidade entre Python 2 e 3
 
(2013-07-05) [fisl] Semáforo Gráfico dose para TDD em dojos
(2013-07-05) [fisl] Semáforo Gráfico dose para TDD em dojos(2013-07-05) [fisl] Semáforo Gráfico dose para TDD em dojos
(2013-07-05) [fisl] Semáforo Gráfico dose para TDD em dojos
 
(2013-07-05) [fisl] Compatibilidade entre Python 2 e 3
(2013-07-05) [fisl] Compatibilidade entre Python 2 e 3(2013-07-05) [fisl] Compatibilidade entre Python 2 e 3
(2013-07-05) [fisl] Compatibilidade entre Python 2 e 3
 
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...
 
(2013-05-03) AudioLazy - Slides
(2013-05-03) AudioLazy - Slides(2013-05-03) AudioLazy - Slides
(2013-05-03) AudioLazy - Slides
 

(2017-07-22) [TDC] Audiolazy em 2017!

  • 1. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 1/56 A udioLazy AudioLazy em 2017!AudioLazy em 2017! https://github.com/danilobellini/audiolazy
  • 2. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 2/56 A udioLazy Danilo J. S. Bellini Danilo J. S. Bellini ● Formação na USP – Engenheiro eletricista (Poli) – Bacharel em música (ECA) – Mestre em ciência da computação (IME) ● Experiência – Processamento de sinais (áudio e imagem) – Estatística – GIS / GIScience – Python, Shell script, … – Web, Docker, testes, … ● FLOSS developer – Projetos: AudioLazy, Dose, PyScanPrev, pyturing, pytest-doctest- custom, fractal, … – Contribuições: IPython, watchdog, py.test, openModeller, … ● https://github.com/danilobellini ● https://bitbucket.org/danilobellini ● https://br.linkedin.com/in/danilo-j-s-bellini-66a96310 ● https://ericstk.wordpress.com/2014/10/16
  • 3. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 3/56 A udioLazy
  • 4. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 4/56 A udioLazy AudioLazyAudioLazy ● DSP (Digital Signal Processing) – Análise – Síntese – Processamento – Psicoacústica (modelos) ● Expressividade de código ● Tempo real ● 100% Python ● GPLv3 Documentação (Sphinx) http://pythonhosted.org/audiolazy
  • 5. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 5/56 A udioLazy Síntese!Síntese!
  • 6. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 6/56 A udioLazy Exemplos de sínteseExemplos de síntese ● A partir de alguma partitura / notação – Direto no código ./ode_to_joy.py jack – Integração com Music21 ./play_bach_choral_square.py jack ● Resultado – Armazenamento da síntese (WAVE) ./save_and_memoize_synth.py – I/O via PyAudio (Tempo real) ● PortAudio: ALSA, JACK, PulseAudio, ASIO, …
  • 7. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 7/56 A udioLazy SínteseSíntese ● Modulação – Ring/anel (produto) – AM (anel + portadora) – FM ./mcfm.py jack ● Síntese aditiva – e.g. shepard.py ● Síntese subtrativa (filtros) – e.g. ode_to_joy.py ● Formas de onda – Senoidal – Dente de serra (Sawtooth) – Consulta à tabela (Table lookup) ● Ruído – Branco/uniforme – Gaussiano ./keyboard.py jack GGGSUGSUG LLLPUTSUG
  • 8. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 8/56 A udioLazy Análise!Análise!
  • 9. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 9/56 A udioLazy AnáliseAnálise ● ZCR (Taxa de cruzamento no zero) ● DFT (Transformada Discreta de Fourier) ./dft_pitch.py jack ● AMDF (Average Magnitude Difference Function) 1 2 1 2
  • 10. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 10/56 A udioLazy LPC Linear Predictive Coding LPC Linear Predictive Coding ● Modelo fonte-filtro – Classificação de vogais – Análise ./lpc_plot.py – Síntese ./formants.py jack ● Envoltória espectral Formantes
  • 11. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 11/56 A udioLazy Animated Plot! (Matplotlib) Animated Plot! (Matplotlib) ● Análise em tempo real ● Visualização no tempo e na frequência – Sons harmônicos ./animated_plot.py jack
  • 12. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 12/56 A udioLazy Psicoacústica!Psicoacústica!
  • 13. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 13/56 A udioLazy Modelo ISO/FDIS 226:2003 (Loudness) Modelo ISO/FDIS 226:2003 (Loudness) ./iso226_plot.py ./chirp_constant_phon.py
  • 14. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 14/56 A udioLazy Filtros gammatone (auditory modeling) Filtros gammatone (auditory modeling) ./gammatone_plots.py
  • 15. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 15/56 A udioLazy Filtros gammatone (auditory modeling) Filtros gammatone (auditory modeling) ./gammatone_plots.py
  • 16. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 16/56 A udioLazyAuditory Scene Analysis (A. Bregman) Auditory Scene Analysis (A. Bregman) ./butterworth_with_noise.py jack
  • 17. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 17/56 A udioLazy Filtros!Filtros!
  • 18. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 18/56 A udioLazy 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 Plots de ZFilter (objeto z) Exemplo de filtro comb Plots de ZFilter (objeto z) Exemplo de filtro comb
  • 19. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 19/56 A udioLazy Filtro de Butterworth AudioLazy + Scipy Filtro de Butterworth AudioLazy + Scipy
  • 20. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 20/56 A udioLazy Processamento!Processamento!
  • 21. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 21/56 A udioLazy STFTSTFT ● Transformada de Fourier de curto período ● Longo processo – 1. Análise (transformada de Fourier) – 2. Processamento (espectral) – 3. Síntese (inversa da transformada de Fourier) ● Saltos diferentes do tamanho da janela de análise – Overlap-add ● Dá para simular a mudança de timbre do pitch shift sem mudar o pitch? ./roll_magnitude.py jack ● Permite efeitos como time stretch, pitch shift
  • 22. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 22/56 A udioLazy Robotize!Robotize! ● DAFx (Livro) ● Oneliner: stft(abs) ./robotize.py jack
  • 23. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 23/56 A udioLazy
  • 24. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 24/56 A udioLazy And now for something completely different… And now for something completely different…
  • 25. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 25/56 A udioLazy Imagens! Criadas 100% em código (o mouse não foi usado) Bibliotecas: AudioLazy Numpy Matplotlib Shapely Hipsterplot Imagens! Criadas 100% em código (o mouse não foi usado) Bibliotecas: AudioLazy Numpy Matplotlib Shapely Hipsterplot
  • 26. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 26/56 A udioLazy
  • 27. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 27/56 A udioLazy
  • 28. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 28/56 A udioLazy
  • 29. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 29/56 A udioLazy
  • 30. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 30/56 A udioLazy
  • 31. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 31/56 A udioLazy
  • 32. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 32/56 A udioLazy
  • 33. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 33/56 A udioLazy
  • 34. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 34/56 A udioLazy
  • 35. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 35/56 A udioLazy
  • 36. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 36/56 A udioLazy
  • 37. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 37/56 A udioLazy
  • 38. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 38/56 A udioLazy
  • 39. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 39/56 A udioLazy
  • 40. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 40/56 A udioLazy
  • 41. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 41/56 A udioLazy
  • 42. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 42/56 A udioLazy
  • 43. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 43/56 A udioLazy
  • 44. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 44/56 A udioLazy
  • 45. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 45/56 A udioLazy
  • 46. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 46/56 A udioLazy
  • 47. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 47/56 A udioLazy
  • 48. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 48/56 A udioLazy Senta que lá vem história Senta que lá vem história
  • 49. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 49/56 A udioLazy 20132013 ● Pedaleira – Arduino + AudioLazy – Orientandos do 2o ano de graduação na Poli-USP ● Alunos: – Daniel Ken Fujimori Killner – Gabriel Moura Vieira Martinez – Rafael Alves de Araujo Sena – Ricardo Boccoli Gallego
  • 50. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 50/56 A udioLazy
  • 51. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 51/56 A udioLazy https://github.com/ricardobg/DigitalPedalBoard
  • 52. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 52/56 A udioLazy ● Evidências de uso: – Issues no GitHub – E-mails – Tweets
  • 53. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 53/56 A udioLazy
  • 54. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 54/56 A udioLazy ● Há usuários em diversos países ● Casos de uso: experimentação e aprendizado de DSP
  • 55. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 55/56 A udioLazy
  • 56. Danilo J. S. Bellini – @danilobellini AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 56/56 A udioLazy Fim! Perguntas? Fim! Perguntas?