SlideShare a Scribd company logo
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
AudioLazy Python DSPAudioLazy Python DSP
(Digital Signal Processing)(Digital Signal Processing)
Danilo de Jesus da Silva BelliniDanilo de Jesus da Silva Bellini
(AudioLazy developer)(AudioLazy developer)
https://github.com/danilobellini/audiolazyhttps://github.com/danilobellini/audiolazy
https://pypi.python.org/pypi/audiolazyhttps://pypi.python.org/pypi/audiolazy
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
AudioLazyAudioLazy
●
DSP (DSP (Digital Signal ProcessingDigital Signal Processing) para áudio) para áudio
– AnáliseAnálise
●
MIR (MIR (Music Information RetrievalMusic Information Retrieval))
– SínteseSíntese
– ProcessamentoProcessamento
●
Expressividade de códigoExpressividade de código
– Prototipação, simulaçãoPrototipação, simulação
●
Tempo realTempo real
– Uso em aplicações finaisUso em aplicações finais
Documentação (Sphinx)
http://pythonhosted.org/audiolazy
Documentação (Sphinx)
http://pythonhosted.org/audiolazy
Python
2.7
e
3.2+!
Python
2.7
e
3.2+!
83% branch coverage
12k+ tests (2k+ por ambiente)
tox
py.test
CPython 2.7/3.2/3.3/3.4
PyPy
Travis CI + Coveralls
83% branch coverage
12k+ tests (2k+ por ambiente)
tox
py.test
CPython 2.7/3.2/3.3/3.4
PyPy
Travis CI + Coveralls
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Talk is cheap.Talk is cheap.
Show me the code.Show me the code.
(Linus Torvalds)(Linus Torvalds)
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
““Hello world”Hello world”
from audiolazy import *
rate = 44100
s, Hz = sHz(rate)
player = AudioIO()
snd = sinusoid(440 * Hz).limit(2 * s)
th = player.play(snd, rate=rate) # an AudioThread
player.close() # Kill th (AudioIO arg isn't true)
from audiolazy import *
rate = 44100
s, Hz = sHz(rate)
player = AudioIO()
snd = sinusoid(440 * Hz).limit(2 * s)
th = player.play(snd, rate=rate) # an AudioThread
player.close() # Kill th (AudioIO arg isn't true)
with AudioIO(True) as player: # Wait threads
player.play(snd, rate=rate)
with AudioIO(True) as player: # Wait threads
player.play(snd, rate=rate)
Multithread!
Multithread!
●
Tocar umaTocar uma
senóidesenóide
– ConsoleConsole
(e.g. IPython)(e.g. IPython)
– ScriptsScripts
●
Gerenciadores deGerenciadores de
contextocontexto
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Notas/Alturas e MIDI PitchNotas/Alturas e MIDI Pitch
●
Pitch (notas/alturas)Pitch (notas/alturas)
– C, D, E, F, G, A, BC, D, E, F, G, A, B
– Do, Re, Mi, Fa, Sol, La, SiDo, Re, Mi, Fa, Sol, La, Si
●
OitavasOitavas
– Iniciam em dóIniciam em dó
– Ignoram a alteraçãoIgnoram a alteração
●
““Cb4” (dó bemol) é a mesmaCb4” (dó bemol) é a mesma
nota que B3nota que B3
●
MIDI PitchMIDI Pitch
– Define 69 como A4 (láDefine 69 como A4 (lá
central), deslocamento emcentral), deslocamento em
semitonssemitons
●
Funções para realizarFunções para realizar
conversõesconversões
– midi2strmidi2str
– str2midistr2midi
– freq2strfreq2str
– str2freqstr2freq
– midi2freqmidi2freq
– freq2midifreq2midi
Há
conversores
além de
notas/alturas:
freq2lag
lag2freq
dB10
dB20
phon2dB
Há
conversores
além de
notas/alturas:
freq2lag
lag2freq
dB10
dB20
phon2dB
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
SínteseSíntese
●
ModulaçãoModulação
– Ring/anelRing/anel
– AMAM
– FMFM
●
Síntese aditivaSíntese aditiva
●
Síntese subtrativaSíntese subtrativa
●
Formas de ondaFormas de onda
– SenoidesSenoides
– SawtoothSawtooth
– Table lookupTable lookup
●
RuídoRuído
– Branco/uniformeBranco/uniforme
– GaussianoGaussiano
●
ExemplosExemplos
– FM: mcfm.pyFM: mcfm.py
– Subtrativa: formants.pySubtrativa: formants.py
– Aditiva com senoides:Aditiva com senoides:
shepard.pyshepard.py
keyboard.py:
GGGSUGSUG
LLLPUTSUG
keyboard.py:
GGGSUGSUG
LLLPUTSUG
Senóide * SenóideSenóide * Senóide
Senóide * (1 + Senóide)Senóide * (1 + Senóide)
Senóide(Senóide)Senóide(Senóide)
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
InteratividadeInteratividade
●
ControlStreamControlStream
– Property “value”Property “value”
– Permite interatividadePermite interatividade
●
Tempo realTempo real
In [1]: data = ControlStream(42)
In [2]: data.take(5)
Out[2]: [42, 42, 42, 42, 42]
In [3]: data.value = -1
In [4]: data.take(5)
Out[4]: [-1, -1, -1, -1, -1]
In [1]: data = ControlStream(42)
In [2]: data.take(5)
Out[2]: [42, 42, 42, 42, 42]
In [3]: data.value = -1
In [4]: data.take(5)
Out[4]: [-1, -1, -1, -1, -1]
mcfm.py (com
wxPython)
mcfm.py (com
wxPython)
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
ExemplosExemplos
●
HardwareHardware
– Arduino via PySerialArduino via PySerial
●
JogosJogos
– Campo minadoCampo minado
●
Síntese em tempo realSíntese em tempo real
– Recortes e normalização (geração de arquivos WAV)Recortes e normalização (geração de arquivos WAV)
●
KlockworkKlockwork
Exemplos no repositório!!!
keyboard.py (com tkinter)
play_bach_choral.py (com music21)
save_and_memoize_synth (wave)
Exemplos no repositório!!!
keyboard.py (com tkinter)
play_bach_choral.py (com music21)
save_and_memoize_synth (wave)
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Classe StreamClasse Stream
●
IterávelIterável
●
HeterogêneoHeterogêneo
●
Lazy! (Avaliação tardia)Lazy! (Avaliação tardia)
●
Operadores (Elementwise/broadcast)Operadores (Elementwise/broadcast)
●
Métodos (take, peek, limit, skip, map, filter, blocks)Métodos (take, peek, limit, skip, map, filter, blocks)
In [1]: from audiolazy import Stream, inf
In [2]: dados = Stream(5, 7, 1, 2, 5, 3, 2) # Periódico
In [3]: dados2 = Stream(0, 1) # Idem
In [4]: (dados + dados2).take(15)
Out[4]: [5, 8, 1, 3, 5, 4, 2, 6, 7, 2, 2, 6, 3, 3, 5]
In [5]: (_ * Stream(1 + 2j, -3j, 7).imag).map(int).take(inf)
Out[5]: [2.0, 0.0, 14]
In [1]: from audiolazy import Stream, inf
In [2]: dados = Stream(5, 7, 1, 2, 5, 3, 2) # Periódico
In [3]: dados2 = Stream(0, 1) # Idem
In [4]: (dados + dados2).take(15)
Out[4]: [5, 8, 1, 3, 5, 4, 2, 6, 7, 2, 2, 6, 3, 3, 5]
In [5]: (_ * Stream(1 + 2j, -3j, 7).imag).map(int).take(inf)
Out[5]: [2.0, 0.0, 14]
In [1]: data = Stream(range(7))
In [2]: blks = data.blocks(size=3, hop=2)
In [3]: [list(blk) for blk in blks]
Out[3]: [[0, 1, 2], [2, 3, 4], [4, 5, 6]]
In [1]: data = Stream(range(7))
In [2]: blks = data.blocks(size=3, hop=2)
In [3]: [list(blk) for blk in blks]
Out[3]: [[0, 1, 2], [2, 3, 4], [4, 5, 6]]
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Filtros LTIFiltros LTI
(Lineares e invariantes no tempo)(Lineares e invariantes no tempo)
““Digital signal processing is mainlyDigital signal processing is mainly
based on linear time-invariantbased on linear time-invariant
systems.systems.””
(Dutilleux, Dempwolf, Holters e Zölzer(Dutilleux, Dempwolf, Holters e Zölzer
DAFx, segunda edição, capítulo 4, p. 103)DAFx, segunda edição, capítulo 4, p. 103)
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Transformada ZTransformada Z
●
Definição:Definição:
●
Interpretação:Interpretação:
AtrasoAtraso em kem k
amostras!amostras!
In [1]: from audiolazy import z, inf
In [2]: sig = [1, 2, 3, 4, 5, 6, 7]
In [3]: (z ** -2)(sig).take(inf)
Out[3]: [0.0, 0.0, 1, 2, 3, 4, 5]
In [4]: (1 - z ** -2)(sig).take(inf)
Out[4]: [1.0, 2.0, 2, 2, 2, 2, 2]
In [1]: from audiolazy import z, inf
In [2]: sig = [1, 2, 3, 4, 5, 6, 7]
In [3]: (z ** -2)(sig).take(inf)
Out[3]: [0.0, 0.0, 1, 2, 3, 4, 5]
In [4]: (1 - z ** -2)(sig).take(inf)
Out[4]: [1.0, 2.0, 2, 2, 2, 2, 2]
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Filtros prontos!Filtros prontos!
●
AudioLazyAudioLazy
– Média móvelMédia móvel
– RessonadoresRessonadores
– CombComb
– Passa-baixasPassa-baixas
– Passa-altasPassa-altas
– Gammatone (Patterson-Holdsworth, audição)Gammatone (Patterson-Holdsworth, audição)
●
Scipy.signalScipy.signal
– ButterworthButterworth
– ChebyshevChebyshev
– ElípticoElíptico
Filtros variantes no tempo!
Coeficientes (fatores “a” em
parcelas “a * z ** -k”) podem ser
objetos Stream)
Filtros variantes no tempo!
Coeficientes (fatores “a” em
parcelas “a * z ** -k”) podem ser
objetos Stream)
JIT!JIT!
lptv.py
gammatone_plots.pylptv.py
gammatone_plots.py
XX
XX
Sympy?Sympy?
inearFilter.zplot
inearFilter.zplot
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Cálculo numéricoCálculo numérico
●
h[0] = 0h[0] = 0
●
h[1] = 1h[1] = 1
●
h[n] = h[n-1] + h[n-2]h[n] = h[n-1] + h[n-2]
– Entrada [0, 1, 0, 0, 0, 0, ...] aplicado a esse filtro digitalEntrada [0, 1, 0, 0, 0, 0, ...] aplicado a esse filtro digital
●
Função impulse()Função impulse()
In [2]: (z ** -1 / (1 - z ** -1 - z ** -2))(impulse(zero=0,
...: one=1), zero=0).take(17)
Out[2]: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987]
In [2]: (z ** -1 / (1 - z ** -1 - z ** -2))(impulse(zero=0,
...: one=1), zero=0).take(17)
Out[2]: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987]
h[n]=h[n−1]+h[ n−2]+δ[ n−1]
pi.pypi.py
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
PercepçãoPercepção
● Equal loudness com
ISO/FDIS 226:2003
– iso226_plot.pyiso226_plot.py
– Baseado na tabela do anexoBaseado na tabela do anexo
A da normaA da norma
●
Dependência de contextoDependência de contexto
– butterworth_with_noise.pybutterworth_with_noise.py
– Ruído baseado noRuído baseado no
Demonstrations of AuditoryDemonstrations of Auditory
Scene Analysis de A.Scene Analysis de A.
BregmanBregman
New!
New!
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Altura (pitch)Altura (pitch)
R. ShepardR. Shepard
●
2 dimensões:2 dimensões:
– Altura (Altura (pitch heightpitch height))
●
Dimensão “linear”Dimensão “linear”
– Croma (Croma (pitch chromapitch chroma))
●
Dimensão “circular”Dimensão “circular”
●
Lembra Escher →Lembra Escher →
““Hélice”Hélice”““Hélice”Hélice”
shepard.py
shepard.py
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Série harmônicaSérie harmônica
Filtro combFiltro combFiltro combFiltro comb comb(25, .95).plot().show()comb(25, .95).plot().show()
animated_plot.py
dft_pitch.py
play_bach_choral.py
animated_plot.py
dft_pitch.py
play_bach_choral.py
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Envoltória espectral comEnvoltória espectral com
LPC (Linear Predictive Coding)LPC (Linear Predictive Coding)
FormantesFormantes
Pode ser utilizado
para classificação de
vogais
(análise e síntese)
lpc_plot.py
formants.py
Pode ser utilizado
para classificação de
vogais
(análise e síntese)
lpc_plot.py
formants.py
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Decomposição cromáticaDecomposição cromática
from audiolazy import *
rate = 44100
s, Hz = sHz(rate)
note = "A4"
freqs = octaves(str2freq(note))
bw = lambda f: erb(f) * gammatone_erb_constants(4)[0]
filt = ParallelFilter(gammatone(f*Hz, bw(f)*Hz) for f in freqs)
filt.plot(samples=8192, rate=rate, freq_scale="log").show()
from audiolazy import *
rate = 44100
s, Hz = sHz(rate)
note = "A4"
freqs = octaves(str2freq(note))
bw = lambda f: erb(f) * gammatone_erb_constants(4)[0]
filt = ParallelFilter(gammatone(f*Hz, bw(f)*Hz) for f in freqs)
filt.plot(samples=8192, rate=rate, freq_scale="log").show()
Filtros
gammatone
+
“equivalência
de oitava”
Filtros
gammatone
+
“equivalência
de oitava”
Equivalente?Equivalente?
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Harmonia, croma, ritmo harmônicoHarmonia, croma, ritmo harmônico
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
PolinômiosPolinômios
●
Baseados em dicionárioBaseados em dicionário
– MemóriaMemória
– Expoente negativo (Laurent)Expoente negativo (Laurent)
– Expoente fracionário (soma deExpoente fracionário (soma de
potências)potências)
In [5]: (x + x ** 2 + x ** -.5)(4)
Out[5]: 20.5
In [6]: lagrange.poly([(0, 0), (1, 1)])
Out[6]: x
In [7]: lagrange.poly([(0, 0), (1, 1), (2, 2)])
Out[7]: x
In [8]: lagrange.poly([(0, 0), (1, 1), (2, 4)])
Out[8]: x^2
In [9]: lagrange.poly([(1, 3), (3, 14), (45, 0)])
Out[9]: -2.89773 + 6.0303 * x - 0.132576 * x^2
In [5]: (x + x ** 2 + x ** -.5)(4)
Out[5]: 20.5
In [6]: lagrange.poly([(0, 0), (1, 1)])
Out[6]: x
In [7]: lagrange.poly([(0, 0), (1, 1), (2, 2)])
Out[7]: x
In [8]: lagrange.poly([(0, 0), (1, 1), (2, 4)])
Out[8]: x^2
In [9]: lagrange.poly([(1, 3), (3, 14), (45, 0)])
Out[9]: -2.89773 + 6.0303 * x - 0.132576 * x^2
● Objeto “x”
● Interpolação
– Lagrange
● Objeto “x”
● Interpolação
– Lagrange
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Imagens feitas com a AudioLazyImagens feitas com a AudioLazy
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
AudioLazy + Matplotlib + “hipsterplot”AudioLazy + Matplotlib + “hipsterplot”
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
AudioLazy utiliza
PyAudio
(PortAudio)
JACK!
AudioLazy utiliza
PyAudio
(PortAudio)
JACK! Pedaleira
de
guitarra?
Pedaleira
de
guitarra?
Filtragem...Filtragem...
Distorção..
.
Distorção..
.
Flanger..
.
Flanger..
.
Phaser...Phaser...
Wah..
.
Wah..
.Robotização...Robotização...
Delay...Delay...
Reverb...Reverb...
Compressor...Compressor...
Limiter...Limiter...
Remoção de ruído...Remoção de ruído...
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
https://github.com/RicardoBoccoliGallego/DigitalPedalBoardhttps://github.com/RicardoBoccoliGallego/DigitalPedalBoard
Pedaleira
feita com a
AudioLazy
por 4
alunos da
Poli-USP
Pedaleira
feita com a
AudioLazy
por 4
alunos da
Poli-USP
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Taubaté Perl
Workshop 2014
Taubaté Perl
Workshop 2014
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
2014-05-24 – AudioLazy Python DSP (Digital Signal Processing)
Taubaté – SP – Danilo J. S. Bellini – @danilobellini
Obrigado!Obrigado!
Perguntas?Perguntas?
Fork me on GitHubFork me on GitHub
https://github.com/danilobellini/audiolazyhttps://github.com/danilobellini/audiolazy

