0
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube
São Paulo – SP – Danilo J. S. Bel...
Upcoming SlideShare
Loading in...5
×

(2013-12-18) [Garoa HC] AudioLazy

182

Published on

Slides da apresentação da AudioLazy no Garoa Hacker Clube, de duração de 2 horas.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
182
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "(2013-12-18) [Garoa HC] AudioLazy"

  1. 1. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini AudioLazyAudioLazy Danilo de Jesus da Silva BelliniDanilo de Jesus da Silva Bellini (AudioLazy Developer)(AudioLazy Developer) danilo.bellini [at] gmail.comdanilo.bellini [at] gmail.com Twitter: @danilobelliniTwitter: @danilobellini https://pypi.python.org/pypi/audiolazyhttps://pypi.python.org/pypi/audiolazy
  2. 2. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – 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 Python 2 e 3 Python 2 e 3 c/ o mesmo código! c/ o mesmo código! Documentação (Sphinx) http://pythonhosted.org/audiolazy
  3. 3. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini Testes e cobertura de códigoTestes e cobertura de código --------------- coverage: platform linux2, python 2.7.3-final-0 ---------------- Name Stmts Miss Branch BrPart Cover Missing ------------------------------------------------------------ __init__ 44 1 18 4 92% 72 lazy_analysis 125 3 60 2 97% 211, 259-260 lazy_auditory 60 0 14 0 100% lazy_compat 42 5 6 1 88% 43, 67-68, 78-79 lazy_core 175 7 80 9 94% 124, 136-138, 346, 471, 478 lazy_filters 521 176 247 115 62% 57, 64, 85, 95, [...] lazy_io 156 43 58 28 67% 89, 141-157, 161, [...] lazy_itertools 41 7 20 11 70% 39, 60-61, 66, 108-111 lazy_lpc 128 15 42 7 87% 121, 135-136, [...] lazy_math 61 1 28 0 99% 133 lazy_midi 54 5 26 3 90% 70, 111, 150, 156, 158 lazy_misc 110 9 62 10 89% 156-157, 194, [...] lazy_poly 191 2 126 3 98% 396-397 lazy_stream 175 2 76 4 98% 59, 738 lazy_synth 251 32 124 40 81% 278-300, 467, 469, [...] lazy_text 102 33 70 29 64% 132-147, 205-229, [...] ------------------------------------------------------------ TOTAL 2236 341 1057 266 82% ========================= 2310 passed in 22.36 seconds ========================= --------------- coverage: platform linux2, python 2.7.3-final-0 ---------------- Name Stmts Miss Branch BrPart Cover Missing ------------------------------------------------------------ __init__ 44 1 18 4 92% 72 lazy_analysis 125 3 60 2 97% 211, 259-260 lazy_auditory 60 0 14 0 100% lazy_compat 42 5 6 1 88% 43, 67-68, 78-79 lazy_core 175 7 80 9 94% 124, 136-138, 346, 471, 478 lazy_filters 521 176 247 115 62% 57, 64, 85, 95, [...] lazy_io 156 43 58 28 67% 89, 141-157, 161, [...] lazy_itertools 41 7 20 11 70% 39, 60-61, 66, 108-111 lazy_lpc 128 15 42 7 87% 121, 135-136, [...] lazy_math 61 1 28 0 99% 133 lazy_midi 54 5 26 3 90% 70, 111, 150, 156, 158 lazy_misc 110 9 62 10 89% 156-157, 194, [...] lazy_poly 191 2 126 3 98% 396-397 lazy_stream 175 2 76 4 98% 59, 738 lazy_synth 251 32 124 40 81% 278-300, 467, 469, [...] lazy_text 102 33 70 29 64% 132-147, 205-229, [...] ------------------------------------------------------------ TOTAL 2236 341 1057 266 82% ========================= 2310 passed in 22.36 seconds ========================= Mock Oráculos (NumPy, SciPy)
  4. 4. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini Talk is cheap.Talk is cheap. Show me the code.Show me the code. (Linus Torvalds)(Linus Torvalds)
  5. 5. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini ““Hello world”Hello world” ● Tocar uma senóideTocar uma senóide – ConsoleConsole (e.g. IPython)(e.g. IPython) – ScriptsScripts ● Gerenciadores de contextoGerenciadores de contexto 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!
  6. 6. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – 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
  7. 7. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini Controle e tipos de sínteseControle e tipos de síntese ● ControlStreamControlStream – Property “value”Property “value” – Permite interatividadePermite interatividade ● Tempo realTempo real ● SínteseSíntese – Aditiva (e.g. classe TableLookup)Aditiva (e.g. classe TableLookup) – ModulaçãoModulação ● Ring Modulation (Anel)Ring Modulation (Anel) – Senóide * SenóideSenóide * Senóide ● AM (Amplitude)AM (Amplitude) – Senóide * (1 + Senóide)Senóide * (1 + Senóide) ● FM (Frequência ou fase)FM (Frequência ou fase) – Senóide(Senóide)Senóide(Senóide) – Subtrativa (e.g. modelo de Karplus-Strong)Subtrativa (e.g. modelo de Karplus-Strong) 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]
  8. 8. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini ExemplosExemplos ● HardwareHardware – Arduino via PySerialArduino via PySerial ● Jogos/gamesJogos/games – Campo minadoCampo minado ● Síntese em tempo realSíntese em tempo real ● https://github.com/danilobellini/mmineshttps://github.com/danilobellini/mmines ● MúsicaMúsica – Recortes e normalização (geração de arquivos WAV)Recortes e normalização (geração de arquivos WAV) – Composições, e.g. trilha musical de Klockwork (game)Composições, e.g. trilha musical de Klockwork (game) Exemplos no repositório!!! Exemplos no repositório!!! keyboard.py (com tkinter) keyboard.py (com tkinter) mcfm.py (com wxPython) mcfm.py (com wxPython) play_bach_choral.py (com music21) play_bach_choral.py (com music21) save_and_memoize_synth (wave) save_and_memoize_synth (wave)
  9. 9. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini ““Container” para áudioContainer” para áudio ● QualquerQualquer iteráveliterável pode ser áudio!pode ser áudio! ● Tempo realTempo real – Amostras (dados/elementos) inexistentes...Amostras (dados/elementos) inexistentes... ● ...em tempo de compilação (dados a serem coletados)...em tempo de compilação (dados a serem coletados) ● ...em tempo de execução (dados criados no futuro)...em tempo de execução (dados criados no futuro) – Suporte a “endless”Suporte a “endless” – Causal (independe de dados futuros)Causal (independe de dados futuros) – MinimizarMinimizar laglag (atraso) entre entrada e saída(atraso) entre entrada e saída Lazy!Lazy! Derivado da discussão durante a apresentação, as aspas indicam que o objeto não precisa “conter”, literalmente, os elementos, assim como o “conjunto” dos números naturais não pode ser construído na prática (por “conter infinitos elementos”) e é definido através de regras de geração de números, embora seja dito que ele “contém” seus elementos.
  10. 10. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – 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]]
  11. 11. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini Efeito “wah”, knob guitarra, transiçõesEfeito “wah”, knob guitarra, transições Filtros digitais e a Transformada ZFiltros digitais e a Transformada Z
  12. 12. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – 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)
  13. 13. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – 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]
  14. 14. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini Plot (AudioLazy + MatPlotLib)!Plot (AudioLazy + MatPlotLib)! ● DTFT - Caso particular da transformada ZDTFT - Caso particular da transformada Z – O valor de z está na circunferência complexa unitáriaO valor de z está na circunferência complexa unitária ● Método plot dos filtrosMétodo plot dos filtros – Resposta em frequênciaResposta em frequência ● Método zplotMétodo zplot – Estabilidade do filtroEstabilidade do filtro – Pólos: “X”Pólos: “X” ● Raízes do denominadorRaízes do denominador – Zeros: “O”Zeros: “O” ● Raízes do numeradorRaízes do numerador X X gammatone_plots.py gammatone_plots.pytambém tem também temresposta ao impulso resposta ao impulso
  15. 15. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – 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)e.g. lptv.py JIT!
  16. 16. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini FibonacciFibonacci ● 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] E o exemplo E o exemplo pi.py?pi.py?
  17. 17. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini Pitch – ShepardPitch – Shepard ● Exemplo no GitHubExemplo no GitHub ● 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 EscherLembra Escher ● ““Hélice”Hélice”
  18. 18. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini Série harmônicaSérie harmônica ● F0, 2F0, 3F0, 4F0 …F0, 2F0, 3F0, 4F0 … – 100 Hz, 200 Hz, 300 Hz...100 Hz, 200 Hz, 300 Hz... Comb! freqs = [str2freq(note) for note in "E2 G#2 B2".split()] # Mi maior filt = ParallelFilter(comb.tau(freq_to_lag(freq * Hz), .1 * s) for freq in freqs) filt.plot(samples=8192, rate=rate, min_freq=220*Hz, max_freq=880*Hz).show() freqs = [str2freq(note) for note in "E2 G#2 B2".split()] # Mi maior filt = ParallelFilter(comb.tau(freq_to_lag(freq * Hz), .1 * s) for freq in freqs) filt.plot(samples=8192, rate=rate, min_freq=220*Hz, max_freq=880*Hz).show()
  19. 19. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini Coletando a alturaColetando a altura ● ZCR (Taxa de cruzamento no zero)ZCR (Taxa de cruzamento no zero) ● DFT (Transformada Discreta de Fourier)DFT (Transformada Discreta de Fourier) ● AMDF (Average Magnitude Difference Function)AMDF (Average Magnitude Difference Function)
  20. 20. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini Envoltória espectral comEnvoltória espectral com LPC (Linear Predictive Coding)LPC (Linear Predictive Coding) FormantesFormantes Pode ser utilizadoPode ser utilizado para classificação depara classificação de vogaisvogais (análise e síntese)(análise e síntese) e.g.e.g. lpc_plot.pylpc_plot.py formants.pyformants.py
  21. 21. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – 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 de potências)Expoente fracionário (soma de potências) ● Objeto “x”Objeto “x” ● InterpolaçãoInterpolação – LagrangeLagrange In [9]: lagrange.poly([(0, 0), (1, 1)]) Out[9]: x In [10]: lagrange.poly([(0, 0), (1, 1), (2, 2)]) Out[10]: x In [11]: lagrange.poly([(0, 0), (1, 1), (2, 4)]) Out[11]: x^2 In [9]: lagrange.poly([(1, 3), (3, 14), (45, 0)]) Out[9]: -2.89773 + 6.0303 * x - 0.132576 * x^2 In [9]: lagrange.poly([(0, 0), (1, 1)]) Out[9]: x In [10]: lagrange.poly([(0, 0), (1, 1), (2, 2)]) Out[10]: x In [11]: lagrange.poly([(0, 0), (1, 1), (2, 4)]) Out[11]: x^2 In [9]: lagrange.poly([(1, 3), (3, 14), (45, 0)]) Out[9]: -2.89773 + 6.0303 * x - 0.132576 * x^2 In [7]: (x + x ** 2 + x ** -.5)(4) Out[7]: 20.5 In [7]: (x + x ** 2 + x ** -.5)(4) Out[7]: 20.5
  22. 22. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini Imagens feitas com a AudioLazyImagens feitas com a AudioLazy
  23. 23. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini
  24. 24. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini
  25. 25. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini
  26. 26. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini
  27. 27. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini
  28. 28. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini
  29. 29. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini
  30. 30. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini
  31. 31. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini É possível... ?É possível... ? ● Em tempo real...Em tempo real... – Distorção ?Distorção ? – Delay ?Delay ? – Flanger ?Flanger ? – Phaser ?Phaser ? – Compressor/limiter ?Compressor/limiter ? Vejamos...Vejamos...
  32. 32. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini 2013 – PSI22222013 – PSI2222 Orientações at Poli-USPOrientações at Poli-USP ● Pedaleira (4 alunos)Pedaleira (4 alunos) – https://github.com/RicardoBoccoliGallego/DigitalPedalBoardhttps://github.com/RicardoBoccoliGallego/DigitalPedalBoard – PySerialPySerial ● Hardware controlador em ArduinoHardware controlador em Arduino ● 2 botões + pedal expressão2 botões + pedal expressão – AudioLazyAudioLazy ● Distorção, flanger, filtros, …Distorção, flanger, filtros, … – wxPythonwxPython – MatPlotLibMatPlotLib ● Gráfico da envoltória dinâmica (envelope) atualizado em tempo realGráfico da envoltória dinâmica (envelope) atualizado em tempo real
  33. 33. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini
  34. 34. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini
  35. 35. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini
  36. 36. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini 2013 – PSI22222013 – PSI2222 Orientações at Poli-USPOrientações at Poli-USP ● Sintetizador (outros 4 alunos) [inacabado]Sintetizador (outros 4 alunos) [inacabado] – https://github.com/elisatengan/Synthesishttps://github.com/elisatengan/Synthesis – PyGamePyGame ● I/O MIDII/O MIDI – AudioLazyAudioLazy ● Modelo de Karplus-Strong modificadoModelo de Karplus-Strong modificado ● LPC: Filtros de síntese/análiseLPC: Filtros de síntese/análise – PyQt4PyQt4
  37. 37. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – SP – Danilo J. S. Bellini – @danilobellini Apenas visual, esta GUI está inacabadaApenas visual, esta GUI está inacabada
  38. 38. 2013-12-18 – AudioLazy no Garoa Hacker Clube2013-12-18 – AudioLazy no Garoa Hacker Clube São Paulo – SP – Danilo J. S. Bellini – @danilobelliniSão Paulo – 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
  1. A particular slide catching your eye?

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

×