Slide 1

Slide 1 text

Fazendo o Python Cantar como usar o módulo wave

Slide 2

Slide 2 text

Camilo Cunha de Azevedo Já trabalhei em algumas coisas com Python, mas hoje trabalho com infosec em Clojure. https://dev.to/cazevedo

Slide 3

Slide 3 text

Som ● O som é uma onda que propaga-se pela vibração do ar. ● Somos capazes de perceber o som porque o nosso aparelho auditivo traduz essas vibrações em estímulos elétricos que são interpretadas pelo nosso cérebro. ● Existem duas medidas importantes que devemos conhecer sobre o som e que vamos ver ao longo da apresentação: amplitude e frequência. ● Amplitude é o tamanho da onda e isso determina o quão alto o som é. ● Frequência é a velocidade da onda e determina o tom do som e é medido em hertz.

Slide 4

Slide 4 text

Tipos de Sinal ● O som acústico tem a forma senoidal (formato de seno) e é a vibração que é formada quando é soprada uma flauta ou se vibra a corda da guitarra. ● O sinal quadrático é o formato do som digital. ● O sinal triangular é uma aproximação do som senoidal, que está mais próximo do senoidal, mas sem as harmônicas ainda um pouco digital. ● O sinal sem forma sempre soa como um ruído, deformidades em qualquer onda também causam ruído.

Slide 5

Slide 5 text

Tom de Concerto ● “Tom de Concerto” ou “Lá 440” é a nota Lá na frequência de onda 440 hertz. ● Essa nota tem sido usada para afinar instrumentos e é o “Hello World” no mundo das aplicações que trabalham com som digital.

Slide 6

Slide 6 text

Formato wave ● Formato de áudio criado em conjunto pela Microsoft e IBM. ● É uma das variações do formato RIFF assim como outros formatos como AVI para vídeo ou WebP para imagens. ● É definido por uma especificação de 44 bytes + dados que contém os metadados de como será lido o arquivo e as informações sobre o áudio.

Slide 7

Slide 7 text

Formato Wave

Slide 8

Slide 8 text

Pulse Code Modulation

Slide 9

Slide 9 text

Criando um tom de concerto com Python ● Para criarmos um arquivo de áudio com esse formato usamos a biblioteca wave que vem instalada com o Python. ○ https://docs.python.org/3/library/wave.html ● As funções de leitura e escrita de arquivos são iguais às funções de leitura e gravação de arquivos, porém, que inserem corretamente os metadados nas posições corretas ao gravar e ler os arquivos (temos que informar alguns deles).

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

Lendo arquivos wave ● Assim como usamos o módulo wave para escrever arquivos de áudio, podemos usá-lo para ler os arquivos de áudio e analisá-los / modificá-los. ● Vamos usar as bibliotecas matplotlib e numpy para visualizar a onda gerada no arquivo wave como gráfico.

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

Fazendo as outras notas ● Para fazer outras notas apenas precisamos passar sua frequência correspondente a fim de gerar o som da nota que desejamos. ● Para atingirmos 1 oitava abaixo dividimos a frequência por 2 e para atingir 1 oitava acima multiplicamos a frequência por 2.

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

Fazendo música ● Cada instrumento tem um “alcance” ou seja o número de oitavas (frequências) que consegue produzir. ● Dependendo da música que você quer produzir pode ser que queira simular um instrumento mais agudo ou grave, ou qualquer outro que esteja em uma frequência diferente da que estamos trabalhando. ● Para fazer música, produzimos os sons das notas e então as empacotamos junto em um arquivo.

Slide 19

Slide 19 text

Preciso disso? R: Não! ● Esse é provavelmente o pior jeito de trabalhar com áudio em Python, como vimos sequer gerar uma nota que soe decente é necessário matemática avançada e muito trabalho. ● Existem bibliotecas como scipy (que tem funções melhores para wave), pyo (que tem várias funções prontas para trabalhar com sinais de áudio), foxdot (que é uma biblioteca profissional para trabalhar com síntese de som)... e muitas outras alternativas que são mais fáceis de programar e mais produtivas.

Slide 20

Slide 20 text

Então… por que? ● É legal conhecer mais coisas que existem na biblioteca padrão. ● É um exercício para quem quer aprender mais sobre áudio, sinais, física, matemática, música… ● Porque não?

Slide 21

Slide 21 text

Obrigado!

Slide 22

Slide 22 text

Dúvidas!?