More Related Content

Viewers also liked

Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014
Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014
Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014
Miguel Galves
 
Flanged end Pressure Switches MZ Series
Flanged end Pressure Switches MZ SeriesFlanged end Pressure Switches MZ Series
Flanged end Pressure Switches MZ Series
NK Instruments Pvt. Ltd.
 
R type Three Valve Manifold (3VS)
R type Three Valve Manifold (3VS)R type Three Valve Manifold (3VS)
R type Three Valve Manifold (3VS)
NK Instruments Pvt. Ltd.
 
Flameproof Low Range Pressure Switches FC series
Flameproof Low Range Pressure Switches FC seriesFlameproof Low Range Pressure Switches FC series
Flameproof Low Range Pressure Switches FC series
NK Instruments Pvt. Ltd.
 
AMeachem Portfolio
AMeachem PortfolioAMeachem Portfolio
AMeachem Portfolio
Ashley Meachem
 
Tugas topologi
Tugas topologiTugas topologi
Tugas topologihildadoong
 
About Me
About MeAbout Me
About Me
Amy Beard
 
Vacuum Switch MZ Series
Vacuum Switch MZ SeriesVacuum Switch MZ Series
Vacuum Switch MZ Series
NK Instruments Pvt. Ltd.
 
Marketing benchmarks-from-7000-businesses
Marketing benchmarks-from-7000-businessesMarketing benchmarks-from-7000-businesses
Marketing benchmarks-from-7000-businessesJacques Bouchard
 
