36
AudioLazy – Danilo J. S. Bellini – @danilobellini AudioLazy – Danilo J. S. Bellini – @danilobellini SETI / UFLA – 2014-10-27 – Lavras / MG SETI / UFLA – 2014-10-27 – Lavras / MG AudioLazy AudioLazy Danilo de Jesus da Silva Bellini Danilo de Jesus da Silva Bellini (Desenvolvedor da AudioLazy) (Desenvolvedor da AudioLazy) Twitter: Twitter: @danilobellini @danilobellini https://github.com/danilobellini/audiolazy https://github.com/danilobellini/audiolazy https://pypi.python.org/pypi/audiolazy https://pypi.python.org/pypi/audiolazy https://groups.google.com/forum/#! https://groups.google.com/forum/#! forum/audiolazy forum/audiolazy

(2014-10-27) [SETI-UFLA-MG] AudioLazy

Embed Size (px)

DESCRIPTION

Palestra sobre a AudioLazy apresentada na UFLA (Universidade Federal de Lavras), Minas Gerais, no dia 2014-10-27, durante a SETI (Semana de Tecnologia da Informação). http://seti.compjunior.com.br/ Descrição da palestra: Distorcendo áudio em tempo real com uma ou poucas linhas de de código! A palestra incluirá exemplos prontos e enfatizará os novos recursos da AudioLazy 0.6, com demonstrações ao vivo. Muito conteúdo de análise, síntese e processamento de áudio, além de psicoacústica, imagens, entre outros.

Citation preview

Page 1: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

AudioLazyAudioLazyDanilo de Jesus da Silva BelliniDanilo de Jesus da Silva Bellini

(Desenvolvedor da AudioLazy)(Desenvolvedor da AudioLazy)

Twitter:Twitter: @danilobellini @danilobellini

https://github.com/danilobellini/audiolazyhttps://github.com/danilobellini/audiolazy

https://pypi.python.org/pypi/audiolazyhttps://pypi.python.org/pypi/audiolazy

https://groups.google.com/forum/#!https://groups.google.com/forum/#!forum/audiolazyforum/audiolazy

Page 2: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

AudioLazyAudioLazy

● DSP (DSP (Digital Signal ProcessingDigital Signal Processing))– AnáliseAnálise

– SínteseSíntese

– ProcessamentoProcessamento

– PsicoacústicaPsicoacústica

● Expressividade de códigoExpressividade de código● Tempo realTempo real

Documentação (Sphinx)http://pythonhosted.org/audiolazy

Python 2.7

Python 2.7

e 3.2+!e 3.2+!

86% py.test branch

coverage

Cálculo numérico

Imagens

...

Game: Musical Mines!https://github.com/danilobellini/mmines

Page 3: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

““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 = 44100s, 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 = 44100s, 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, api="jack") as player: # True = wait all audio player.play(snd, rate=rate) # threads finishwith AudioIO(True, api="jack") as player: # True = wait all audio player.play(snd, rate=rate) # threads finish

Multithread!

ALSA/Jack/... via PyAudio(PortAudio)

Page 4: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Iterável = áudio!Iterável = áudio!● ControlStreamControlStream

– InteratividadeInteratividade

● StreamStream– LazyLazy

– Operadores elementwise/broadcastOperadores elementwise/broadcast

– Métodos take, peek, limit, skip, map, filter e blocksMétodos take, peek, limit, skip, map, filter e blocks

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]

In [1]: from audiolazy import Stream, inf, count, cycle # itertools-likeIn [2]: dados = Stream(-5j, 7j, 1, 1+2j, 5, 3, 2) # PeriódicoIn [3]: dados2 = Stream(0, 2j) # Idem

In [4]: (dados * dados2).take(15)Out[4]: [0j, (-14+0j), 0, (-4+2j), 0, 6j, 0, (10+0j), 0j, 2j, 0j, 10j, 0, 4j, 0j]

In [5]: (cycle(_).limit(5).imag * 1j + count(start=1, step=2)).take(inf)Out[5]: [(1+0j), (3+0j), (5+0j), (7+2j), (9+0j)]

