O documento descreve o projeto AudioLazy, uma biblioteca Python para processamento digital de sinal de áudio. Apresenta as principais funcionalidades de síntese, análise e processamento de áudio suportadas pela biblioteca e exemplos de código para demonstrá-las. Também discute brevemente projetos relacionados desenvolvidos pelo autor no passado usando a AudioLazy.
Slides da palestra "AudioLazy no GruPy! (+LV2)" realizada durante o encontro da comunidade Python de São Paulo, na Locaweb, no dia 2017-08-12.
Essa palestra é uma versão extendida da palestra "AudioLazy em 2017!" realizada durante o TDC em julho de 2017.
Segue abaixo a descrição da palestra.
Palestra sobre a AudioLazy, biblioteca Python capaz de processar, sintetizar e analisar sinais iterativamente, em especial sinais de áudio.
Como novidade com relação ao apresentado em eventos anteriores, a proposta é mostrar que é possível criar plugins LV2 (em C) utilizando a AudioLazy (via Python C API).
https://github.com/danilobellini/audiolazy
https://github.com/danilobellini/lz-plugins-lv2
Slides da palestra "Segurança da Informação - Um apanhado geral sobre criptografia, acesso e vulnerabilidades, incluindo exemplos práticos em Python e Shell" realizada durante a Semana de informática da ETEC Uirapuru, em São Paulo-SP.
O código fonte dos slides (LaTeX, Beamer) pode ser obtido em: https://github.com/danilobellini/slides-latex
(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask AssíncronoDanilo J. S. Bellini
Slides da palestra "Introdução ao Sanic - O Flask Assíncrono" realizada durante o primeiro Flask Conf, no Developer Hub, em São Paulo-SP.
O código fonte dos slides (LaTeX, Beamer) pode ser obtido em: https://github.com/danilobellini/slides-latex
Segue abaixo a descrição original do conteúdo da palestra:
Sanic é um servidor web assíncrono para o Python com uma sintaxe baseada no Flask, escrito para ser rápido. A proposta é falar do Sanic, realizando comparações entre os frameworks (semelhanças, diferenças, vantagens e desvantagens) aonde cabível.
Tópicos (aproximadamente 10 minutos para cada tópico):
- Do "Hello world" a um serviço com muito JSON! Abordarei rotas, métodos, o módulo response e como iniciar o serviço.
- Listeners, middlewares, tratamento de erros e muito async!
- Exemplo com comunicação assíncrona com o banco de dados (PostgreSQL + SQLAlchemy Core + asyncpgsa) e envolvendo a utilização de recurso bloqueante.
- Websockets, blueprints e extensões.
Nível de dificuldade: voltado para um público que já saiba o básico de Flask e HTTP (métodos/verbos, headers da requisição, código de status de resposta, etc.). O público não precisa saber previamente o que significa "assíncrono".
OS SLIDES ATUALIZADOS ESTÃO NO GITHUB, AQUI NÃO DÁ PARA ATUALIZAR!
Slides da palestra "Números no Python!" realizada durante o primeiro Just Python, na Creditas, em São Paulo-SP.
O código fonte dos slides (LaTeX, Beamer) pode ser obtido em: https://github.com/danilobellini/slides-latex
Segue abaixo a descrição do conteúdo da palestra:
Inteiro? Ponto flutuante? Decimal? Racional! Fracionário? i ou j ... Complexo?! Logaritmo? Mediana?! Variância!!! Pera lá, cê jura que não precisa do Numpy?
O objetivo é falar sobre o que o Python traz que tem a ver com... números!
Isso inclui os seguintes módulos da biblioteca padrão do Python:
- numbers
- math
- cmath
- decimal
- fractions
- random
- statistics
- array
- struct
Além dos built-ins int, float, complex, round, range, divmod e abs, da conversão de números de/para strings, e dos recursos para conversão de objetos em números.
(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)Danilo J. S. Bellini
Slides da palestra "Polígonos, pontos e outras geometrias no Shapely (GIS)" realizada no encontro do Grupy-SP no Centro de Treinamento da Novatec em São Paulo no dia 2017-05-27.
IPython Notebook (código criado durante a palestra):
https://github.com/danilobellini/notebooks/blob/master/2017-05-27_Shapely.ipynb
Conteúdo abordado (descrição da palestra):
- Breve introdução aos sistemas GIS (Sistema de Informação Geográfica)
- Dados no formato vetorial e os padrões da OGC (Open Geospatial Consortium)
- WKT, WKB e GeoJSON
- Biblioteca Shapely (Python)
- Operações com vetores
- Hands on!
O objetivo dessa palestra é mostrar como lidar com diferentes geometrias (Polygon, MultiPolygon, etc.) com dados em WGS84 (EPSG:4326) interagindo com arquivos GeoJSON (com uma FeatureCollection, uma Feature ou apenas uma geometria).
Slides da palestra "Plugin pytest-doctest-custom v1.0.0" realizada no encontro do Grupy-SP na SciELO em São Paulo no dia 2016-08-13. Ementa da palestra em: https://gist.github.com/danilobellini/b76a36c4fcc946ecb1d6cb92987f30d3
Background feito usando o AudioLazy Python DSP.
(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?Danilo J. S. Bellini
Slides da palestra "Projetos Open Source, como colaborar?" realizada no encontro do Grupy-SP no Centro de Treinamento da Novatec em São Paulo no dia 2015-03-14 (pi!). Conteúdo abordado (descrição da palestra):
Discussão sobre possibilidades de colaboração em projetos Open Source, enfatizando projetos que utilizem o Python como linguagem de programação. Temas incluem sites (e.g. GitHub, PyPI); comunicação social; habilidades/técnicas/softwares de comum envolvimento (e.g. TDD, CI, git). Trata-se de um "getting started" p/ aqueles que desejam colaborar em um projeto Open Source, ou mesmo criar algo novo.
(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)Danilo J. S. Bellini
Slides do tutorial "Adaptatividade em Python" ministrado no Workshop de Tecnologia Adaptativa de 2015 (WTA2015) na Escola Politécnica da Universidade de São Paulo (Poli-USP) nos dias 2015-01-29 e 2015-01-30.
Código disponível em https://github.com/danilobellini/wta2015
Slides da palestra "AudioLazy no GruPy! (+LV2)" realizada durante o encontro da comunidade Python de São Paulo, na Locaweb, no dia 2017-08-12.
Essa palestra é uma versão extendida da palestra "AudioLazy em 2017!" realizada durante o TDC em julho de 2017.
Segue abaixo a descrição da palestra.
Palestra sobre a AudioLazy, biblioteca Python capaz de processar, sintetizar e analisar sinais iterativamente, em especial sinais de áudio.
Como novidade com relação ao apresentado em eventos anteriores, a proposta é mostrar que é possível criar plugins LV2 (em C) utilizando a AudioLazy (via Python C API).
https://github.com/danilobellini/audiolazy
https://github.com/danilobellini/lz-plugins-lv2
Slides da palestra "Segurança da Informação - Um apanhado geral sobre criptografia, acesso e vulnerabilidades, incluindo exemplos práticos em Python e Shell" realizada durante a Semana de informática da ETEC Uirapuru, em São Paulo-SP.
O código fonte dos slides (LaTeX, Beamer) pode ser obtido em: https://github.com/danilobellini/slides-latex
(2018-08-25) [Flask Conf] Introdução ao Sanic - O Flask AssíncronoDanilo J. S. Bellini
Slides da palestra "Introdução ao Sanic - O Flask Assíncrono" realizada durante o primeiro Flask Conf, no Developer Hub, em São Paulo-SP.
O código fonte dos slides (LaTeX, Beamer) pode ser obtido em: https://github.com/danilobellini/slides-latex
Segue abaixo a descrição original do conteúdo da palestra:
Sanic é um servidor web assíncrono para o Python com uma sintaxe baseada no Flask, escrito para ser rápido. A proposta é falar do Sanic, realizando comparações entre os frameworks (semelhanças, diferenças, vantagens e desvantagens) aonde cabível.
Tópicos (aproximadamente 10 minutos para cada tópico):
- Do "Hello world" a um serviço com muito JSON! Abordarei rotas, métodos, o módulo response e como iniciar o serviço.
- Listeners, middlewares, tratamento de erros e muito async!
- Exemplo com comunicação assíncrona com o banco de dados (PostgreSQL + SQLAlchemy Core + asyncpgsa) e envolvendo a utilização de recurso bloqueante.
- Websockets, blueprints e extensões.
Nível de dificuldade: voltado para um público que já saiba o básico de Flask e HTTP (métodos/verbos, headers da requisição, código de status de resposta, etc.). O público não precisa saber previamente o que significa "assíncrono".
OS SLIDES ATUALIZADOS ESTÃO NO GITHUB, AQUI NÃO DÁ PARA ATUALIZAR!
Slides da palestra "Números no Python!" realizada durante o primeiro Just Python, na Creditas, em São Paulo-SP.
O código fonte dos slides (LaTeX, Beamer) pode ser obtido em: https://github.com/danilobellini/slides-latex
Segue abaixo a descrição do conteúdo da palestra:
Inteiro? Ponto flutuante? Decimal? Racional! Fracionário? i ou j ... Complexo?! Logaritmo? Mediana?! Variância!!! Pera lá, cê jura que não precisa do Numpy?
O objetivo é falar sobre o que o Python traz que tem a ver com... números!
Isso inclui os seguintes módulos da biblioteca padrão do Python:
- numbers
- math
- cmath
- decimal
- fractions
- random
- statistics
- array
- struct
Além dos built-ins int, float, complex, round, range, divmod e abs, da conversão de números de/para strings, e dos recursos para conversão de objetos em números.
(2017-05-27) [Grupy-SP] Polígonos, pontos e outras geometrias no Shapely (GIS)Danilo J. S. Bellini
Slides da palestra "Polígonos, pontos e outras geometrias no Shapely (GIS)" realizada no encontro do Grupy-SP no Centro de Treinamento da Novatec em São Paulo no dia 2017-05-27.
IPython Notebook (código criado durante a palestra):
https://github.com/danilobellini/notebooks/blob/master/2017-05-27_Shapely.ipynb
Conteúdo abordado (descrição da palestra):
- Breve introdução aos sistemas GIS (Sistema de Informação Geográfica)
- Dados no formato vetorial e os padrões da OGC (Open Geospatial Consortium)
- WKT, WKB e GeoJSON
- Biblioteca Shapely (Python)
- Operações com vetores
- Hands on!
O objetivo dessa palestra é mostrar como lidar com diferentes geometrias (Polygon, MultiPolygon, etc.) com dados em WGS84 (EPSG:4326) interagindo com arquivos GeoJSON (com uma FeatureCollection, uma Feature ou apenas uma geometria).
Slides da palestra "Plugin pytest-doctest-custom v1.0.0" realizada no encontro do Grupy-SP na SciELO em São Paulo no dia 2016-08-13. Ementa da palestra em: https://gist.github.com/danilobellini/b76a36c4fcc946ecb1d6cb92987f30d3
Background feito usando o AudioLazy Python DSP.
(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?Danilo J. S. Bellini
Slides da palestra "Projetos Open Source, como colaborar?" realizada no encontro do Grupy-SP no Centro de Treinamento da Novatec em São Paulo no dia 2015-03-14 (pi!). Conteúdo abordado (descrição da palestra):
Discussão sobre possibilidades de colaboração em projetos Open Source, enfatizando projetos que utilizem o Python como linguagem de programação. Temas incluem sites (e.g. GitHub, PyPI); comunicação social; habilidades/técnicas/softwares de comum envolvimento (e.g. TDD, CI, git). Trata-se de um "getting started" p/ aqueles que desejam colaborar em um projeto Open Source, ou mesmo criar algo novo.
(2015-01-29/30) [WTA2015] Adaptatividade em Python (Tutorial)Danilo J. S. Bellini
Slides do tutorial "Adaptatividade em Python" ministrado no Workshop de Tecnologia Adaptativa de 2015 (WTA2015) na Escola Politécnica da Universidade de São Paulo (Poli-USP) nos dias 2015-01-29 e 2015-01-30.
Código disponível em https://github.com/danilobellini/wta2015
Minicurso/tutorial sobre o py.test e o tox apresentado no Hotel Armação, Porto de Galinhas - Pernambuco, no dia 2014-11-05, durante a PythonBrasil[10].
Descrição do tutorial:
## Tipo
Tutorial
## Trilha
Tools & methodology
## Nível da audiência
Intermediário
## Idioma
Português
## Título
Testando com py.test e tox
## Descrição
Tutorial para o aprendizado sobre o uso prático do pacote py.test para realização de testes de diversos tipos. Tópicos:
- Comportamento básico para coleta e execução de testes;
- Testando exceções;
- Testes parametrizados e seus usos com oráculos, testes aleatórios;
- Cobertura de código com pytest-cov;
- Testando apenas uma parte de uma suíte;
- Integrando com doctests;
- Criando fixtures personalizadas;
- Mock/stub/fake/dummy com a fixture monkeypatch;
- Testando warnings;
- Usando tox para automatizar testes em múltiplos ambientes (e.g. Python 2 e 3);
- Configurações (avançadas) para tempo de coleta e tempo de setup;
- Usando skip, xfail e deseleção para testes que irão falhar;
- Testes envolvendo arquivos temporários;
O tutorial inclui uma breve discussão sobre o que pode ser testado, além de exemplos sobre comparação de ponto flutuante, aproximações e manutenção de resultados para testes que envolvam cálculo numérico ou dados científicos/multimídia.
É necessário levar o computador com o Python instalado (2.7 ou 3.4, preferencialmente ambos), e com o pip (ou algo equivalente) disponível para instalação de pacotes. Pode-se instalar previamente os pacotes pytest, pytest-cov e tox.
O tutorial é voltado para quem já sabe programar em Python. Embora não seja fundamental, é de grande ajuda ter o conhecimento prévio sobre assuntos como gerenciadores de contexto, exceções, decorators, orientação a objetos e arquivos setup.py.
A meta deste tutorial é a utilização/realização prática de testes, sem enfatizar tópicos de "engenharia de software" referentes à importância/relevância da utilização de testes, ou mesmo quanto às suas classificações.
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.
Palestra sobre a AudioLazy no TDC 2014 (the developer's conference) que ocorreu na Universidade Anhembi Morumbi no dia 2014-08-09.
Site do evento: www.thedevelopersconference.com.br/tdc/2014/
Descrição da palestra:
Trata-se de uma exposição prática sobre o que é/faz um DSP (Digital Signal Processing), utilizando recursos da AudioLazy. Os tópicos incluem:
- Processamento: amostra-por-amostra e em blocos, STFT, filtros lineares variantes no tempo, processamento não linear "memoryless", distorção, flanger.
- Análise de áudio: Altura/nota musical, espectro (DFT/FFT/STFT), formantes, LPC, taxa de cruzamento no zero.
- Síntese: Aditiva, modulação (AM/Ring, FM), subtrativa.
- Psicoacústica: filtros gammatone, volume sonoro / loudness em phon e dB SPL (ISO/FDIS 226:2003 e Fletcher-Munson), modelo helicoidal de Shepard.
- Imagem: resposta em frequência, diagrama de polos e zeros, imagens artísticas com DSP de áudio.
- Outros: conversão de valores (nome de nota - altura MIDI - frequência), arquivos WAV e I/O de áudio via PyAudio (PortAudio com ALSA e Jack), cálculo numérico, aspectos gerais da biblioteca, interatividade e uso em jogos.
(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...Danilo J. S. Bellini
Palestra sobre a AudioLazy na Taubaté Perl Mongers 2014 (encontro de programadores Perl), que ocorreu na Universidade de Taubaté no dia 2014-05-24.
Site do evento: http://perl.taubate.me/
Descrição da palestra:
Análise/síntese/processamento de sinais 1D (áudio) em tempo real através de estruturas expressivas como transformadas Z, fluxo de informação, filtros/sinais como objetos c/ operadores, etc.. A palestra introduzirá parte da AudioLazy através de exemplos prontos (e.g. síntese p/ games, afinador de guitarra), incluindo outras tarefas possíveis c/ o pacote (e.g. cálculo numérico, geração de imagens).
(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)Danilo J. S. Bellini
Slides da palestra apresentada no RuPy 2013, com pequenas correções. Segue abaixo a descrição da palestra:
Análise/síntese/processamento de sinais 1D (áudio) em tempo real através de estruturas expressivas como transformadas Z, fluxo de informação, filtros/sinais como objetos c/ operadores, etc.. A palestra introduzirá parte da AudioLazy através de exemplos prontos (e.g. síntese p/ games, afinador de guitarra), incluindo outras tarefas possíveis c/ o pacote (e.g. cálculo numérico, geração de imagens).
Slides da palestra apresentada na LatinoWare 2013. Segue abaixo a descrição da palestra:
Como funciona um afinador de guitarra? E efeitos de uma pedaleira digital (e.g. distorção, wah, flanger, compressor)? Um teclado sintetizador? Essas e outras aplicações para a área de processamento de sinais na atualidade fazem parte desta palestra, com explicações e exemplos práticos preparados. A apresentação serve de introdução à área de processamento de sinais, enfatizando suas aplicações em áudio e utilizando para isso apenas Software Livre, incluindo o PyAudio para gravação e reprodução de áudio, a AudioLazy para síntese e processamento de sinais, o MatPlotLib para exibição de gráficos, o NumPy para FFT e auxílio no processamento em bloco com vetores, e o SciPy para análise e projeto de filtros (subpacotes de otimização e processamento de sinais).
(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...Danilo J. S. Bellini
Slides da palestra realizada no Centro de Convenções Ulysses Guimarães (Brasília - DF) durante o PythonBrasil[9]. Segue abaixo a descrição da palestra:
A AudioLazy é uma biblioteca (pacote) em Python para processamento digital de sinais (DSP) permitindo análise, síntese e processamento de sinais unidimensionais (áudio) em tempo real através de estruturas expressivas tais como transformadas Z (engenharia elétrica, teoria de controle), processamento tardio descrito como fluxo de informação, objetos (e.g. filtros, sinais, etc.), sobrecarga de operadores (somar sinais, multiplicar sinal por um ganho constante, etc.), etc.. A palestra introduzirá parte das funcionalidades do pacote através de exemplos práticos prontos (síntese FM, síntese subtrativa, áudio para games, afinador de instrumentos musicais, etc.), incluindo exemplos de tarefas secundárias possíveis com o pacote (e.g. cálculo numérico, geração de imagens).
(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazyDanilo J. S. Bellini
Slides do treinamento de 8 horas realizado na ESAF (Escola Fazendária, Brasília - DF) durante o PythonBrasil[9]. Segue abaixo a descrição do treinamento:
A AudioLazy é um pacote escrito em puro Python que permite DSP (Digital Signal Processing) expressivo e em tempo real.
Além dos fundamentos teóricos e uma explicação do funcionamento básico do pacote, serão vistos tanto na teoria como na prática diversos modelos de síntese:
- AM
- FM
- Aditiva
- Subtrativa
Outros elementos de processamento do áudio serão vistos, tais como a utilização de filtros LTI e diferentes maneiras de distorcer o som sintetizado.
Um dos desafios será a elaboração de um software que permita interatividade durante a síntese.
Aqueles que forem participar com seu próprio computador, recomenda-se o uso de fones de ouvido.
O pacote PyAudio é um requisito para a utilização dos componentes de I/O da AudioLazy. É recomendado que os pacotes já estejam instalados previamente.
Slides da palestra apresentada na LatinoWare 2013. Segue abaixo o texto da proposta original realizada para o evento:
Mostra-se exemplos do que se pode conseguir com plug-ins de Python para o GIMP - e um roteiro de como criar seu próprio script Python para automatizar várias tarefas.
No mundo de edição de imagens é comum termos várias tarefas repetitivas - as vezes é necessário abrir centenas de imagens para executar um único filtro, em cada uma - Ou, partindo de um elemento de texto em uma imagem, aplicar mais de uma dezena de efeitos no texto até chegar no resultado desejado - e a cada mudança no texto, ter que repetir todo o processo.
Para esses e outros problemas, os aplicativos gráficos - e o GIMP não é exceção, possuem métodos de se fazer scripts - pequenos programas - em uma linguagem de programação que permita a automação desses passos.
Esta palestra mostra como fazer isso com a linguagem Python - que também é uma linguagem de automação usada pelo Inkscape, Blender 3D, Scribus e Libreoffice, dentre outros aplicativos.
(2013-10-02) [PythonBrasil] Compatibilidade entre Python 2 e 3Danilo J. S. Bellini
Apresentação realizada durante a PythonBrasil[9]. Segue abaixo a descrição da palestra:
Mudanças na especificação da linguagem fizeram o Python 3 incompatível com parte do código escrito para o Python 2.
Algumas dessas incompatibilidades podem ser facilmente resolvidas através de traduções, sejam elas automáticas ou não.
Porém, muitas dessas traduções trazem consigo uma incompatibilidade com a versão de origem do código (o Python 2, neste caso), o que nem sempre é desejável.
É possível manter um único código compatível com o ambos o Python 2 e 3?
Esta atividade se propõe a responder essa pergunta, e enfatizará os problemas e soluções que levaram à elaboração do módulo lazy_compat da AudioLazy (e.g. metaclasses, arredondamento de ponto flutuante).
Slides da apresentação realizada no fisl no dia 2013-07-05. A apresentação incluiu um Prepared Kata, cujo código encontra-se disponível em:
https://github.com/danilobellini/fisl14
Slides da apresentação realizada no fisl14 no dia 2013-07-04 acerca da escrita de código Python único para funcionamento em ambos o Python 2.x e 3.x, enfatizando as versões 2.6, 2.7, 3.2 e 3.3 principalmente.
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...Danilo J. S. Bellini
Slides da apresentação no DevInSampa 2013 (18 de maio), com algumas complementações e correções. Esses mesmos slides foram utilizados na apresentação feita no fisl 2014 (2013-07-05).
Minicurso/tutorial sobre o py.test e o tox apresentado no Hotel Armação, Porto de Galinhas - Pernambuco, no dia 2014-11-05, durante a PythonBrasil[10].
Descrição do tutorial:
## Tipo
Tutorial
## Trilha
Tools & methodology
## Nível da audiência
Intermediário
## Idioma
Português
## Título
Testando com py.test e tox
## Descrição
Tutorial para o aprendizado sobre o uso prático do pacote py.test para realização de testes de diversos tipos. Tópicos:
- Comportamento básico para coleta e execução de testes;
- Testando exceções;
- Testes parametrizados e seus usos com oráculos, testes aleatórios;
- Cobertura de código com pytest-cov;
- Testando apenas uma parte de uma suíte;
- Integrando com doctests;
- Criando fixtures personalizadas;
- Mock/stub/fake/dummy com a fixture monkeypatch;
- Testando warnings;
- Usando tox para automatizar testes em múltiplos ambientes (e.g. Python 2 e 3);
- Configurações (avançadas) para tempo de coleta e tempo de setup;
- Usando skip, xfail e deseleção para testes que irão falhar;
- Testes envolvendo arquivos temporários;
O tutorial inclui uma breve discussão sobre o que pode ser testado, além de exemplos sobre comparação de ponto flutuante, aproximações e manutenção de resultados para testes que envolvam cálculo numérico ou dados científicos/multimídia.
É necessário levar o computador com o Python instalado (2.7 ou 3.4, preferencialmente ambos), e com o pip (ou algo equivalente) disponível para instalação de pacotes. Pode-se instalar previamente os pacotes pytest, pytest-cov e tox.
O tutorial é voltado para quem já sabe programar em Python. Embora não seja fundamental, é de grande ajuda ter o conhecimento prévio sobre assuntos como gerenciadores de contexto, exceções, decorators, orientação a objetos e arquivos setup.py.
A meta deste tutorial é a utilização/realização prática de testes, sem enfatizar tópicos de "engenharia de software" referentes à importância/relevância da utilização de testes, ou mesmo quanto às suas classificações.
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.
Palestra sobre a AudioLazy no TDC 2014 (the developer's conference) que ocorreu na Universidade Anhembi Morumbi no dia 2014-08-09.
Site do evento: www.thedevelopersconference.com.br/tdc/2014/
Descrição da palestra:
Trata-se de uma exposição prática sobre o que é/faz um DSP (Digital Signal Processing), utilizando recursos da AudioLazy. Os tópicos incluem:
- Processamento: amostra-por-amostra e em blocos, STFT, filtros lineares variantes no tempo, processamento não linear "memoryless", distorção, flanger.
- Análise de áudio: Altura/nota musical, espectro (DFT/FFT/STFT), formantes, LPC, taxa de cruzamento no zero.
- Síntese: Aditiva, modulação (AM/Ring, FM), subtrativa.
- Psicoacústica: filtros gammatone, volume sonoro / loudness em phon e dB SPL (ISO/FDIS 226:2003 e Fletcher-Munson), modelo helicoidal de Shepard.
- Imagem: resposta em frequência, diagrama de polos e zeros, imagens artísticas com DSP de áudio.
- Outros: conversão de valores (nome de nota - altura MIDI - frequência), arquivos WAV e I/O de áudio via PyAudio (PortAudio com ALSA e Jack), cálculo numérico, aspectos gerais da biblioteca, interatividade e uso em jogos.
(2014-05-24) [Taubaté Perl Mongers] AudioLazy Python DSP (Digital Signal Proc...Danilo J. S. Bellini
Palestra sobre a AudioLazy na Taubaté Perl Mongers 2014 (encontro de programadores Perl), que ocorreu na Universidade de Taubaté no dia 2014-05-24.
Site do evento: http://perl.taubate.me/
Descrição da palestra:
Análise/síntese/processamento de sinais 1D (áudio) em tempo real através de estruturas expressivas como transformadas Z, fluxo de informação, filtros/sinais como objetos c/ operadores, etc.. A palestra introduzirá parte da AudioLazy através de exemplos prontos (e.g. síntese p/ games, afinador de guitarra), incluindo outras tarefas possíveis c/ o pacote (e.g. cálculo numérico, geração de imagens).
(2013-11-29) [RuPy] AudioLazy Python DSP (Digital Signal Processing)Danilo J. S. Bellini
Slides da palestra apresentada no RuPy 2013, com pequenas correções. Segue abaixo a descrição da palestra:
Análise/síntese/processamento de sinais 1D (áudio) em tempo real através de estruturas expressivas como transformadas Z, fluxo de informação, filtros/sinais como objetos c/ operadores, etc.. A palestra introduzirá parte da AudioLazy através de exemplos prontos (e.g. síntese p/ games, afinador de guitarra), incluindo outras tarefas possíveis c/ o pacote (e.g. cálculo numérico, geração de imagens).
Slides da palestra apresentada na LatinoWare 2013. Segue abaixo a descrição da palestra:
Como funciona um afinador de guitarra? E efeitos de uma pedaleira digital (e.g. distorção, wah, flanger, compressor)? Um teclado sintetizador? Essas e outras aplicações para a área de processamento de sinais na atualidade fazem parte desta palestra, com explicações e exemplos práticos preparados. A apresentação serve de introdução à área de processamento de sinais, enfatizando suas aplicações em áudio e utilizando para isso apenas Software Livre, incluindo o PyAudio para gravação e reprodução de áudio, a AudioLazy para síntese e processamento de sinais, o MatPlotLib para exibição de gráficos, o NumPy para FFT e auxílio no processamento em bloco com vetores, e o SciPy para análise e projeto de filtros (subpacotes de otimização e processamento de sinais).
(2013-10-03) [PythonBrasil] AudioLazy, processamento de sinais para música, j...Danilo J. S. Bellini
Slides da palestra realizada no Centro de Convenções Ulysses Guimarães (Brasília - DF) durante o PythonBrasil[9]. Segue abaixo a descrição da palestra:
A AudioLazy é uma biblioteca (pacote) em Python para processamento digital de sinais (DSP) permitindo análise, síntese e processamento de sinais unidimensionais (áudio) em tempo real através de estruturas expressivas tais como transformadas Z (engenharia elétrica, teoria de controle), processamento tardio descrito como fluxo de informação, objetos (e.g. filtros, sinais, etc.), sobrecarga de operadores (somar sinais, multiplicar sinal por um ganho constante, etc.), etc.. A palestra introduzirá parte das funcionalidades do pacote através de exemplos práticos prontos (síntese FM, síntese subtrativa, áudio para games, afinador de instrumentos musicais, etc.), incluindo exemplos de tarefas secundárias possíveis com o pacote (e.g. cálculo numérico, geração de imagens).
(2013-09-30) [PythonBrasil] Síntese em tempo real com a AudioLazyDanilo J. S. Bellini
Slides do treinamento de 8 horas realizado na ESAF (Escola Fazendária, Brasília - DF) durante o PythonBrasil[9]. Segue abaixo a descrição do treinamento:
A AudioLazy é um pacote escrito em puro Python que permite DSP (Digital Signal Processing) expressivo e em tempo real.
Além dos fundamentos teóricos e uma explicação do funcionamento básico do pacote, serão vistos tanto na teoria como na prática diversos modelos de síntese:
- AM
- FM
- Aditiva
- Subtrativa
Outros elementos de processamento do áudio serão vistos, tais como a utilização de filtros LTI e diferentes maneiras de distorcer o som sintetizado.
Um dos desafios será a elaboração de um software que permita interatividade durante a síntese.
Aqueles que forem participar com seu próprio computador, recomenda-se o uso de fones de ouvido.
O pacote PyAudio é um requisito para a utilização dos componentes de I/O da AudioLazy. É recomendado que os pacotes já estejam instalados previamente.
Slides da palestra apresentada na LatinoWare 2013. Segue abaixo o texto da proposta original realizada para o evento:
Mostra-se exemplos do que se pode conseguir com plug-ins de Python para o GIMP - e um roteiro de como criar seu próprio script Python para automatizar várias tarefas.
No mundo de edição de imagens é comum termos várias tarefas repetitivas - as vezes é necessário abrir centenas de imagens para executar um único filtro, em cada uma - Ou, partindo de um elemento de texto em uma imagem, aplicar mais de uma dezena de efeitos no texto até chegar no resultado desejado - e a cada mudança no texto, ter que repetir todo o processo.
Para esses e outros problemas, os aplicativos gráficos - e o GIMP não é exceção, possuem métodos de se fazer scripts - pequenos programas - em uma linguagem de programação que permita a automação desses passos.
Esta palestra mostra como fazer isso com a linguagem Python - que também é uma linguagem de automação usada pelo Inkscape, Blender 3D, Scribus e Libreoffice, dentre outros aplicativos.
(2013-10-02) [PythonBrasil] Compatibilidade entre Python 2 e 3Danilo J. S. Bellini
Apresentação realizada durante a PythonBrasil[9]. Segue abaixo a descrição da palestra:
Mudanças na especificação da linguagem fizeram o Python 3 incompatível com parte do código escrito para o Python 2.
Algumas dessas incompatibilidades podem ser facilmente resolvidas através de traduções, sejam elas automáticas ou não.
Porém, muitas dessas traduções trazem consigo uma incompatibilidade com a versão de origem do código (o Python 2, neste caso), o que nem sempre é desejável.
É possível manter um único código compatível com o ambos o Python 2 e 3?
Esta atividade se propõe a responder essa pergunta, e enfatizará os problemas e soluções que levaram à elaboração do módulo lazy_compat da AudioLazy (e.g. metaclasses, arredondamento de ponto flutuante).
Slides da apresentação realizada no fisl no dia 2013-07-05. A apresentação incluiu um Prepared Kata, cujo código encontra-se disponível em:
https://github.com/danilobellini/fisl14
Slides da apresentação realizada no fisl14 no dia 2013-07-04 acerca da escrita de código Python único para funcionamento em ambos o Python 2.x e 3.x, enfatizando as versões 2.6, 2.7, 3.2 e 3.3 principalmente.
(2013-05-20) [DevInSampa] AudioLazy - DSP expressivo e em tempo real para o P...Danilo J. S. Bellini
Slides da apresentação no DevInSampa 2013 (18 de maio), com algumas complementações e correções. Esses mesmos slides foram utilizados na apresentação feita no fisl 2014 (2013-07-05).
1. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 1/56
A
udioLazy
AudioLazy em 2017!AudioLazy em 2017!
https://github.com/danilobellini/audiolazy
2. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 2/56
A
udioLazy
Danilo J. S.
Bellini
Danilo J. S.
Bellini
● Formação na USP
– Engenheiro eletricista (Poli)
– Bacharel em música (ECA)
– Mestre em ciência da
computação (IME)
● Experiência
– Processamento de sinais
(áudio e imagem)
– Estatística
– GIS / GIScience
– Python, Shell script, …
– Web, Docker, testes, …
● FLOSS developer
– Projetos: AudioLazy,
Dose, PyScanPrev,
pyturing, pytest-doctest-
custom, fractal, …
– Contribuições: IPython,
watchdog, py.test,
openModeller, …
● https://github.com/danilobellini
● https://bitbucket.org/danilobellini
● https://br.linkedin.com/in/danilo-j-s-bellini-66a96310
● https://ericstk.wordpress.com/2014/10/16
3. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 3/56
A
udioLazy
4. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 4/56
A
udioLazy
AudioLazyAudioLazy
● DSP (Digital Signal Processing)
– Análise
– Síntese
– Processamento
– Psicoacústica (modelos)
●
Expressividade de código
●
Tempo real
●
100% Python
●
GPLv3
Documentação (Sphinx)
http://pythonhosted.org/audiolazy
5. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 5/56
A
udioLazy
Síntese!Síntese!
6. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 6/56
A
udioLazy
Exemplos de sínteseExemplos de síntese
● A partir de alguma partitura / notação
– Direto no código
./ode_to_joy.py jack
– Integração com Music21
./play_bach_choral_square.py jack
● Resultado
– Armazenamento da síntese (WAVE)
./save_and_memoize_synth.py
– I/O via PyAudio (Tempo real)
● PortAudio: ALSA, JACK, PulseAudio, ASIO, …
7. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 7/56
A
udioLazy
SínteseSíntese
● Modulação
– Ring/anel (produto)
– AM (anel + portadora)
– FM
./mcfm.py jack
● Síntese aditiva
– e.g. shepard.py
● Síntese subtrativa (filtros)
– e.g. ode_to_joy.py
● Formas de onda
– Senoidal
– Dente de serra (Sawtooth)
– Consulta à tabela (Table
lookup)
● Ruído
– Branco/uniforme
– Gaussiano
./keyboard.py jack
GGGSUGSUG
LLLPUTSUG
8. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 8/56
A
udioLazy
Análise!Análise!
9. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 9/56
A
udioLazy
AnáliseAnálise
● ZCR (Taxa de cruzamento no zero)
● DFT (Transformada Discreta de Fourier)
./dft_pitch.py jack
● AMDF (Average Magnitude Difference Function)
1
2
1
2
10. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 10/56
A
udioLazy
LPC
Linear Predictive Coding
LPC
Linear Predictive Coding
● Modelo fonte-filtro
– Classificação de vogais
– Análise
./lpc_plot.py
– Síntese
./formants.py jack
● Envoltória espectral
Formantes
11. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 11/56
A
udioLazy
Animated Plot!
(Matplotlib)
Animated Plot!
(Matplotlib)
● Análise em tempo
real
● Visualização no
tempo e na
frequência
– Sons harmônicos
./animated_plot.py jack
12. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 12/56
A
udioLazy
Psicoacústica!Psicoacústica!
13. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 13/56
A
udioLazy
Modelo ISO/FDIS 226:2003
(Loudness)
Modelo ISO/FDIS 226:2003
(Loudness) ./iso226_plot.py
./chirp_constant_phon.py
14. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 14/56
A
udioLazy
Filtros gammatone
(auditory modeling)
Filtros gammatone
(auditory modeling)
./gammatone_plots.py
15. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 15/56
A
udioLazy
Filtros gammatone
(auditory modeling)
Filtros gammatone
(auditory modeling)
./gammatone_plots.py
16. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 16/56
A
udioLazyAuditory Scene Analysis
(A. Bregman)
Auditory Scene Analysis
(A. Bregman)
./butterworth_with_noise.py jack
17. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 17/56
A
udioLazy
Filtros!Filtros!
18. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 18/56
A
udioLazy
filt = 1./9. * (4 - z ** -2) / (1 + .8 * z ** -1 + .4 * z ** -2)
filt.zplot().savefig("zeropolo.pdf")
fcomb = comb.fb(25, .95)
fcomb.plot().savefig("plot-comb.pdf")
filt = 1./9. * (4 - z ** -2) / (1 + .8 * z ** -1 + .4 * z ** -2)
filt.zplot().savefig("zeropolo.pdf")
fcomb = comb.fb(25, .95)
fcomb.plot().savefig("plot-comb.pdf")
1 2
1
2
Plots de ZFilter (objeto z)
Exemplo de filtro comb
Plots de ZFilter (objeto z)
Exemplo de filtro comb
19. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 19/56
A
udioLazy
Filtro de Butterworth
AudioLazy + Scipy
Filtro de Butterworth
AudioLazy + Scipy
20. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 20/56
A
udioLazy
Processamento!Processamento!
21. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 21/56
A
udioLazy
STFTSTFT
● Transformada de Fourier de curto período
● Longo processo
– 1. Análise (transformada de Fourier)
– 2. Processamento (espectral)
– 3. Síntese (inversa da transformada de Fourier)
● Saltos diferentes do tamanho da janela de análise
– Overlap-add
● Dá para simular a mudança de timbre do pitch shift sem
mudar o pitch?
./roll_magnitude.py jack
● Permite efeitos como time stretch, pitch shift
22. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 22/56
A
udioLazy
Robotize!Robotize!
● DAFx (Livro)
● Oneliner: stft(abs)
./robotize.py jack
23. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 23/56
A
udioLazy
24. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 24/56
A
udioLazy
And now for
something
completely
different…
And now for
something
completely
different…
25. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 25/56
A
udioLazy
Imagens!
Criadas 100% em código (o mouse não foi usado)
Bibliotecas:
AudioLazy
Numpy
Matplotlib
Shapely
Hipsterplot
Imagens!
Criadas 100% em código (o mouse não foi usado)
Bibliotecas:
AudioLazy
Numpy
Matplotlib
Shapely
Hipsterplot
26. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 26/56
A
udioLazy
27. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 27/56
A
udioLazy
28. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 28/56
A
udioLazy
29. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 29/56
A
udioLazy
30. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 30/56
A
udioLazy
31. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 31/56
A
udioLazy
32. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 32/56
A
udioLazy
33. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 33/56
A
udioLazy
34. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 34/56
A
udioLazy
35. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 35/56
A
udioLazy
36. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 36/56
A
udioLazy
37. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 37/56
A
udioLazy
38. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 38/56
A
udioLazy
39. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 39/56
A
udioLazy
40. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 40/56
A
udioLazy
41. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 41/56
A
udioLazy
42. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 42/56
A
udioLazy
43. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 43/56
A
udioLazy
44. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 44/56
A
udioLazy
45. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 45/56
A
udioLazy
46. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 46/56
A
udioLazy
47. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 47/56
A
udioLazy
48. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 48/56
A
udioLazy
Senta que lá vem
história
Senta que lá vem
história
49. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 49/56
A
udioLazy
20132013
● Pedaleira
– Arduino + AudioLazy
– Orientandos do 2o ano de
graduação na Poli-USP
● Alunos:
– Daniel Ken Fujimori Killner
– Gabriel Moura Vieira
Martinez
– Rafael Alves de Araujo
Sena
– Ricardo Boccoli Gallego
50. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 50/56
A
udioLazy
51. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 51/56
A
udioLazy
https://github.com/ricardobg/DigitalPedalBoard
52. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 52/56
A
udioLazy
● Evidências de
uso:
– Issues no
GitHub
– E-mails
– Tweets
53. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 53/56
A
udioLazy
54. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 54/56
A
udioLazy
● Há usuários em diversos países
● Casos de uso: experimentação e aprendizado de DSP
55. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 55/56
A
udioLazy
56. Danilo J. S. Bellini – @danilobellini
AudioLazy em 2017! – 2017-07-22 – São Paulo – SP 56/56
A
udioLazy
Fim!
Perguntas?
Fim!
Perguntas?