News Nov 2-8
News Nov 2-8News Nov 2-8
News Nov 2-8nuthorn
 
Insersion type Radar Level Transmitter ELGWR 40
Insersion type Radar Level Transmitter ELGWR 40Insersion type Radar Level Transmitter ELGWR 40
Insersion type Radar Level Transmitter ELGWR 40
NK Instruments Pvt. Ltd.
 
บทที่ 2 ประเภทของคอมพิวเตอร์ (ตามราคาและความเร็ว)
บทที่ 2 ประเภทของคอมพิวเตอร์ (ตามราคาและความเร็ว)บทที่ 2 ประเภทของคอมพิวเตอร์ (ตามราคาและความเร็ว)
บทที่ 2 ประเภทของคอมพิวเตอร์ (ตามราคาและความเร็ว)
Nattipong Siangyen
 
The power of working and learning in circles
The power of working and learning in circlesThe power of working and learning in circles
The power of working and learning in circles
Alexandra Lederer
 
How to make a website who sell
How to make a website who sellHow to make a website who sell
How to make a website who sell
Jacques Bouchard
 
Le journal d'Argentré-du-Plessis
Le journal d'Argentré-du-PlessisLe journal d'Argentré-du-Plessis
Le journal d'Argentré-du-Plessis
Mairie Argentré du Plessis
 