In [1]: from audiolazy import Stream, inf, count, cycle # itertools-likeIn [2]: dados = Stream(-5j, 7j, 1, 1+2j, 5, 3, 2) # PeriódicoIn [3]: dados2 = Stream(0, 2j) # Idem

In [4]: (dados * dados2).take(15)Out[4]: [0j, (-14+0j), 0, (-4+2j), 0, 6j, 0, (10+0j), 0j, 2j, 0j, 10j, 0, 4j, 0j]

In [5]: (cycle(_).limit(5).imag * 1j + count(start=1, step=2)).take(inf)Out[5]: [(1+0j), (3+0j), (5+0j), (7+2j), (9+0j)]

Page 5: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Notas/Alturas e MIDI PitchNotas/Alturas e MIDI Pitch

● Pitch (notas/alturas)Pitch (notas/alturas)

● Com oitavas!Com oitavas!– Iniciam em dóIniciam em dó

● MIDI PitchMIDI Pitch– Em semitonsEm semitons

● Funções para realizar Funções para realizar conversõesconversões– midi2strmidi2str

– str2midistr2midi

– freq2strfreq2str

– str2freqstr2freq

– midi2freqmidi2freq

– freq2midifreq2midi

C D E F G A B

Do Re Mi Fa Sol La Si

>>> str2midi("Cb4") == str2midi("B3")True>>> str2midi("Cb4") == str2midi("B3")True

>>> str2midi("A4") # La central69>>> str2midi("Bb4")70>>> str2midi("C5")72

>>> str2midi("A4") # La central69>>> str2midi("Bb4")70>>> str2midi("C5")72

Outras conversões

lag2freqfreq2lagphon2dB

dB10dB20

Page 6: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

LoudnessLoudnessModelo de Fletcher-Munson (1933)“Loudness, Its Definition, Measurement and Calculation”

ISO/FDIS 226:2003Imagem obtida a partir do exemplo iso226_plot.py

Page 7: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Altura (pitch)! ShepardAltura (pitch)! 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 →

Exemplo shepard.pyExemplo shepard.py

““Hélice”Hélice”

Page 8: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Demonstrations to Demonstrations to ASA (Bregman)ASA (Bregman)

Ruído Ruído (experimento 34)(experimento 34)

Exemplo butterworth_with_noise.pyExemplo butterworth_with_noise.py

Page 9: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

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:

GGGSUGSUGLLLPUTSUG

Page 10: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Envoltória espectralEnvoltória espectralFormantesFormantes

Modelo fonte-filtro Modelo fonte-filtro para a vozpara a voz

LPC (Linear LPC (Linear Predictive Coding)Predictive Coding)

Classificação de Classificação de vogaisvogais

(análise e síntese)(análise e síntese)

lpc_plot.pylpc_plot.pyformants.pyformants.py

Page 11: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

AnáliseAnálise

ZCRZCR– Taxa de cruzamento no Taxa de cruzamento no

zerozero

AMDFAMDF– Average Magnitude Average Magnitude

Difference FunctionDifference Function

......

● DFT (Transformada Discreta de Fourier)DFT (Transformada Discreta de Fourier)– Usando com Numpy/ScipyUsando com Numpy/Scipy

● Funções de janelamentoFunções de janelamento– Processamento (STFT)Processamento (STFT)

– Projeto de filtrosProjeto de filtros

dft_pitch.pydft_pitch.pyzcross_pitch.pyzcross_pitch.pyanimated_plot.pyanimated_plot.py

Page 12: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Filtros LTIFiltros LTI(Lineares e invariantes no tempo)(Lineares e invariantes no tempo)

““Digital signal processing is mainly Digital signal processing is mainly based on linear time-invariant systems.based on linear time-invariant systems.””

(Dutilleux, Dempwolf, Holters e Zölzer(Dutilleux, Dempwolf, Holters e ZölzerDAFx, segunda edição, capítulo 4, p. 103)DAFx, segunda edição, capítulo 4, p. 103)