Viewers also liked (19)

Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014
Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014
Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014
 
Flanged end Pressure Switches MZ Series
Flanged end Pressure Switches MZ SeriesFlanged end Pressure Switches MZ Series
Flanged end Pressure Switches MZ Series
 
R type Three Valve Manifold (3VS)
R type Three Valve Manifold (3VS)R type Three Valve Manifold (3VS)
R type Three Valve Manifold (3VS)
 
Flameproof Low Range Pressure Switches FC series
Flameproof Low Range Pressure Switches FC seriesFlameproof Low Range Pressure Switches FC series
Flameproof Low Range Pressure Switches FC series
 
AMeachem Portfolio
AMeachem PortfolioAMeachem Portfolio
AMeachem Portfolio
 
Tugas topologi
Tugas topologiTugas topologi
Tugas topologi
 
About Me
About MeAbout Me
About Me
 
Vacuum Switch MZ Series
Vacuum Switch MZ SeriesVacuum Switch MZ Series
Vacuum Switch MZ Series
 
Marketing benchmarks-from-7000-businesses
Marketing benchmarks-from-7000-businessesMarketing benchmarks-from-7000-businesses
Marketing benchmarks-from-7000-businesses
 
News Nov 2-8
News Nov 2-8News Nov 2-8
News Nov 2-8
 
Insersion type Radar Level Transmitter ELGWR 40
Insersion type Radar Level Transmitter ELGWR 40Insersion type Radar Level Transmitter ELGWR 40
Insersion type Radar Level Transmitter ELGWR 40
 
Tanveer ACCA Accountant
Tanveer ACCA AccountantTanveer ACCA Accountant
Tanveer ACCA Accountant
 
บทที่ 2 ประเภทของคอมพิวเตอร์ (ตามราคาและความเร็ว)
บทที่ 2 ประเภทของคอมพิวเตอร์ (ตามราคาและความเร็ว)บทที่ 2 ประเภทของคอมพิวเตอร์ (ตามราคาและความเร็ว)
บทที่ 2 ประเภทของคอมพิวเตอร์ (ตามราคาและความเร็ว)
 
The power of working and learning in circles
The power of working and learning in circlesThe power of working and learning in circles
The power of working and learning in circles
 
How to make a website who sell
How to make a website who sellHow to make a website who sell
How to make a website who sell
 
บรู
บรูบรู
บรู
 
Le journal d'Argentré-du-Plessis
Le journal d'Argentré-du-PlessisLe journal d'Argentré-du-Plessis
Le journal d'Argentré-du-Plessis
 
Arci tech cp 14 set
Arci tech cp 14 setArci tech cp 14 set
Arci tech cp 14 set
 
Presentation1
Presentation1Presentation1
Presentation1
 

Similar to (2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Processing)

(2014-03-26) [7masters] AudioLazy
(2014-03-26) [7masters] AudioLazy(2014-03-26) [7masters] AudioLazy
(2014-03-26) [7masters] 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
 
What Shazam doesn't want you to know
What Shazam doesn't want you to knowWhat Shazam doesn't want you to know
What Shazam doesn't want you to know
Roy van Rijn
 
It's so quiet. Let's make music.
It's so quiet. Let's make music.It's so quiet. Let's make music.
It's so quiet. Let's make music.
Loren Segal
 