Page 13: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Transformada ZTransformada Z

● Definição:Definição:

● Interpretação:Interpretação:

AtrasoAtraso em k em 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]

Page 14: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Filtros linearesFiltros lineares● Síntese subtrativa (e.g. play_bach_choral.py)Síntese subtrativa (e.g. play_bach_choral.py)● Comb, ressonador, passa-baixas, passa-altas, …Comb, ressonador, passa-baixas, passa-altas, …● Wah, knob guitarra (passa-baixas RC), ...Wah, knob guitarra (passa-baixas RC), ...

filt = 1./9. * (4 - z ** -2) / (1 + .8 * z ** -1 + .4 * z ** -2)filt.zplot().savefig("zeropolo.pdf")

fcomb = comb.fb(25, .95)fcomb.plot().savefig("plot-comb.pdf")

filt = 1./9. * (4 - z ** -2) / (1 + .8 * z ** -1 + .4 * z ** -2)filt.zplot().savefig("zeropolo.pdf")

fcomb = comb.fb(25, .95)fcomb.plot().savefig("plot-comb.pdf")

1 2

1

2

Page 15: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

ProcessamentoProcessamento

● DistorçãoDistorção● FlangerFlanger● PhaserPhaser● WahWah● Robotização de vozRobotização de voz● DelayDelay● ReverbReverb● ……

STFT!

Arquivos WAV

ou ao vivo?

W = window.hannrobotize = stft(abs, size=1024, hop=441, wnd=w, ola_wnd=w) # Hint: usar também before=None# [...] e no io_wire.pyraw = pr.record(rate=rate)pr.play(robotize(raw), rate=rate)

W = window.hannrobotize = stft(abs, size=1024, hop=441, wnd=w, ola_wnd=w) # Hint: usar também before=None# [...] e no io_wire.pyraw = pr.record(rate=rate)pr.play(robotize(raw), rate=rate)

Page 16: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

https://github.com/RicardoBoccoliGallego/DigitalPedalBoard

Pedaleira feita Pedaleira feita com a com a

AudioLazy + AudioLazy + PySerial (com PySerial (com Arduino) por 4 Arduino) por 4

alunos da alunos da Poli-USPPoli-USP

Page 17: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Em andamento...Em andamento...

● lz2lv2lz2lv2– Criação de plugins LV2 usando Python + AudioLazyCriação de plugins LV2 usando Python + AudioLazy

– Apenas geração de metadados (Turtle) no momentoApenas geração de metadados (Turtle) no momento

● lz-plugins-lv2lz-plugins-lv2– Coletânea de plugins LV2 usando PythonColetânea de plugins LV2 usando Python

– Apenas “robotize” no momentoApenas “robotize” no momento

LV2 é um padrão de plugins em C/C++ usado por Audacity, Ardour,

pedaleira MOD, etc.

Page 18: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Imagens feitas com a AudioLazyImagens feitas com a AudioLazy+ MatPlotLib+ MatPlotLib

+ hipsterplot+ hipsterplot

Page 19: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Page 20: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Page 21: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Page 22: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Page 23: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Page 24: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Page 25: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Page 26: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Page 27: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Page 28: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Page 29: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Page 30: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

AudioLazy + Matplotlib + “hipsterplot”

Page 31: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Page 32: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Page 33: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Page 34: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Page 35: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

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)

– Variantes no tempoVariantes no tempo

● 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.5In [7]: (x + x ** 2 + x ** -.5)(4)Out[7]: 20.5

Page 36: (2014-10-27) [SETI-UFLA-MG] AudioLazy

AudioLazy – Danilo J. S. Bellini – @danilobelliniAudioLazy – Danilo J. S. Bellini – @danilobelliniSETI / UFLA – 2014-10-27 – Lavras / MGSETI / UFLA – 2014-10-27 – Lavras / MG

Perguntas

Perguntas

?Obrigado!Obrigado!

https://github.com/dhttps://github.com/danilobellini/audiolazyanilobellini/audiolazy