Project Linne 徵音梅林 -- Virtual Singer Sound-bank Processed with Python
Project Linne 徵音梅林 -- Virtual Singer Sound-bank Processed with PythonProject Linne 徵音梅林 -- Virtual Singer Sound-bank Processed with Python
Project Linne 徵音梅林 -- Virtual Singer Sound-bank Processed with Python
Yuan CHAO
 
Simple Data Engineering in Python 3.5+ — Pycon.DE 2017 Karlsruhe — Bonobo ETL
Simple Data Engineering in Python 3.5+ — Pycon.DE 2017 Karlsruhe — Bonobo ETLSimple Data Engineering in Python 3.5+ — Pycon.DE 2017 Karlsruhe — Bonobo ETL
Simple Data Engineering in Python 3.5+ — Pycon.DE 2017 Karlsruhe — Bonobo ETL
Romain Dorgueil
 

Similar to (2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Processing) (6)

(2014-03-26) [7masters] AudioLazy
(2014-03-26) [7masters] AudioLazy(2014-03-26) [7masters] AudioLazy
(2014-03-26) [7masters] 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!
 
What Shazam doesn't want you to know
What Shazam doesn't want you to knowWhat Shazam doesn't want you to know
What Shazam doesn't want you to know
 
It's so quiet. Let's make music.
It's so quiet. Let's make music.It's so quiet. Let's make music.
It's so quiet. Let's make music.
 
Project Linne 徵音梅林 -- Virtual Singer Sound-bank Processed with Python
Project Linne 徵音梅林 -- Virtual Singer Sound-bank Processed with PythonProject Linne 徵音梅林 -- Virtual Singer Sound-bank Processed with Python
Project Linne 徵音梅林 -- Virtual Singer Sound-bank Processed with Python
 
Simple Data Engineering in Python 3.5+ — Pycon.DE 2017 Karlsruhe — Bonobo ETL
Simple Data Engineering in Python 3.5+ — Pycon.DE 2017 Karlsruhe — Bonobo ETLSimple Data Engineering in Python 3.5+ — Pycon.DE 2017 Karlsruhe — Bonobo ETL
Simple Data Engineering in Python 3.5+ — Pycon.DE 2017 Karlsruhe — Bonobo ETL
 

More from Danilo J. S. Bellini

(2018-10-18) [ETEC Uirapuru] Segurança da Informação
(2018-10-18) [ETEC Uirapuru] Segurança da Informação(2018-10-18) [ETEC Uirapuru] Segurança da Informação
(2018-10-18) [ETEC Uirapuru] Segurança da Informação
Danilo J. S. Bellini
 
(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask Assíncrono
(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask Assíncrono(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask Assíncrono
(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask Assíncrono
Danilo J. S. Bellini
 
(2018-07-14) [Just Python] Números no Python!
(2018-07-14) [Just Python] Números no Python!(2018-07-14) [Just Python] Números no Python!
(2018-07-14) [Just Python] Números no Python!
Danilo J. S. Bellini
 
(2017-08-12) [GruPy-SP] AudioLazy no GruPy! (+LV2)
(2017-08-12) [GruPy-SP] AudioLazy no GruPy! (+LV2)(2017-08-12) [GruPy-SP] AudioLazy no GruPy! (+LV2)
(2017-08-12) [GruPy-SP] AudioLazy no GruPy! (+LV2)
Danilo J. S. Bellini
 
(2017-07-22) [TDC] Audiolazy em 2017!
(2017-07-22) [TDC] Audiolazy em 2017!(2017-07-22) [TDC] Audiolazy em 2017!
(2017-07-22) [TDC] Audiolazy em 2017!
Danilo J. S. Bellini
 
(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)
(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)
(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)
Danilo J. S. Bellini
 
(2016-08-13) [Grupy-SP] Plugin pytest-doctest-custom v1.0.0
(2016-08-13) [Grupy-SP] Plugin pytest-doctest-custom v1.0.0(2016-08-13) [Grupy-SP] Plugin pytest-doctest-custom v1.0.0
(2016-08-13) [Grupy-SP] Plugin pytest-doctest-custom v1.0.0
Danilo J. S. Bellini
 
(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?
(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?
(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?
Danilo J. S. Bellini
 
(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)
(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)
(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)
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-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
 
(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
 

More from Danilo J. S. Bellini (20)

(2018-10-18) [ETEC Uirapuru] Segurança da Informação
(2018-10-18) [ETEC Uirapuru] Segurança da Informação(2018-10-18) [ETEC Uirapuru] Segurança da Informação
(2018-10-18) [ETEC Uirapuru] Segurança da Informação
 
(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask Assíncrono
(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask Assíncrono(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask Assíncrono
(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask Assíncrono
 
(2018-07-14) [Just Python] Números no Python!
(2018-07-14) [Just Python] Números no Python!(2018-07-14) [Just Python] Números no Python!
(2018-07-14) [Just Python] Números no Python!
 
(2017-08-12) [GruPy-SP] AudioLazy no GruPy! (+LV2)
(2017-08-12) [GruPy-SP] AudioLazy no GruPy! (+LV2)(2017-08-12) [GruPy-SP] AudioLazy no GruPy! (+LV2)
(2017-08-12) [GruPy-SP] AudioLazy no GruPy! (+LV2)
 
(2017-07-22) [TDC] Audiolazy em 2017!
(2017-07-22) [TDC] Audiolazy em 2017!(2017-07-22) [TDC] Audiolazy em 2017!
(2017-07-22) [TDC] Audiolazy em 2017!
 
(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)
(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)
(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)
 
(2016-08-13) [Grupy-SP] Plugin pytest-doctest-custom v1.0.0
(2016-08-13) [Grupy-SP] Plugin pytest-doctest-custom v1.0.0(2016-08-13) [Grupy-SP] Plugin pytest-doctest-custom v1.0.0
(2016-08-13) [Grupy-SP] Plugin pytest-doctest-custom v1.0.0
 
(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?
(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?
(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?
 
(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)
(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)
(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)
 
(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-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
 
(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
 

Recently uploaded

FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 

Recently uploaded (20)

FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 

(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Processing)

  • 1. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini AudioLazy Python DSPAudioLazy Python DSP (Digital Signal Processing)(Digital Signal Processing) Danilo de Jesus da Silva BelliniDanilo de Jesus da Silva Bellini (AudioLazy developer)(AudioLazy developer) https://github.com/danilobellini/audiolazyhttps://github.com/danilobellini/audiolazy https://pypi.python.org/pypi/audiolazyhttps://pypi.python.org/pypi/audiolazy
  • 2. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini AudioLazyAudioLazy ● DSP (DSP (Digital Signal ProcessingDigital Signal Processing) para áudio) para áudio – AnáliseAnálise ● MIR (MIR (Music Information RetrievalMusic Information Retrieval)) – SínteseSíntese – ProcessamentoProcessamento ● Expressividade de códigoExpressividade de código – Prototipação, simulaçãoPrototipação, simulação ● Tempo realTempo real – Uso em aplicações finaisUso em aplicações finais Documentação (Sphinx) http://pythonhosted.org/audiolazy Documentação (Sphinx) http://pythonhosted.org/audiolazy Python 2.7 e 3.2+! Python 2.7 e 3.2+! 83% branch coverage 12k+ tests (2k+ por ambiente) tox py.test CPython 2.7/3.2/3.3/3.4 PyPy Travis CI + Coveralls 83% branch coverage 12k+ tests (2k+ por ambiente) tox py.test CPython 2.7/3.2/3.3/3.4 PyPy Travis CI + Coveralls
  • 3. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini Talk is cheap.Talk is cheap. Show me the code.Show me the code. (Linus Torvalds)(Linus Torvalds)
  • 4. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini ““Hello world”Hello world” from audiolazy import * rate = 44100 s, Hz = sHz(rate) player = AudioIO() snd = sinusoid(440 * Hz).limit(2 * s) th = player.play(snd, rate=rate) # an AudioThread player.close() # Kill th (AudioIO arg isn't true) from audiolazy import * rate = 44100 s, Hz = sHz(rate) player = AudioIO() snd = sinusoid(440 * Hz).limit(2 * s) th = player.play(snd, rate=rate) # an AudioThread player.close() # Kill th (AudioIO arg isn't true) with AudioIO(True) as player: # Wait threads player.play(snd, rate=rate) with AudioIO(True) as player: # Wait threads player.play(snd, rate=rate) Multithread! Multithread! ● Tocar umaTocar uma senóidesenóide – ConsoleConsole (e.g. IPython)(e.g. IPython) – ScriptsScripts ● Gerenciadores deGerenciadores de contextocontexto
  • 5. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini Notas/Alturas e MIDI PitchNotas/Alturas e MIDI Pitch ● Pitch (notas/alturas)Pitch (notas/alturas) – C, D, E, F, G, A, BC, D, E, F, G, A, B – Do, Re, Mi, Fa, Sol, La, SiDo, Re, Mi, Fa, Sol, La, Si ● OitavasOitavas – Iniciam em dóIniciam em dó – Ignoram a alteraçãoIgnoram a alteração ● ““Cb4” (dó bemol) é a mesmaCb4” (dó bemol) é a mesma nota que B3nota que B3 ● MIDI PitchMIDI Pitch – Define 69 como A4 (láDefine 69 como A4 (lá central), deslocamento emcentral), deslocamento em semitonssemitons ● Funções para realizarFunções para realizar conversõesconversões – midi2strmidi2str – str2midistr2midi – freq2strfreq2str – str2freqstr2freq – midi2freqmidi2freq – freq2midifreq2midi Há conversores além de notas/alturas: freq2lag lag2freq dB10 dB20 phon2dB Há conversores além de notas/alturas: freq2lag lag2freq dB10 dB20 phon2dB
  • 6. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini SínteseSíntese ● ModulaçãoModulação – Ring/anelRing/anel – AMAM – FMFM ● Síntese aditivaSíntese aditiva ● Síntese subtrativaSíntese subtrativa ● Formas de ondaFormas de onda – SenoidesSenoides – SawtoothSawtooth – Table lookupTable lookup ● RuídoRuído – Branco/uniformeBranco/uniforme – GaussianoGaussiano ● ExemplosExemplos – FM: mcfm.pyFM: mcfm.py – Subtrativa: formants.pySubtrativa: formants.py – Aditiva com senoides:Aditiva com senoides: shepard.pyshepard.py keyboard.py: GGGSUGSUG LLLPUTSUG keyboard.py: GGGSUGSUG LLLPUTSUG Senóide * SenóideSenóide * Senóide Senóide * (1 + Senóide)Senóide * (1 + Senóide) Senóide(Senóide)Senóide(Senóide)
  • 7. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini InteratividadeInteratividade ● ControlStreamControlStream – Property “value”Property “value” – Permite interatividadePermite interatividade ● Tempo realTempo real In [1]: data = ControlStream(42) In [2]: data.take(5) Out[2]: [42, 42, 42, 42, 42] In [3]: data.value = -1 In [4]: data.take(5) Out[4]: [-1, -1, -1, -1, -1] In [1]: data = ControlStream(42) In [2]: data.take(5) Out[2]: [42, 42, 42, 42, 42] In [3]: data.value = -1 In [4]: data.take(5) Out[4]: [-1, -1, -1, -1, -1] mcfm.py (com wxPython) mcfm.py (com wxPython)
  • 8. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini ExemplosExemplos ● HardwareHardware – Arduino via PySerialArduino via PySerial ● JogosJogos – Campo minadoCampo minado ● Síntese em tempo realSíntese em tempo real – Recortes e normalização (geração de arquivos WAV)Recortes e normalização (geração de arquivos WAV) ● KlockworkKlockwork Exemplos no repositório!!! keyboard.py (com tkinter) play_bach_choral.py (com music21) save_and_memoize_synth (wave) Exemplos no repositório!!! keyboard.py (com tkinter) play_bach_choral.py (com music21) save_and_memoize_synth (wave)
  • 9. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini Classe StreamClasse Stream ● IterávelIterável ● HeterogêneoHeterogêneo ● Lazy! (Avaliação tardia)Lazy! (Avaliação tardia) ● Operadores (Elementwise/broadcast)Operadores (Elementwise/broadcast) ● Métodos (take, peek, limit, skip, map, filter, blocks)Métodos (take, peek, limit, skip, map, filter, blocks) In [1]: from audiolazy import Stream, inf In [2]: dados = Stream(5, 7, 1, 2, 5, 3, 2) # Periódico In [3]: dados2 = Stream(0, 1) # Idem In [4]: (dados + dados2).take(15) Out[4]: [5, 8, 1, 3, 5, 4, 2, 6, 7, 2, 2, 6, 3, 3, 5] In [5]: (_ * Stream(1 + 2j, -3j, 7).imag).map(int).take(inf) Out[5]: [2.0, 0.0, 14] In [1]: from audiolazy import Stream, inf In [2]: dados = Stream(5, 7, 1, 2, 5, 3, 2) # Periódico In [3]: dados2 = Stream(0, 1) # Idem In [4]: (dados + dados2).take(15) Out[4]: [5, 8, 1, 3, 5, 4, 2, 6, 7, 2, 2, 6, 3, 3, 5] In [5]: (_ * Stream(1 + 2j, -3j, 7).imag).map(int).take(inf) Out[5]: [2.0, 0.0, 14] In [1]: data = Stream(range(7)) In [2]: blks = data.blocks(size=3, hop=2) In [3]: [list(blk) for blk in blks] Out[3]: [[0, 1, 2], [2, 3, 4], [4, 5, 6]] In [1]: data = Stream(range(7)) In [2]: blks = data.blocks(size=3, hop=2) In [3]: [list(blk) for blk in blks] Out[3]: [[0, 1, 2], [2, 3, 4], [4, 5, 6]]
  • 10. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini Filtros LTIFiltros LTI (Lineares e invariantes no tempo)(Lineares e invariantes no tempo) ““Digital signal processing is mainlyDigital signal processing is mainly based on linear time-invariantbased on linear time-invariant systems.systems.”” (Dutilleux, Dempwolf, Holters e Zölzer(Dutilleux, Dempwolf, Holters e Zölzer DAFx, segunda edição, capítulo 4, p. 103)DAFx, segunda edição, capítulo 4, p. 103)
  • 11. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini Transformada ZTransformada Z ● Definição:Definição: ● Interpretação:Interpretação: AtrasoAtraso em kem k amostras!amostras! In [1]: from audiolazy import z, inf In [2]: sig = [1, 2, 3, 4, 5, 6, 7] In [3]: (z ** -2)(sig).take(inf) Out[3]: [0.0, 0.0, 1, 2, 3, 4, 5] In [4]: (1 - z ** -2)(sig).take(inf) Out[4]: [1.0, 2.0, 2, 2, 2, 2, 2] In [1]: from audiolazy import z, inf In [2]: sig = [1, 2, 3, 4, 5, 6, 7] In [3]: (z ** -2)(sig).take(inf) Out[3]: [0.0, 0.0, 1, 2, 3, 4, 5] In [4]: (1 - z ** -2)(sig).take(inf) Out[4]: [1.0, 2.0, 2, 2, 2, 2, 2]
  • 12. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini Filtros prontos!Filtros prontos! ● AudioLazyAudioLazy – Média móvelMédia móvel – RessonadoresRessonadores – CombComb – Passa-baixasPassa-baixas – Passa-altasPassa-altas – Gammatone (Patterson-Holdsworth, audição)Gammatone (Patterson-Holdsworth, audição) ● Scipy.signalScipy.signal – ButterworthButterworth – ChebyshevChebyshev – ElípticoElíptico Filtros variantes no tempo! Coeficientes (fatores “a” em parcelas “a * z ** -k”) podem ser objetos Stream) Filtros variantes no tempo! Coeficientes (fatores “a” em parcelas “a * z ** -k”) podem ser objetos Stream) JIT!JIT! lptv.py gammatone_plots.pylptv.py gammatone_plots.py XX XX Sympy?Sympy? inearFilter.zplot inearFilter.zplot
  • 13. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini Cálculo numéricoCálculo numérico ● h[0] = 0h[0] = 0 ● h[1] = 1h[1] = 1 ● h[n] = h[n-1] + h[n-2]h[n] = h[n-1] + h[n-2] – Entrada [0, 1, 0, 0, 0, 0, ...] aplicado a esse filtro digitalEntrada [0, 1, 0, 0, 0, 0, ...] aplicado a esse filtro digital ● Função impulse()Função impulse() In [2]: (z ** -1 / (1 - z ** -1 - z ** -2))(impulse(zero=0, ...: one=1), zero=0).take(17) Out[2]: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987] In [2]: (z ** -1 / (1 - z ** -1 - z ** -2))(impulse(zero=0, ...: one=1), zero=0).take(17) Out[2]: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987] h[n]=h[n−1]+h[ n−2]+δ[ n−1] pi.pypi.py
  • 14. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini PercepçãoPercepção ● Equal loudness com ISO/FDIS 226:2003 – iso226_plot.pyiso226_plot.py – Baseado na tabela do anexoBaseado na tabela do anexo A da normaA da norma ● Dependência de contextoDependência de contexto – butterworth_with_noise.pybutterworth_with_noise.py – Ruído baseado noRuído baseado no Demonstrations of AuditoryDemonstrations of Auditory Scene Analysis de A.Scene Analysis de A. BregmanBregman New! New!
  • 15. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini Altura (pitch)Altura (pitch) R. ShepardR. Shepard ● 2 dimensões:2 dimensões: – Altura (Altura (pitch heightpitch height)) ● Dimensão “linear”Dimensão “linear” – Croma (Croma (pitch chromapitch chroma)) ● Dimensão “circular”Dimensão “circular” ● Lembra Escher →Lembra Escher → ““Hélice”Hélice”““Hélice”Hélice” shepard.py shepard.py
  • 16. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini Série harmônicaSérie harmônica Filtro combFiltro combFiltro combFiltro comb comb(25, .95).plot().show()comb(25, .95).plot().show() animated_plot.py dft_pitch.py play_bach_choral.py animated_plot.py dft_pitch.py play_bach_choral.py
  • 17. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini Envoltória espectral comEnvoltória espectral com LPC (Linear Predictive Coding)LPC (Linear Predictive Coding) FormantesFormantes Pode ser utilizado para classificação de vogais (análise e síntese) lpc_plot.py formants.py Pode ser utilizado para classificação de vogais (análise e síntese) lpc_plot.py formants.py
  • 18. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini Decomposição cromáticaDecomposição cromática from audiolazy import * rate = 44100 s, Hz = sHz(rate) note = "A4" freqs = octaves(str2freq(note)) bw = lambda f: erb(f) * gammatone_erb_constants(4)[0] filt = ParallelFilter(gammatone(f*Hz, bw(f)*Hz) for f in freqs) filt.plot(samples=8192, rate=rate, freq_scale="log").show() from audiolazy import * rate = 44100 s, Hz = sHz(rate) note = "A4" freqs = octaves(str2freq(note)) bw = lambda f: erb(f) * gammatone_erb_constants(4)[0] filt = ParallelFilter(gammatone(f*Hz, bw(f)*Hz) for f in freqs) filt.plot(samples=8192, rate=rate, freq_scale="log").show() Filtros gammatone + “equivalência de oitava” Filtros gammatone + “equivalência de oitava” Equivalente?Equivalente?
  • 19. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini Harmonia, croma, ritmo harmônicoHarmonia, croma, ritmo harmônico
  • 20. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini PolinômiosPolinômios ● Baseados em dicionárioBaseados em dicionário – MemóriaMemória – Expoente negativo (Laurent)Expoente negativo (Laurent) – Expoente fracionário (soma deExpoente fracionário (soma de potências)potências) In [5]: (x + x ** 2 + x ** -.5)(4) Out[5]: 20.5 In [6]: lagrange.poly([(0, 0), (1, 1)]) Out[6]: x In [7]: lagrange.poly([(0, 0), (1, 1), (2, 2)]) Out[7]: x In [8]: lagrange.poly([(0, 0), (1, 1), (2, 4)]) Out[8]: x^2 In [9]: lagrange.poly([(1, 3), (3, 14), (45, 0)]) Out[9]: -2.89773 + 6.0303 * x - 0.132576 * x^2 In [5]: (x + x ** 2 + x ** -.5)(4) Out[5]: 20.5 In [6]: lagrange.poly([(0, 0), (1, 1)]) Out[6]: x In [7]: lagrange.poly([(0, 0), (1, 1), (2, 2)]) Out[7]: x In [8]: lagrange.poly([(0, 0), (1, 1), (2, 4)]) Out[8]: x^2 In [9]: lagrange.poly([(1, 3), (3, 14), (45, 0)]) Out[9]: -2.89773 + 6.0303 * x - 0.132576 * x^2 ● Objeto “x” ● Interpolação – Lagrange ● Objeto “x” ● Interpolação – Lagrange
  • 21. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini Imagens feitas com a AudioLazyImagens feitas com a AudioLazy
  • 22. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini
  • 23. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini
  • 24. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini
  • 25. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini
  • 26. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini
  • 27. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini
  • 28. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini
  • 29. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini
  • 30. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini
  • 31. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini
  • 32. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini AudioLazy + Matplotlib + “hipsterplot”AudioLazy + Matplotlib + “hipsterplot”
  • 33. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini
  • 34. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini
  • 35. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini AudioLazy utiliza PyAudio (PortAudio) JACK! AudioLazy utiliza PyAudio (PortAudio) JACK! Pedaleira de guitarra? Pedaleira de guitarra? Filtragem...Filtragem... Distorção.. . Distorção.. . Flanger.. . Flanger.. . Phaser...Phaser... Wah.. . Wah.. .Robotização...Robotização... Delay...Delay... Reverb...Reverb... Compressor...Compressor... Limiter...Limiter... Remoção de ruído...Remoção de ruído...
  • 36. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini https://github.com/RicardoBoccoliGallego/DigitalPedalBoardhttps://github.com/RicardoBoccoliGallego/DigitalPedalBoard Pedaleira feita com a AudioLazy por 4 alunos da Poli-USP Pedaleira feita com a AudioLazy por 4 alunos da Poli-USP
  • 37. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini
  • 38. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini
  • 39. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini
  • 40. Taubaté Perl Workshop 2014 Taubaté Perl Workshop 2014 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini 2014-05-24 – AudioLazy Python DSP (Digital Signal Processing) Taubaté – SP – Danilo J. S. Bellini – @danilobellini Obrigado!Obrigado! Perguntas?Perguntas? Fork me on GitHubFork me on GitHub https://github.com/danilobellini/audiolazyhttps://github.com/danilobellini/audiolazy