• Nenhum resultado encontrado

GABRIEL YSHAY DRUM MACHINE DIGITAL

N/A
N/A
Protected

Academic year: 2021

Share "GABRIEL YSHAY DRUM MACHINE DIGITAL"

Copied!
62
0
0

Texto

(1)

DRUM MACHINE DIGITAL

S˜ao Paulo 2020

(2)

DRUM MACHINE DIGITAL

Trabalho apresentado `a Escola Polit´ecnica da Universidade de S˜ao Paulo para obten¸c˜ao do T´ıtulo de Engenheiro de Computa¸c˜ao.

Orientador:

Prof. Dr. Bruno de Carvalho Albertini

S˜ao Paulo 2020

(3)

Este trabalho apresenta a arquitetura e implementa¸c˜ao de uma m´aquina de percuss˜ao digital explorando alguns modelos de s´ıntese diferentes e m´etodos de implementa¸c˜ao efici-entes. Maquinas de percuss˜ao digital emulam um baterista de modo que o usu´ario possa programar os ritmos e escolher os sons de cada peda¸co da bateria. Existem muitas drum machines no mercado pelo grande interesse vindo da m´usica eletrˆonica, variando consi-deravelmente as caracter´ısticas e pre¸cos. Vivendo no Brasil e sendo artista de musica eletrˆonica, sempre quis comprar uma maquina assim, porem o custo sempre pareceu uma barreira.

Porem, utilizando conhecimentos de Sistemas Digitais, Organiza¸c˜ao e Arquitetura de Computadores, Eletrˆonica, Sistemas Embarcados e Sistemas e Sinais se tornou poss´ıvel replicar todas as caracter´ısticas desejadas e ainda dar mais flexibilidade art´ıstica por se utilizar de um sistema digital. Assim esse projeto centraliza diversas ´areas da gradua¸c˜ao em algo aplic´avel ao mercado.

A m´aquina final atinge todos os requisitos funcionais e n˜ao funcionais pretendidos al´em de ser validada por mim e amigos produtores como uma interessante maquina de gera¸c˜ao de ritmos e tons.

(4)

1 Diagrama de tempo de um envelope. . . 15

2 Exemplo de envelope sobre a amplitude. . . 16

3 s(t) modulada pelo envelope m(t) . . . 17

4 STFT de s(t) . . . 17

5 Filtro com frequˆencia de corte aplicado `a uma onda quadrada modulada por um envelope. . . 18

6 Diagrama de sinal do Kick . . . 20

7 Diagrama de sinal dos Hats . . . 21

8 Diagrama de sinal do Snare . . . 22

9 Diagrama de sinal das Claps . . . 22

10 Diagrama de sinal das Claps do manual do Roland 909 . . . 23

11 Diagrama de sinal dos FMs . . . 23

12 Curva do waveshaper para diferentes valores de a. . . 24

13 Resposta do waveshaper para uma entrada senoidal (440Hz) e a=0. . . 25

14 Resposta do waveshaper para uma entrada senoidal (440Hz) e a=100. . . . 25

15 Arquitetura geral do projeto . . . 30

16 Detalhamento da arquitetura de software . . . 31

17 Detalhamento da unidade de s´ıntese . . . 32

18 Unidade de controle . . . 36

19 Diagrama de funcionamento ass´ıncrono do display . . . 38

20 Diagrama da arquitetura do hardware . . . 41

21 Interfaces . . . 43

22 Esquem´atico dos Steps . . . 47

(5)

25 Esquem´atico dos Encoders . . . 48

26 Esquem´atico dos componentes globais . . . 49

27 Esquem´atico final . . . 50

28 PCB fabricada . . . 50

29 Simula¸c˜ao da montagem . . . 51

30 Diagrama de constru¸c˜ao da caixa de ferro . . . 52

31 Operator do Ableton, no modo de s´ıntese aditiva. O usu´ario pode desenhar nas barras a amplitude de cada harmˆonica. . . 60

32 Serum da Xfer usa s´ıntese subtrativa. Os dois osciladores s˜ao somados e depois passam pelo filtro, na direita. . . 61

33 Operator do Ableton, no modo de s´ıntese FM. Cada linha ´e um oscilador modulando a frequˆencia do oscilador abaixo. . . 61

(6)

1 Introdu¸c˜ao 9 1.1 Objetivo . . . 9 1.2 Motiva¸c˜ao . . . 10 1.3 Justificativas . . . 11 1.4 Organiza¸c˜ao do trabalho . . . 12 2 Aspectos conceituais 14 2.1 Musical Instrument Digital Interface . . . 14

2.1.1 Notas . . . 14

2.1.2 sync . . . 15

2.2 Envelopes . . . 15

Modula¸c˜ao da frequˆencia de corte do filtro sobre uma onda quadrada . . . 17

2.2.1 Implementa¸c˜ao eficiente de envelopes exponenciais . . . 17

Inferindo os parˆametros do envelope . . . 19

2.3 Modelagem dos instrumentos . . . 20

2.3.1 Kick . . . 20 2.3.2 Hats . . . 21 2.3.3 Snare . . . 22 2.3.4 Claps . . . 22 2.3.5 FM . . . 23 2.4 Efeitos sonoros . . . 24 2.4.1 Waveshaper . . . 24 2.4.2 Filtro . . . 25

(7)

3.1 Roland TR-8S . . . 27

3.2 Elektron Digitakt . . . 27

3.3 Korg Volka Drum . . . 28

4 Tecnologias utilizadas 29 4.1 Arquitetura do projeto . . . 29

4.2 Detalhamento da arquitetura de software . . . 30

4.2.1 Detalhamento da unidade de s´ıntese . . . 31

4.2.2 Instrumentos . . . 32 Kick . . . 32 Hats . . . 33 Snare . . . 33 Claps . . . 33 FM . . . 34 4.2.3 Mixer e efeitos . . . 34 4.2.4 Sa´ıda . . . 34 4.2.5 M´odulos de Software . . . 34 4.2.5.1 HAL . . . 34 4.2.5.2 Encoder . . . 34 4.2.5.3 Unidade de controle . . . 35 4.2.5.4 Infraestrutura de ´Audio . . . 36 4.2.5.5 Instrument Interface . . . 36 4.2.5.6 Value Interface . . . 37 4.2.5.7 Display . . . 37 4.2.5.8 Menu . . . 39 4.2.5.9 Serial Transfer . . . 40

(8)

4.3 Detalhamento da arquitetura de hardware . . . 40 4.3.1 Interface A . . . 41 4.3.2 Interface B . . . 41 4.3.3 ATMega328p . . . 41 4.3.4 Teensy 3.6 . . . 42 4.3.5 Computador . . . 42 4.3.6 SGTL5000 . . . 42 4.4 Interfaces . . . 42 4.4.1 Projeto . . . 42 4.4.2 Steps . . . 43 4.4.3 Instrumentos . . . 44 4.4.4 Encoders . . . 44 4.4.5 Potenciˆometros . . . 44 4.4.6 Interface de controle . . . 44

4.4.7 Patterns (padr˜oes) e p´aginas . . . 45

4.5 Constru¸c˜ao do hardware . . . 46

4.6 Constru¸c˜ao da caixa . . . 51

5 Especifica¸c˜ao dos requisitos do sistema 53 5.1 N˜ao funcionais . . . 53

5.2 Funcionais . . . 54

6 Conclus˜ao 55 6.1 An´alise de custos . . . 55

6.2 Pr´oximos passos . . . 56

(9)

7.1 Aditiva . . . 60

7.2 Subtrativa . . . 60

(10)

1

INTRODUC

¸ ˜

AO

Em 1983 [1], a Roland lan¸cou a primeira Drum Machine, o 909, por ser feito de pl´astico e ter ritmos exatamente sincronizados no tempo, marcado digitalmente, algo que ´e muito estranho a um publico acostumado com bateristas tradicionais, portanto, o produto foi um fracasso comercial. Tal fracasso fez com que o produto acabasse em lojas de produtos usados por pre¸cos muito baixos, o que propiciou o acesso `a artistas com baixo poder aquisitivo. Desta forma a drum machine foi rapidamente adotada pelos artistas que estavam criando o rap nas periferias americanas. Com o sucesso desse estilo, a m´aquina come¸cou a ganhar aten¸c˜ao de artistas em muitos outros gˆeneros como rock, disco e pop, sendo adotada por artistas de sucesso como Donna Summer e Prince.

A m´aquina se tornou o ritmo base dos estilos musicais techno e house que surgiam na mesma ´epoca, e o crescimento desses gˆeneros, at´e os dias atuais, fez com que seu pre¸co disparasse. Hoje uma Roland 909, a mesma m´aquina que foi considerada um fracasso comercial, n˜ao ´e encontrada no mercado por menos de 8 mil d´olares estadunidenses.

Com a cria¸c˜ao do transistor e a evolu¸c˜ao dos m´etodos de fabrica¸c˜ao de CIs, o projeto digital se tornou uma metodologia muito mais barata e simples de desenvolver, sendo poss´ıvel recriar com alta fidelidade os comportamentos e sons da 909. N˜ao se pode dizer que a cria¸c˜ao do 909 foi um acerto da Roland mas sim dos artistas que usaram dos poucos recursos que tinham para mudar a m´usica para sempre.

Inspirado pela Roland 909, apresentaremos um estudo dos conceitos por tr´as da gera¸c˜ao digital de sons para uma drum machine de autoria pr´opria, desenvolvida e im-plementada integralmente no decurso deste trabalho de conclus˜ao de curso.

1.1

Objetivo

O objetivo deste Trabalho de Conclus˜ao de Curso (TCC) ´e projetar e construir uma drum machine inspirada nas drum machines anal´ogicas da d´ecada de 80. No entanto,

(11)

o presente trabalho diferencia-se das drum machines anal´ogicas pois apoia-se comple-tamente nas tecnologias digitais. O principal motivo para tal abordagem ´e atingir os requisitos de custo, cuja imposi¸c˜ao ´e finalizar o TCC com valor competitivo e vi´avel para uso amador. Para atingir este objetivo, desenvolvemos modelos matem´aticos capazes de construir sons. Os modelos s˜ao parametriz´aveis, possibilitando que o artista tenha flexibilidade na gera¸c˜ao dos sons.

1.2

Motiva¸

ao

Em 1983 foi criada a drum machine que posteriormente se tornaria a mais famosa do mundo, a Roland 909. O principal motivo do sucesso ´e que ela permitia que os DJs (denomina¸c˜ao de artistas que misturam m´usicas de diversos artistas ao vivo) programas-sem ritmos de bateria parametricamente, programas-sem a necessidade de um baterista. A influˆencia da Roland 909 foi t˜ao grande que seus sons, considerados limitados em compara¸c˜ao com um baterista humano operando uma bateria real, agora marcavam a ´epoca e marcavam a passagem para uma nova ´epoca na m´usica.

Com o passar dos anos, as drum machines evolu´ıram, sendo poss´ıvel encontrar uma variedade de vers˜oes, inclusive digitais. Uma grande parte do p´ublico ainda mantinha uma preferˆencia por sons de instrumentos gerados com circuitos anal´ogicos, o que tornou o desenvolvimento consideravelmente mais lento. O resultado desta resistˆencia ao digital ´e que poucas caracter´ısticas novas foram adicionadas e os pre¸cos se mantiveram largamente inacess´ıveis, especialmente no Brasil onde as drum machines mais simples custam em torno de R$4000,00.

No Brasil, a m´usica eletrˆonica ou produzida com aux´ılio de instrumentos eletrˆonicos n˜ao ´e expressiva como na Alemanha ou os Estados Unidos. Nesses pa´ıses o custo de ins-trumentos eletrˆonicos ´e consideravelmente mais baixo, possibilitando que mesmo artistas iniciantes tenham acesso a instrumentos complexos. Isso tem um impacto consider´avel na produ¸c˜ao de m´usica: um maior n´umero de iniciantes significa maiores chances da emergˆencia de um talento e iniciantes com infraestrutura adequada conseguem produzir e lan¸car m´usicas sem necessariamente ter o capital necess´ario para uma produ¸c˜ao em uma produtora profissional (o que chega a custar de dezenas a centenas de milhares de d´olares).

Essa cena independente tˆem crescido muito no mundo todo com a divulga¸c˜ao de conte´udo online (e.g. YouTube), motivando um n´umero maior de iniciantes. Com o

(12)

au-mento dos iniciantes na gera¸c˜ao eletrˆonica de sons, cresce a necessidade por infraestrutura, incluindo m´aquinas de gera¸c˜ao de som. Conforme citado anteriormente, esta demanda ´e atendida nos pa´ıses desenvolvidos devido ao custo dos equipamentos tradicionais (e.g. drum machines simples), enquanto no Brasil mesmo as m´aquinas mais simples, tamb´em chamadas de m´aquinas ou instrumentos ”de entrada”, s˜ao acess´ıveis somente para um produtor profissional.

Este TCC visa produzir uma m´aquina geradoras de som drum machine que possa ser utilizada como instrumento de entrada com custo acess´ıvel para artistas amadores, considerando o cen´ario s´ocio-econˆomico brasileiro.

1.3

Justificativas

Dado que existe uma demanda crescente por equipamentos do gˆenero e o custo no Brasil ´e considerado inacess´ıvel para amadores, analisamos o perfil de um artista iniciante para enumerar os trˆes principais motivos que justificam este TCC, os quais apresentamos abaixo:

• O instrumento deve ser vers´atil. Um iniciante n˜ao tem ainda um prop´osito espec´ıfico, portanto ´e adequado que o instrumento fa¸ca o maior n´umero de tarefas poss´ıveis, resolvendo a maior quantidade poss´ıvel de problemas que um iniciante costuma enfrentar durante seu aprendizado.

• O instrumento deve ser f´ısico. Existem bons instrumentos implementados em soft-ware, inclusive de uso gratuito e open-source, mas esta alternativa tem uma des-vantagem que n˜ao costuma ser bem vista por qualquer artista: a expressividade. Assim como um instrumento real (e.g. piano ou viol˜ao), os artistas consideram que as vers˜oes emuladas em software n˜ao tem expressividade compar´aveis `as vers˜oes reais. Isso rapidamente se torna um fator limitante para a express˜ao art´ıstica e produ¸c˜ao de conte´udo.

• O custo deve ser acess´ıvel. A grande maioria dos artistas iniciantes n˜ao possui recurso para adquirir um instrumento comercial, mas est´a disposta a investir em um instrumento que seja acess´ıvel desde que suas limita¸c˜oes sejam aceit´aveis.

Para cumprir os trˆes requisitos, a alternativa adequada ´e utilizar hardware digital em substitui¸c˜ao ao anal´ogico. O hardware digital acelera o tempo de desenvolvimento

(13)

pois diferentes modelos de s´ıntese podem ser testados e futuramente escolhidos sem custo adicional para a prototipa¸c˜ao al´em da programa¸c˜ao em si. A altera¸c˜ao de um hardware anal´ogico exige que o projeto todo seja refeito para acomodar qualquer modifica¸c˜ao.

O projeto digital permite modelos mais complexos do que o anal´ogico. Para modular um som analogicamente ´e necess´ario projetar todo o caminho do sinal, todas as intera¸c˜oes causadas por esse sinal e todas as compensa¸c˜oes e ganhos para que a modula¸c˜ao seja a desejada. No projeto digital tal tarefa se resume a implementa¸c˜ao de uma equa¸c˜ao em software, que pode ser executado na mesma plataforma base de gera¸c˜ao de sons.

O hardware digital ´e mais acess´ıvel. Existem no mercado processadores com capaci-dade computacional para atender os requisitos de tempo do projeto a pre¸cos baixos, como o Teensy[2] ou o Raspberry Pi[3]. Em um projeto anal´ogico, todos os componentes devem ser adequados e de excelente qualidade, enquanto que em um projeto no dom´ınio digital, basta que o processador escolhido atenda a demanda de processamento necess´aria para a equa¸c˜ao de gera¸c˜ao do som, sem que a qualidade do processador interfira na qualidade do som.

Para sair do dom´ınio digital e passar para o anal´ogico, usa-se um conversor digital-anal´ogico (DAC). O custo de bons conversores ´e expressivo, por´em ainda acess´ıvel. H´a no mercado conversores acess´ıveis cuja qualidade da sa´ıda de ´audio pode superar a gerada por componentes anal´ogicos.

1.4

Organiza¸

ao do trabalho

O restante deste trabalho est´a organizado da seguinte forma:

• na se¸c˜ao 2.1 discutiremos o protocolo MIDI

• na 2.2 discutiremos a motiva¸c˜ao dos envelopes e sua implementa¸c˜ao.

• na se¸c˜ao 2.3 discutiremos como cada instrumento ser´a modelado e quais parˆametros iremos implementar

• na 2.4 discutiremos os efeitos sonoros aplicados

• na 2.5 discutiremos brevemente a coordena¸c˜ao dos eventos de tempo e como garantir que todos os limites de tempo sejam atingidos.

(14)

• No cap´ıtulo 4 ser´a discutida a arquitetura (4.1 arquitetura geral, 4.2 arquitetura de software, 4.3 arquitetura de hardware, 4.4 interfaces f´ısicas e 4.5 a constru¸c˜ao do hardware)

• Finalmente, no cap´ıtulo 5 ser´a discutido os requisitos funcionais e n˜ao funcionais do sistema.

Os leitores interessados na implementa¸c˜ao e detalhes t´ecnicos e te´oricos devem ler o capitulo 2. Aqueles interessados na montagem do projeto podem referir ao cap´ıtulo 4 e aqueles interessados no custo final do projeto podem olhar as analises apresentadas na conclus˜ao.

Primeiro, discutiremos os modelos matem´aticos envolvidos na s´ıntese dos elementos percussivos. Com isso, discutiremos a arquitetura de software, que possibilitar´a a imple-menta¸c˜ao est´avel dos m´etodos. Em seguida a arquitetura de hardware e os componentes envolvidos. Finalmente, discutiremos a interface do projeto e o impacto que isso tem sobre a m´usica produzida pelo artista. An´alises de mercado ser˜ao necess´arias, incluindo prospec¸c˜ao de vendas, perfil dos usu´arios, custo do produto e compara¸c˜ao com competi-dores.

(15)

2

ASPECTOS CONCEITUAIS

2.1

Musical Instrument Digital Interface

Musical Instrument Digital Interface (MIDI) [4] ´e um protocolo de comunica¸c˜ao uti-lizado para conectar e sincronizar instrumentos, assim como transmitir informa¸c˜oes mu-sicais entre dispositivos. O MIDI ´e o padr˜ao da ind´ustria desde 1981, quando foi desen-volvido.

Neste trabalho, usamos dois tipos de sinais especificados no padr˜ao MIDI: notas e sync.

2.1.1

Notas

O protocolo MIDI ´e capaz de transmitir informa¸c˜oes sobre as notas que devem ser sintetizadas no dispositivo que as recebe. Para tal, existem duas mensagens diferentes [5]: noteOn e noteOff.

Quando uma o instrumento ´e acionado (e.g. pressionar uma tecla de um teclado), o dispositivo de captura envia uma mensagem noteOn, contendo 3 bytes. O primeiro byte ´e a sobreposi¸c˜ao (opera¸c˜ao l´ogica OU) da identifica¸c˜ao est´atica da mensagemnoteOn (0x90) com o canal onde deseja-se sintetizar o som, que pode assumir os valores de 0 a 16, portanto este byte pode assumir os valores de 0X90 a 0x9F. O segundo byte representa a nota musical sendo tocada. O d´o central (C3) ´e representado pelo valor 0x18, e as notas musicais podem assumir os valores de 0 a 127. O terceiro e ´ultimo byte representa o velocity, que tem como significado semˆantico a intensidade com que a tecla foi pressionada, mapeada nos valores de 0 (pouca intensidade) a 127 (intensidade m´axima).

A segunda mensagem, o noteOff, indica que o instrumento foi desacionado (e.g. uma tecla de um teclado foi solta). Esta mensagem cont´em os mesmos bytes da mensagem noteOn por´em o identificador ´e 0x80, ent˜ao o primeiro byte ser´a com base neste valor.

(16)

2.1.2

sync

Toda a sincronia ´e relativa `a medida de tempo padr˜ao musical, as barras. Uma barra ´e equivalente a 16 steps deste projeto, ou 16 semi-colcheias em nota¸c˜ao musical. A dura¸c˜ao em segundos depende da velocidade de execu¸c˜ao do ritmo, em batidas por minuto, ou BPM. Para um entendimento mais profundo da nota¸c˜ao, referir-se a [6].

Para aplica¸c˜oes nas quais a sincronia ´e importante, o padr˜ao MIDI ´e capaz de enviar mensagens do tipo start, stop e clock. O start (identificador est´atico 0xFA) indica que a sincronia come¸cou e o utilizamo para resetar todas as sequˆencias de notas enviadas at´e o momento. O stop (identificador est´atico 0xFC) indica que a sincronia foi pausada. Finalmente, o clock (identificador est´atico 0xF8) ´e enviado pelo computador ou disposi-tivo que controla a sincronia 24 vezes para cada quarto de barra, assim a cada 6 sinais de clock a m´aquina deve avan¸car para o pr´oximo step.

2.2

Envelopes

Um envelope ´e um sinal que modula uma onda sonora no tempo. Este pode controlar a amplitude ou a frequˆencia de uma onda, a frequˆencia de um filtro ou qualquer outro parˆametro da s´ıntese de ´audio. Na literatura[7] ´e comum dividir o envelope em fases, e neste trabalho adotamos a divis˜ao em quatro fases: A, D, S e R, que podem ser vistas na Figura 1.

Figura 1: Diagrama de tempo de um envelope.

O envelope come¸ca a atuar sobre a onda sonora quando uma mensagem MIDI do tipo noteOn ´e recebida. A amplitude ´e modulada come¸cando em 0 e sobre linearmente at´e o m´aximo poss´ıvel (usualmente 1.0) durante um tempo parametriz´avel chamado de fase de ataque, mostrada na Figura 1 como a fase A (verde). Quando o valor m´aximo da

(17)

amplitude ´e atingido, o envelope passa para a fase de decay, mostrada na Figura 1 como fase D (laranja). Nesta fase o valor da modula¸c˜ao varia de 1.0 ao valor parametriz´avel chamado de sustain. O decaimento pode ser linear ou exponencial, e esta decis˜ao impacta a aplica¸c˜ao do envelope pois altera a percep¸c˜ao da onda sonora modulada. Quando o valor de sustain ´e atingido, o envelope passa para a terceira fase, que pode ser identificada na figura pela letra S (azul). Nesta fase, o valor do envelo pepermanece constante no valor de sustain at´e que uma mensagem MIDI do tipo noteOff seja recebida. Quando esta mensagem for recebida, o envelope passa para sua ´ultima fase: o release, mostrado na figura pela letra R (roxa). Nesta fase o valor do sinal vai de sustain a 0, tamb´em de forma linear ou exponencial.

Na Figura 2 podemos ver o efeito da modula¸c˜ao imposta por um envelope (em azul) sobre uma onda senoidal (em rosa).

Figura 2: Exemplo de envelope sobre a amplitude.

Podemos perceber claramente as 4 fases do envelope analisando a amplitude da curva azul. Para este exemplo, adotamos um ataque linear, decay e release exponenciais.

Para aplicar o envelope sobre a frequˆencia, precisamos de duas ondas, uma represen-tando o envelope (m(t)) e outra o sinal senoidal de entrada (s(t)), que ser´a, modulado pelo envelope.

m(t) = exp(0.25t) (2.1)

s(t) = cos(2π ∗ f ∗ m(t)) (2.2)

Na Figura 3 podemos ver o efeito do envelope representado pela equa¸c˜ao m(t). Ana-lisando a Transformada de Fourrier de curto tempo (STFT, do inglˆes Short-Time Fourier Transform [8]) do sinal de sa´ıda podemos ver o efeito do envelope sobre a frequˆencia

(18)

Figura 3: s(t) modulada pelo envelope m(t)

Figura 4: STFT de s(t)

principal da senoide, o que ´e mostrado na Figura 4. Foi adicionado um ru´ıdo branco `a portadora para simular um ambiente mais realista, onde fenˆomenos n˜ao computados por este m´etodo podem ser reduzidos a alguma forma de ru´ıdo. Esse tipo de modula¸c˜ao de um envelope sobre a frequˆencia ´e especialmente interessante para este TCC uma vez que a maioria das ondas sonoras de instrumentos de percuss˜ao ´e criada a partir de uma senoide modulada em amplitude e em frequˆencia.

Modula¸

ao da frequˆ

encia de corte do filtro sobre uma onda

quadrada

No dom´ınio digital ´e comum a presen¸ca de ondas quadradas pois ´e mais r´apido e simples trabalhar com condicionais bin´arios. No exemplo mostrado na Figura 5, aplicamos um filtro do tipo State Variable Filter [8] `a uma onda quadrada. Com este filtro ´e poss´ıvel controlar a frequˆencia de corte com a precis˜ao de alguns poucos samples, cada instante do sinal, de ´audio. A onda quadrada tem sua amplitude constante, mas no gr´afico conseguimos ver as linhas de frequˆencia superiores come¸carem a desaparecer gradualmente e, pr´oximo a 3 segundos, a frequˆencia fundamental ´e filtrada tamb´em.

2.2.1

Implementa¸

ao eficiente de envelopes exponenciais

Os envelopes controlam, geralmente, parˆametros como amplitudes e frequˆencias de ondas. Esse tipo de fenˆomeno, em ´audio, ´e percebido pelo ser humano de maneira expo-nencial, portanto se desejamos que a percep¸c˜ao de uma queda de frequˆencia seja linear, o

(19)

Figura 5: Filtro com frequˆencia de corte aplicado `a uma onda quadrada modulada por um envelope.

envelope deve ser exponencial.

O c´alculo de uma curva exponencial exige a utiliza¸c˜ao da fun¸c˜ao exp que nas imple-menta¸c˜oes padr˜oes das bibliotecas matem´aticas mais usuais utiliza milhares de ciclos de clock para aproximar exp(−αt).

A solu¸c˜ao para este problema se baseia no m´etodo de Euler expl´ıcito [9], que pode ser resumido na equa¸c˜ao abaixo:

yn+1= yn+ hf (yn, tn) (2.3)

Onde f (yn) ´e a derivada da fun¸c˜ao no instante tn.

Modelando a curva do envelope como:

y(t) = Ae−αt+ c (2.4)

pode-se desenvolver

y0(t) = −αAe−αt (2.5)

y0(t) = −α ∗ (y(t) − c) (2.6)

(20)

e desta forma,

y(n + 1) = y(n) + h(−α ∗ (y(n) − c) (2.8)

y(n + 1) = y(n) − αhy(n) + hαc (2.9)

y(n + 1) = y(n)(1 − αh) + hαc (2.10)

(2.11)

Fazendo (1 − αh) = K0 e hαc = K1, podemos reescrever a fun¸c˜ao como:

y(n + 1) = K0y(n) + K1 (2.12)

Desta forma, podemos computar a curva do envelope precomputando os valores de K0 e K1 e utilizando realizar a exponencial usando uma multiplica¸c˜ao e uma adi¸c˜ao,

que podem ser feitos de maneira eficiente pela fun¸c˜ao multiply32 32 add 32 diretamente escrita em assembly. Vale notar que o ARM M4 (o processador que escolhemos para o projeto final) n˜ao tem unidade aritm´etica de ponto flutuante [10], assim todas as grandezas s˜ao transformadas em opera¸c˜oes de ponto fixo para obter a eficiˆencia necess´aria para este m´odulo.

Inferindo os parˆ

ametros do envelope

Na curva exponencial apresentada na subse¸c˜ao anterior, h´a trˆes parˆametros: α, c e A. Esses parˆametros n˜ao s˜ao musicalmente uteis para o usu´ario, portanto adicionamos um est´agio de transforma¸c˜ao de parˆametros com significˆancia musical para coeficientes da curva.

Para o usu´ario, os parˆametros mais intuitivos s˜ao o tempo de decaimento T e a am-plitude do envelope na metade do percurso ym. Em rela¸c˜ao ao yf, como n˜ao ´e importante

para o significado musical da forma de onda gerada, fixaremos em um valor suficiente-mente pequeno mas n˜ao zero para que n˜ao deforme a onda final. Assim temos:

y(t) = Ae−αt+ c (2.13)

y(0) = 1 (2.14)

y(T /2) = ym (2.15)

(21)

pode-se determinar simplesmente A = 1 − c (2.17) K = (ym−c) (1−c) (2.18) α = −2 ln(K)/T (2.19) c = ym2−yf 2ym−yf−1 (2.20)

2.3

Modelagem dos instrumentos

Aqui se utilizar´a c´ırculos com entradas e sa´ıdas para representar cada bloco de ´audio. Os blocos com fun¸c˜oes de onda quadrada, de serra, senoidal ou ruido representam os-ciladores com essas respectivas formas de onda. Os blocos com o simbolo de adi¸c˜ao ou multiplica¸c˜ao representam essa opera¸c˜ao performada em cada amostra dos dois sinais de entrada. Os envelopes s˜ao representados com uma curva subindo linearmente e decaindo exponencialmente. Todos os outros blocos representam filtros, passa-baixas, passa-altas ou passa-bandas. Quando um oscilador recebe algum sinal em sua entrada isso significa que aquele sinal est´a modulando a frequˆencia desse osculador.

2.3.1

Kick

Figura 6: Diagrama de sinal do Kick

O Kick, ou Bumbo em portuguˆes, ´e argumentavelmente a pe¸ca mais importante da bateria. Para recriar seu som, a estrat´egia utilizada pelo Roland 909 foi modular uma senoide em frequˆencia e amplitude. Vamos replicar essa estrutura matematicamente:

(22)

p(t) = A0∗ exp(−αt) + c0 (2.21)

a(t) = A1∗ exp(−αt) + c1 (2.22)

s(t) = a(t) ∗ cos(2π ∗ f0∗ p(t)) (2.23)

Artisticamente, ´e interessante artisticamente adicionar ruido e amplitude control´avel ao s(t), j´a que sons muito simples (com frequˆencias muito puras) soam estranhas ao ouvido humano. Em seguida, o sinal ser´a passado por um filtro LPF, para remover harmˆonicas n˜ao desejadas, do tipo Biquad[8], que tem a implementa¸c˜ao bastante eficiente. O ruido traz imprevisibilidade para o som. A frequˆencia fundamental deve ser control´avel pelo artista para que o kick esteja na mesma escala que os outros instrumentos do artista, equivalente a afinar o instrumento. Os tempos de decaimento, tanto no kick como nos outros instrumentos, fazem o som ser mais comprido ou mais curto, ocupando mais ou menos espa¸co na percep¸c˜ao de quem ouve a musica.

2.3.2

Hats

Figura 7: Diagrama de sinal dos Hats

O hat, ou prato, em portuguˆes, ´e composto de dois discos de metal que quando atin-gidos pela baqueta emitem diversas frequˆencias inarmˆonicas, ou seja, n˜ao m´ultiplas de uma frequˆencia fundamental. Quando o pedal ´e pressionado os dois pratos se encostam, diminuindo o tempo de decaimento, chamado aqui de closed hat e quando o pedal ´e solto, to tempo aumenta e ´e referido como open hat.

Para a constru¸c˜ao dos Hats, 6 ondas quadradas s˜ao somadas, cada uma com uma frequˆencia diferente, calculada como uma propor¸c˜ao da onda fundamental de modo a aproximar a resposta harmˆonica de um metal. Este sinal ´e ent˜ao multiplicado por um envelope expo-nencial e passado num filtro BPF (Filtro Passa Bandas) Biquad e em seguida um HPF

(23)

(Filtro Passa Altas) Biquad. Aqui ´e poss´ıvel controlar parˆametros do envelope, dos dois filtros e a frequˆencia fundamental das ondas quadradas.

2.3.3

Snare

Figura 8: Diagrama de sinal do Snare

O Snare ´e a caixa da bateria, tem um espa¸co para as frequˆencias ressoarem, o que cria uma semelhan¸ca com o kick mas tem tamb´em uma faixa de metal, que quando vibra, produz diversas frequˆencias inarmˆonicas. O Snare se assemelha bastante ao Kick, a diferen¸ca reside na propor¸c˜ao de ru´ıdo para seno na soma. No Kick o seno ´e o sinal principal, mas no Snare o seno tem papel secund´ario e o ru´ıdo tem a maioria da amplitude do sinal final.

2.3.4

Claps

Figura 9: Diagrama de sinal das Claps

(24)

Claps s˜ao sintetizadas, e aproveitamos esta descri¸c˜ao para montar o similar digital. O processo ´e baseado em quatro envelopes, com um atraso entre eles. Esse trem de envelopes ´e multiplicado por um ru´ıdo branco e depois filtrado para obter o efeito final, que ´e muito parecido com uma pessoa batendo palmas.

Figura 10: Diagrama de sinal das Claps do manual do Roland 909

2.3.5

FM

A s´ıntese FM ´e um modelo de s´ıntese diferente da subtrativa (que utiliza filtros para remover os harmˆonicos n˜ao desejados). Neste tipo de s´ıntese todas as frequˆencias obtidas s˜ao geradas a partir da modula¸c˜ao de senos.

Figura 11: Diagrama de sinal dos FMs

Com esse modelo podemos parametrizar as frequˆencias das senoides, os tempos dos envelopes e a quantidade de modula¸c˜ao entre as senoides, assim como a quantidade de retorno da ´ultima senoide. Este ´e um modelo sem paralelo com nenhum instrumento da bateria. Mas diversos sintetizadores e drum machines empregam esse tipo de s´ıntese pela diversidade dos sons produzidos por ele.

(25)

2.4

Efeitos sonoros

A m´aquina gera os sinais dos instrumentos configurados pelo usu´ario e soma os sinais para uma sa´ıda principal (master ). Como est´agio final, o usu´ario ainda pode aplicar alguns filtros sobre o sinal master. Nesta se¸c˜ao, apresentamos a constru¸c˜ao matem´atica de cada um dos filtros que disponibilizamos no projeto final.

2.4.1

Waveshaper

O waveshaper [12] ´e uma forma de distor¸c˜ao em que cada sample do sinal ´e passado por uma fun¸c˜ao, escolhida pelas propriedades de resposta em frequˆencia. Esse ´e um efeito relativamente simples de implementar, mas sua resposta em frequˆencia ´e complexa. A curva escolhida para este efeito foi a soft curve[13][14], por comprimir suavemente o som, adicionando harmˆonicas e com relativamente baixa complexidade de implementa¸c˜ao, descrita por: f (x) = (3 + a) ∗ ( 2x L−1) ∗ π/9 π + a + | 2x L−1| (2.24)

Essa curva ´e parametrizada pelo parˆametro a. No gr´afico da Figura ?? vemos as curvas para os diferentes valores de a.

Figura 12: Curva do waveshaper para diferentes valores de a.

Na Figura ?? podemos ver que, quanto maior o a, menos linear a resposta do sistema ser´a. A introdu¸c˜ao dessa n˜ao linearidade introduz, por sua vez, diferentes harmˆonicas da fundamental do sinal de entrada. Para uma senoide de 440Hz na entrada mostramos o

(26)

espectrograma da sa´ıda com a = 0 na Figura13 e a = 100 na Figura14.

Figura 13: Resposta do waveshaper para uma entrada senoidal (440Hz) e a=0.

Figura 14: Resposta do waveshaper para uma entrada senoidal (440Hz) e a=100.

2.4.2

Filtro

No master tamb´em previmos um filtro que pode ser passa-altas (HPF), passa-baixas (LPF) ou passa-banda (BPF). As trˆes formas de filtro s˜ao implementadas com a arquite-tura biquadrada.

Um filtro de segunda ordem tem resposta em frequˆencia H(z) dada por

H(z) = b0+ b1z

−1+ b 2z−2

a0+ a1z−1+ a2z−2

(2.25)

Como a implementa¸c˜ao ´e digital, pode-se encontrar a equa¸c˜ao de diferen¸cas que des-creve esse filtro, pois esta permite uma implementa¸c˜ao mais eficiente j´a que conta somente com 4 adi¸c˜oes e 4 multiplica¸c˜oes. A op¸c˜ao de convolucionar o sinal de entrada com a res-posta h(t) do filtro exigiria a implementa¸c˜ao de uma FFT de um sinal de 256 amostras, o que implica em centenas de multiplica¸c˜oes e adi¸c˜oes e uma IFFT.

A equa¸c˜ao de diferen¸cas pode ser escrita como:

y[n] = 1 a0

(27)

O calculo dos coeficientes e a itera¸c˜ao da equa¸c˜ao de diferen¸cas foi implementada eficien-temente pela biblioteca de ´audio para ARM[15].

2.5

Coordena¸

ao de eventos de tempo real

Muitas fun¸c˜oes em um instrumento musical digital devem ser executadas em um in-tervalo de tempo especifico ou n˜ao surtir˜ao o efeito sonoro desejado. Algumas delas, como o c´alculo dos sinais de ´audio de cada instrumento, do sinal de sa´ıda total e dos efeitos, n˜ao podem atrasar ou serem interrompidas (em termos de sistema operacional, s˜ao consi-deradas Hard Real Time, peri´odicas [16]). Se forem interrompidas o efeito ´e a destrui¸c˜ao daquele bloco de ´audio por completo, pois ele se tornar´a inaud´ıvel da forma como foi concebido, reduzindo-se a um barulho. Outras fun¸c˜oes como a recep¸c˜ao de mensagens pela porta serial ou pela porta usada para comunica¸c˜ao MIDI devem ser administradas assim que poss´ıvel, mas com prioridade menor do que a dos blocos de ´audio (em termos de sistema operacional, s˜ao consideradas Soft Real Time, aperi´odicas). O la¸co principal do programa precisa executar o mais r´apido poss´ıvel, mas sem interromper nenhuma das atividades supradescritas.

Para que o sistema funcione corretamente a seguinte condi¸c˜ao de tempo deve ser cumprida como requisito essencial para o correto funcionamento do sistema:

Σmi=1Ci Pi

< 1 (2.27)

Onde Pi ´e o per´ıodo necess´ario e Ci o tempo computacional de cada tarefa. N˜ao

demonstramos analiticamente que tal requisito foi respeitado pois o funcionamento do sistema nos testes com usu´ario, mesmo em carga m´axima, mostraram que a arquitetura escolhida atende os parˆametros limites sem alterar os sons gerados.

(28)

3

TRABALHOS RELACIONADOS

Como este TCC trata de um projeto de engenharia usando t´ecnicas de sistemas em-barcados e programa¸c˜ao de baixo n´ıvel, h´a poucos trabalhos acadˆemicos dispon´ıveis, ent˜ao apresentamos as principais m´aquinas comerciais que concorrem com o trabalho desenvol-vido neste TCC.

3.1

Roland TR-8S

A Roland TR-8[17] e TR-8s modelam a interface da antiga Roland 909. Estas m´aquinas ainda usam sistemas anal´ogicos para a gera¸c˜ao de sons, mas implementam alguns efeitos digitais que a Roland 909 original n˜ao poderia ter devido `a sua constru¸c˜ao simplificada. Os instrumentos dispon´ıveis s˜ao os mesmos que escolhemos para este TCC e os controles s˜ao parecidos com o que montamos. O controle das sequencias ´e mais refi-nado, pois possibilita ao artista incluir ritmos fora do tempo exato, gravados pelo artista tocando diretamente o padr˜ao na interface da m´aquina ao inv´es de program´a-lo como neste projeto de TCC. Ambas s˜ao maquinas obtiveram sucesso comercial, por serem uma das principais alternativas para os iniciantes devido ao pre¸co. Todavia, no Brasil nenhuma das duas m´aquinas pode ser encontrada por menos de R$4000,00.

3.2

Elektron Digitakt

As maquinas da Elektron[18] s˜ao todas digitais, utilizando Processadores de Sinais Digitais (DSPs) da s´erie Blackfin[19], fabricados pela Analog Devices[20]. Permitem con-trole total do usu´ario sobre qualquer parˆametro, automa¸c˜ao ou efeito aplicado a cada instrumento. Com flexibilidade total, o usu´ario pode se expressar livremente. A quali-dade do ´audio ´e considerada de alta fidelidade, com 192KHz de amostragem e 32 bit de resolu¸c˜ao, o que ´e suficiente para que at´e mesmo ouvidos bem treinados n˜ao perceberem a quantiza¸c˜ao. A maquina n˜ao ´e atualmente comercializada no Brasil, mas na Europa pode

(29)

ser comprada por €700,00 ou aproximadamente R$6900,00 com taxas de importa¸c˜ao.

3.3

Korg Volka Drum

A Korg[21] tamb´em ´e uma empresa tradicional do mercado de instrumentos eletrˆonicos. A Volka Drum[22] objetiva produtores e DJs iniciantes, com um custo considerado baixo. Por´em os padr˜oes que podem ser gerados s˜ao bastante limitados. O controle dos instru-mentos, por exemplo, permite apenas um parˆametro por instrumento. Muitas vezes o artista prefere a liberdade presente nos programas que simulam baterias a trabalhar em um ambiente limitado como o oferecido pela Volka Drum, tornando esta m´aquina um insucesso comercial. Pode ser comprado no Brasil por R$2200,00 mas qualquer artista do meio recomendaria n˜ao compr´a-la, mesmo para um iniciante.

(30)

4

TECNOLOGIAS UTILIZADAS

O Teensy [2] ´e uma placa de prototipa¸c˜ao baseada no processador ARM Cortex M7f. A placa foi concebida para ser de baixo custo, com pre¸co em torno de USD$20,00 di-reto da PJRC [15] (fabricante). O processo de desenvolvimento ´e simplificado, uma vez que a fabricante suporta o ambiente de desenvolvimento do Arduino, j´a popular entre os hobistas. Existe tamb´em uma biblioteca de ´audio desenvolvida pela pr´opria PJRC que, apesar de n˜ao ter uma qualidade de ´audio considerada alta no meio de gera¸c˜ao de som, ´e adequada o suficiente para os prop´ositos deste TCC. O Teensy tem uma placa de ´audio opcional de 16 bits com taxa de amostragem de 44100Hz, que ´e uma qualidade satisfat´oria de ´audio. Tamb´em ´e poss´ıvel colocar expans˜oes de mem´oria serial flash, caso seja necess´ario aumentar a quantidade de dados processados ou armazenar arquivos de ´

audio para serem reproduzidos diretamente da mem´oria.

O Raspberry Pi [3] ´e uma placa de prototipa¸c˜ao cuja s´erie possui diversos modelos. No momento da escrita desta disserta¸c˜ao, qualquer modelo da s´erie ´e suficientemente potente para a implementa¸c˜ao deste projeto. Uma vantagem do Raspberry ´e a possibilidade de executar um sistema operacional, como as diversas varia¸c˜oes de Linux existentes para sistemas embarcados. Ao executar um sistema operacional, h´a a possibilidade de utilizar os pr´oprios drivers e bibliotecas dispon´ıveis, o que no caso do Linux implica em uma mir´ıade de bibliotecas j´a maduras e consolidadas[23].

4.1

Arquitetura do projeto

Se olharmos o projeto como uma caixa preta, as ´unicas intera¸c˜oes dispon´ıveis com o mundo externo s˜ao o controle do artista, a sa´ıda de ´audio para as caixas de som e a comunica¸c˜ao serial (USB) com o computador para permitir sincroniza¸c˜ao e troca de outros metadados.

J´a internamente, a interface que o artista controla precisa ser lida e codificada corre-tamente. Para tal, um processador simples e barato com alguma comunica¸c˜ao perif´erica

(31)

Figura 15: Arquitetura geral do projeto

consegue executar a tarefa. Escolhemos o Arduino para a tarefa de leitura das interfaces pela facilidade de desenvolvimento, pre¸co baixo e alta disponibilidade no mercado (f´acil de encontrar mesmo no Brasil). Contudo, o Arduino n˜ao tem poder computacional para a gera¸c˜ao de ´audio, portanto escolhemos uma segunda arquitetura, que detalharemos posteriormente, baseada no processador ARM da placa Teensy.

4.2

Detalhamento da arquitetura de software

O ponto de entrada da arquitetura s˜ao os sinais MIDI. Esses sinais s˜ao recebidos e interpretados pela interface MIDI, dispon´ıvel no Teensy. Os sinais de clock (0xF8) [24] do sinal MIDI s˜ao usados para sincronizar a drum machine, mas deixamos no projeto a possi-bilidade de sincronizarmos com um sinal de clock gerado internamente. Tal caracter´ıstica foi pensada para que a m´aquina possa ser utilizada sem um computador conectado, ne-cess´ario para gerar os sinais MIDI.

A cada novo sinal de clock MIDI recebido, um trigger ´e repassado para todas as sequˆencias que est˜ao gerando sons, assim cada uma delas pode informar se uma nota deve ser tocada ou n˜ao. A interface A controla os parˆametros de cada uma dessas sequˆencias geradoras de som e tamb´em reflete o estado dos parˆametros em uso para informar o

(32)

Figura 16: Detalhamento da arquitetura de software

usu´ario.

Em seguida, as informa¸c˜oes das sequˆencias s˜ao somadas e enviadas por I2C [25] para o Teensy. O processador do Teensy executa um software que recebe as informa¸c˜oes e as converte para o equivalente em comandos MIDI, enviando-os para o dispositivo externo (computador) atrav´es da interface MIDI da placa. Os mesmos sinais tamb´em s˜ao enviados para a unidade de s´ıntese (interna), que os combina com os parˆametros do sistema para gerar o som final (master ). O ´audio gerado (digital) ´e enviado para a unidade de efeitos para a aplica¸c˜ao de poss´ıveis filtros especiais (descritos na Se¸c˜ao 2.4), que finalmente est´a pronta para ser enviada ao DAC (para convers˜ao direta) ou por ´audio (via USB, para convers˜ao externa).

A interface B ´e lida pela unidade de controle, para alterar os parˆametros de s´ıntese. Essas altera¸c˜oes s˜ao enviadas para o display como forma de feedback visual ao usu´ario.

4.2.1

Detalhamento da unidade de s´ıntese

A arquitetura interna do software foi dividida em 3 blocos principais: instrumentos, mixer e efeitos e sa´ıda.

(33)

Figura 17: Detalhamento da unidade de s´ıntese

4.2.2

Instrumentos

Disponibilizamos na m´aquina deste TCC 8 instrumentos: um Kick (bumbo), dois Hats (pratos), sendo um para o Hat aberto, (i.e. com o pedal dos pratos pressionado) e outro para o Hat fechado(i.e. com o pedal pressionado), um Snare (caixa), uma Clap (palmas) e 3 FM (sintetizador que usa n˜ao o modelo subtrativo mas o modelo de modula¸c˜ao de frequˆencia, discutidos com mais detalhes nas pr´oximas subse¸c˜oes). Tal escolha foi baseada tanto nos instrumentos presentes nas m´aquinas comerciais quanto na experiˆencia pessoal do aluno.

Nas subse¸c˜oes seguintes descrevemos como cada um dos instrumentos se relaciona com os parˆametros control´aveis pela interface. Para todos os instrumentos, disponibilizamos um parˆametro sample ou s´ıntese, que indica se a m´aquina deve usar o modelo de gera¸c˜ao de som (s´ıntese) ou reproduzir um arquivo de ´audio pr´e-gravado (sample).

Kick

• O tempo de decaimento exponencial do envelope.

• O tom (frequˆencia) da senoide sendo modulada pelo envelope.

• Cutoff LPF: um filtro LPF ´e aplicado antes da sa´ıda do bloco, o que permite controlar sua frequˆencia de corte.

• Ataque: tempo que o envelope demora para ir de 0 a 1 (frequˆencia m´ınima a frequˆencia m´axima).

(34)

• SNR: o Kick ´e uma mistura de um seno modulado e ruido branco, e este parˆametro controla a propor¸c˜ao entre ambos na composi¸c˜ao da onda gerada.

• Concavidade do envelope: o envelope exponencial ´e dado por trˆes pontos: (0, 1), (T/2, midPoint) e (T, 0.001). Este parˆametro ´e o midPoint.

Hats

• Tom: 6 ondas quadradas s˜ao somadas para gerar o conte´udo harmˆonico. As pro-por¸c˜oes de frequˆencias s˜ao fixas mas a frequˆencia da mais grave ´e determinada por esse parˆametro.

• Dura¸c˜ao: o tempo de decaimento exponencial do envelope.

• Hpf: Um filtro HPF ´e aplicado antes da sa´ıda deste instrumento. Este parˆametro controla a frequˆencia de corte do filtro.

• Bpf: Um filtro BPF, onde sua frequˆencia de corte ´e controlada pelo usu´ario ´e apli-cado antes do HPF, tambem com frequˆencia de corte controlada pelo usu´ario.

• SNR: Propor¸c˜ao de sinal ru´ıdo (idem ao Kick).

• Ataque: Tempo que o envelope demora para ir de 0 a 1 (idem ao Kick). Snare

• Tom: o snare ´e uma senoide modulada, este parˆametro corresponde a a frequˆencia da senoide.

• Dura¸c˜ao: tempo de decaimento exponencial do envelope. • Ataque (idem ao Kick).

Claps

• Tom: a Clap ´e formada por 3 Snares seguidos, com um atraso em cada um. Este parˆametro indica a fequencia base do Snare.

• Dura¸c˜ao • Ataque

(35)

• Intervalo: o intervalo entre os 3 snares FM

Os parˆametros do FM ser˜ao discutidos em uma se¸c˜ao separada no apˆendice, pois a complexidade da gera¸c˜ao da onda FM n˜ao ser´a coberta deste TCC.

4.2.3

Mixer e efeitos

O mixer simplesmente soma os sinais vindos dos 8 instrumentos digitalmente, sem limitar o sinal, podendo causar distor¸c˜ao do sinal caso a soma seja maior do que 1.

Os efeitos disponibilizados s˜ao somente uma distor¸c˜ao do tipo waveshaper e um filtro HPF.

4.2.4

Sa´ıda

O m´odulo de sa´ıda separa o sinal proveniente do m´odulo de efeitos entre as portas de sa´ıda digitais: ´audio anal´ogico e ´audio por USB. N˜ao h´a transforma¸c˜ao alguma no sinal prevista para este m´odulo, mas ele ´e considerado importante pois realiza a comunica¸c˜ao apropriada usando as bibliotecas de suporte da placa.

4.2.5

odulos de Software

4.2.5.1 HAL

A Harware Abstraction Layer (HAL) foi implementada atrav´es de um m´odulo que encapsula todas as fun¸c˜oes de acesso ao harware f´ısico. Nele s˜ao configuradas cada uma das portas digitais ou anal´ogicas do microcontrolador, s˜ao definidos os m´etodos e parˆametros de comunica¸c˜ao serial, os m´etodos de comunica¸c˜ao MIDI e as macros para se referir a cada uma das portas no restante do c´odigo. Esta modulariza¸c˜ao foi pensada para que, se o hardware for substitu´ıdo no futuro ou outras formas de comunica¸c˜ao forem adicionadas, basta substituir este m´odulo por um compat´ıvel com o novo hardware.

4.2.5.2 Encoder

O encoder ´e um dos dispositivos de hardware usado como interface com o usu´ario. Este m´odulo foi implementado atrav´es de uma classe que abstrai a intera¸c˜ao com os

(36)

encoders f´ısicos em funcionalidades que ser˜ao utilizadas no restante do projeto. Cada encoder [26] f´ısico possui 3 pinos: A, B e C. os pinos A e B disparam pulsos quadrados quando o encoder ´e girado pelo usu´ario, e a diferen¸ca de fase dos pulsos indica qual a dire¸c˜ao de rota¸c˜ao do encoder. A classe desenvolvida abstrai esta caracter´ıstica atrav´es de m´etodos que s˜ao chamados quando o encoder gira no sentido hor´ario ou anti-hor´ario. O pino C ´e um interruptor bin´ario de contato, ativo alto quando o encoder est´a pressionado.

Para muitas aplica¸c˜oes, ´e interessante manter um registro na forma de um inteiro com sinal, que conta quantos passos de rota¸c˜ao o encoder realizou. Essa informa¸c˜ao tamb´em ´e guardada na classe Encoder desenvolvida, mas na forma de uma vari´avel de objeto (na instˆancia). Para outras aplica¸c˜oes espec´ıficas, ´e desej´avel que o encoder controle um parˆametro externo, implementado por uma classe pr´opria. A classe Encoder foi preparada para controlar o parˆametro externo atrav´es da ValueInterface, implementada pela classe externa (do parˆametro). A classe do encoder recebe um ponteiro para um parˆametro (objeto) e invoca os m´etodos decrement e increment dessa interface quando o encoder decrementa ou incrementa seu valor, respectivamente. H´a um m´etodo para configurar o ponteiro para o objeto do parˆametro controlado, que pode ser nulo se a funcionalidade n˜ao for necess´aria para o encoder representado pela instˆancia.

4.2.5.3 Unidade de controle

A unidade de controle est´a descrita no arquivo beta.ino, o arquivo principal do projeto. Nesse arquivo, todos os outros m´odulos s˜ao importados e configurados, criando instancias de todas as classes necess´arias para o projeto e passando-as como referencia para criar as interconex˜oes. As callbacks de fun¸c˜oes dos outros m´odulos tamb´em s˜ao configuradas neste m´odulo.

Um atraso ´e aplicado no fim da fase de configura¸c˜ao para garantir que todos os blocos ass´ıncronos foram iniciados. J´a o la¸co principal executa sempre na velocidade m´axima poss´ıvel. ´E importante que esse la¸co seja eficiente computacionalmente e o mais curto poss´ıvel, j´a que a atualiza¸c˜ao das interfaces e a reflex˜ao de mudan¸cas tanto no display como na infraestrutura de ´audio s˜ao afetadas pela latˆencia de execu¸c˜ao deste la¸co, afetando assim a usabilidade do produto.

A fase de setup ent˜ao ´e composta por: iniciar a comunica¸c˜ao serial, iniciar a infraes-trutura de ´audio e configurar seus callbacks, instanciar os instrumentos, normalizar seus respectivos volumes, configurar o roteamento de ´audio, configurar a HAL e os encoders, iniciar o display (assincronamente), iniciar a comunica¸c˜ao I2C com a interface A do

(37)

AT-Figura 18: Unidade de controle

Mega328p e finalmente configurar os callbacks para as mensagens MIDI.

O la¸co principal, por sua vez, ´e composto por: transferir arquivos pendentes pela interface serial com o computador, propagar as mensagens MIDI recebidas da interface A na ultima itera¸c˜ao do la¸co para a serial e para os respectivos instrumentos, ler as novas mensagens MIDI provenientes da interface A, ler o estado de todos os encoders e atualizar os menus do display.

4.2.5.4 Infraestrutura de ´Audio

A infraestrutura de ´audio encapsula a comunica¸c˜ao com o DAC, a administra¸c˜ao da mem´oria de ´audio, as conex˜oes de ´audio internas, os efeitos comuns a todos os instru-mentos e administra a comunica¸c˜ao com o cart˜ao SD para armazenamento de arquivos de ´audio em formato RAW.

4.2.5.5 Instrument Interface

Para que possamos tratar todos os instrumentos em um ´unico la¸co na unidade de con-trole, todos devem possuir uma interface comum, que chamamos deInstrument Interface. Essa interface conta com um m´etodo para trocar mensagens MIDI com o instrumento

(38)

(noteOn), outro para configurar os parˆametros internos do instrumento (mantidos em uma lista dentro do objeto) e dois m´etodos, getNextValue e getCurrentValue, que re-tornam o pr´oximo e o atual parˆametro da lista interna do instrumento, respectivamente. A interface tamb´em exp˜oe um parˆametro chamado de Amplificador, que representa a sa´ıda de ´audio do instrumento, permitindo que ele possa ser roteado para um somador de sinais.

4.2.5.6 Value Interface

A Value Interface ´e a representa¸c˜ao de um parˆametro de ´audio. Os parˆametros s˜ao n´umeros reais (ponto flutuante), com um m´ınimo e um m´aximo. Como os parˆametros s˜ao controlados por encoders discretos, a varia¸c˜ao entre o m´ınimo e o m´aximo do parˆametro tamb´em deve ser discreta, portanto na sua inicializa¸c˜ao determinamos quantos passos levam o valor do seu m´ınimo para o seu m´aximo. Muitos parˆametros de ´audio, como frequˆencia, volume e tempos de decaimento dos envelopes, devem ser exponenciais, assim a interface permite que o parˆametro seja controlado exponencialmente. Finalmente, s˜ao expostos dois m´etodos al´em do construtor, o increment e o decrement, que respectiva-mente incrementam ou decrementam o valor exponencialrespectiva-mente ou linearrespectiva-mente. Tamb´em ´e necess´ario que a interface guarde uma string com o nome do parˆametro para que ele seja mostrado no display.

4.2.5.7 Display

O display talvez seja um dos m´odulos mais complexos do projeto, uma vez que ele controla um display [27] f´ısico de 128 por 64 pixels, o que representa uma quantidade de informa¸c˜ao gr´afica consider´avel para um microcontrolador. Tanto sua escrita como o armazenamento dessas informa¸c˜oes s˜ao problemas que foram resolvidos na implementa¸c˜ao dessa classe. Na primeira vers˜ao, o microcontrolador escrevia a tela inteira sempre que houvesse alguma mudan¸ca no conte´udo (enviado atrav´es da interface serial I2C), por´em isso levava em torno de 14ms, o que introduzia uma latˆencia inaceit´avel na leitura da interface, fazendo ela se tornar irresponsiva a altera¸c˜oes pequenas nos encoders. Assim a implementa¸c˜ao final que mostramos neste trabalho tem funcionamento ass´ıncrono para n˜ao bloquear a CPU quando houver escrita no display.

Para que a implementa¸c˜ao ass´ıncrona fosse poss´ıvel, a comunica¸c˜ao com display por I2C foi alterada para ser baseada em DMA, onde os dados s˜ao transmitidos por I2C diretamente da mem´oria, sem travar a CPU, e oposi¸c˜ao `a transmiss˜ao direta. Na

(39)
(40)

munica¸c˜ao DMA, o processador escreve os dados a serem transmitidos em uma por¸c˜ao especifica da mem´oria e dispara o inicio da transmiss˜ao. Um m´odulo separado lˆe cada peda¸co da informa¸c˜ao armazenada pela CPU na mem´oria e o transmite pelo canal I2C especificado. Durante a transmiss˜ao dos dados pelo m´odulo DMA, a CPU est´a livre para executar qualquer outra a¸c˜ao que seja necess´aria, inclusive reescrever no display. Quando a transmiss˜ao finaliza, o m´odulo de DMA emite uma interrup¸c˜ao, que ´e utilizada para trocar do estrado ”Inicia transmiss˜ao”para ”Transmiss˜ao terminada”no diagrama acima.

A escrita no display se inicia com a chamada do m´etodo putScreen, que aceita duas strings ou uma string e um float como parˆametros. Esses m´etodos colocam as strings em um buffer e invoca o m´etodo triggerTransmission. Esse m´etodo verifica se h´a algo no buffer a ser transmitido e, caso positivo, invoca o m´etodo transmitScreen, que ´e responsavel por calcular cada pixel da tela usando como base uma matriz constante contendo a representa¸c˜ao em pixeis de todas as letras mai´usculas, n´umeros e ponto. Esta matriz foi criada e guardada na mem´oria de programa, desta maneira o m´etodo calcula a partir da string o espa¸co que cada caractere deve ocupar na tela, preenchendo os espa¸cos em branco at´e o fim da linha e intercalando cada linha escrita com duas linhas em branco. Finalmente o m´etodo inicia a tranmiss˜ao com os pixeis calculados.

No m´etodo Init foi definido uma fun¸c˜ao de callback para a interrup¸c˜ao de comu-nica¸c˜ao terminada apontando para a pr´opria fun¸c˜ao triggerTransmission. Desta ma-neira, se algo foi colocado no buffer enquanto o display estava transmitindo algo, esse dado ser´a transmitido imediatamente. Foram implementadas tamb´em regras para os ca-sos em que a comunica¸c˜ao falha ou o barramento serial trava (as regras envolvem abortar a tranmiss˜ao, reiniciar os controladores envolvidos e retomar o ciclo do in´ıcio).

4.2.5.8 Menu

O menu ´e uma representado por uma classe que cont´em uma lista de telas, cada uma com sua funcionalidade. A tela ´e uma classe em si que tem uma fun¸c˜ao de callback que atende o evento de clique, uma fun¸c˜ao que renderiza a tela no display e strings e parˆametros adicionais.

As telas foram pensadas para serem intuitivas para o usu´ario. Disponibilizamos as seguintes telas no projeto do TCC: Distor¸c˜ao, que controla o efeito de distor¸c˜ao aplicado no sinal de sa´ıda; Filtro que controla a frequˆencia de corte, ressonˆancia e tipo (LFP, HPF ou BPF) de um filtro aplicado tamb´em ao sinal de sa´ıda; clock, que escolhe se o usu´ario quer usar o clock proveniente da entrada serial MIDI ou gerar um clock interno (neste caso

(41)

´e poss´ıvel controlar a sua frequˆencia); e Sess˜ao, que salva ou recupera todos os parˆametros da m´aquina usando a EEPROM do microcontrolador como armazenamento permanente.

4.2.5.9 Serial Transfer

Al´em da possibilidade de usar os modelos de s´ıntese, o usu´ario pode, tamb´em, re-produzir um arquivo de ´audio representando cada instrumento. Esses arquivos devem ficar guardados na mem´oria flash serial interna, que n˜ao ´e acess´ıvel para o usu´ario. A solu¸c˜ao proposta e implementada foi transferir arquivos pela comunica¸c˜ao serial com o computador para a mem´oria interna. Uma aplica¸c˜ao de CLI (i.e. aplica¸c˜ao que n˜ao tem interface gr´afica, apenas interface textual para desenvolvedor) simples foi desenvolvida para ler um arquivo, converte-lo para um fluxo de bytes em um formato RAW e iniciar a comunica¸c˜ao com a placa. J´a na placa, a cada itera¸c˜ao do la¸co verifica-se se a CLI est´a tentando iniciar uma comunica¸c˜ao e, caso seja detectada, o m´odulo SerialTransfer ´e acionado para administrar a comunica¸c˜ao e salvar o arquivo recebido na mem´oria serial. Este m´odulo tamb´em retorna o resultado para o usu´ario por meio do display. No in´ıcio da transmiss˜ao a aplica¸c˜ao envia o tamanho do nome do arquivo, seguido do o nome do arquivo, o tamanho dos dados que ser˜ao transmitidos e finalmente os dados em si. Para cada bloco transmitido pela CLI, o m´odulo valida o pacote e devolve um sinal de reconhe-cimento da transferˆencia (ACK simples). Quando forem recebidos tantos pacotes como a aplica¸c˜ao especificou no preˆambulo da transmiss˜ao, a comunica¸c˜ao ´e fechada e o controle ´e devolvido para o la¸co principal do firmware da m´aquina.

4.2.6

EEPROM

Quando o sistema perde a energia todos os parˆametros s˜ao perdidos e ele volta a seu estado inicial. Isso pode frustar os usu´arios, ent˜ao implementamos um m´odulo de software para armazenar todos os parˆametros na EEPROM local e outro para recuperar todos os parˆametros da EEPROM. Todo o estado pode ser representado em apenas 176 bytes (42 floats dos instrumentos e um byte por instrumento para indiciar quantos parˆametros devem ser recuperados).

4.3

Detalhamento da arquitetura de hardware

No diagrama acima podemos ver 6 blocos: A interface A, interface B, Teensy 3.6, o DAC e o computador.

(42)

Figura 20: Diagrama da arquitetura do hardware

4.3.1

Interface A

A interface A ´e respons´avel por controlar e refletir a sequencia em que cada instru-mento ´e tocado, permitindo o usu´ario programar os ritmos e o volume de cada nota, para cada um dos instrumentos. Os dados entrados s˜ao lidos pelo ATMega. Esta interface foi projetada para ser alimentada com tens˜ao de 5v, por ser compat´ıvel com a interface do ATMega sem nenhum tipo de transforma¸c˜ao.

4.3.2

Interface B

A interface B ´e a respons´avel pela leitura e feedback dos parˆametros de s´ıntese de ´

audio, como os parˆametros analisados na sec¸c˜ao anterior, os coeficientes da distor¸c˜ao e parˆametros de intera¸c˜ao com o computador. Esta interface foi projetada para ser alimen-tada com tens˜ao de 3.3V por ser compat´ıvel com a interface do Teensy, que a controla.

4.3.3

ATMega328p

O ATMega [28] ´e o microcontrolador respons´avel por guardar todos os dados sobre as sequˆencias em que cada instrumento ´e tocado, ler a interface, atualizar as sequˆencias e refletir as mudan¸cas destas na interface, por meio de LEDs pr´oximos os controles.

(43)

4.3.4

Teensy 3.6

O Teensy ´e a unidade central de processamento do projeto. Nele s˜ao executados os c´alculos necess´arios para a s´ıntese do ´audio, a leitura dos arquivos de ´audio quando necess´arios, a comunica¸c˜ao com o ATMega para obter os dados das sequˆencias em que os instrumentos s˜ao tocados e a comunica¸c˜ao de sa´ıda, tanto com o computador como com o DAC.

4.3.5

Computador

Apesar de n˜ao ser um componente interno ao sistema, o computador tem um papel essencial no projeto, uma vez que ele fornece o sinal de clock atrav´es da interface MIDI, para a sincronia da m´aquina. O computador tamb´em recebe informa¸c˜oes de quais notas devem ser tocadas em um instante, para que, caso o usu´ario deseje, a s´ıntese seja feita pelo computador e n˜ao usando os m´etodos embutidos na m´aquina.

Finalmente o computador recebe os sinais de ´audio j´a mixados e com os efeitos apli-cados, enxergando assim a m´aquina como uma interface de ´audio. Atrav´es da CLI de-senvolvida, o computador ainda pode ser usado para transmitir novos arquivos de ´audio (samples) para a mem´oria interna da m´aquina.

4.3.6

SGTL5000

Este componente ´e um DAC [29] de 16 bits/44100Hz. Sua comunica¸c˜ao com o pro-cessador se d´a por meio de I2S.

4.4

Interfaces

A figura acima mostra um diagrama das interfaces, dividido em 5 partes. As partes A, B, D e F fazem parte da interface A, sendo controladas pelo ATMega, enquanto as partes C e E fazem parte da interface B, sendo controladas pelo Teensy.

4.4.1

Projeto

As dimens˜oes foram determinadas por experimenta¸c˜ao, um primeiro prot´otipo flex´ıvel foi feito colocando todos os bot˜oes de controle do mesmo lado e todos os steps em uma ´

(44)

Figura 21: Interfaces

fosse muito maior que a altura, essa assimetria fazia o pre¸co de fabrica¸c˜ao aumentar consideravelmente. Assim optou-se por colocar os steps na mesma linha e dividir os controles globais em duas colunas, assim a interface se aproxima mais de um quadrado, barateando o custo sem comprometer a experiˆencia do usu´ario.

Os bot˜oes de cada instrumento, seus respectivos volumes e seus encoders de controle dos parˆametros ficam mais pr´oximos uns dos outros do que componentes semelhantes na mesma linha, fazendo com que o usu´ario perceba cada coluna como um grupo, o que representa melhor o modelo mental desejado para o instrumento.

4.4.2

Steps

Os steps s˜ao a parte principal da interface, pois com eles o usu´ario pode programar o ritmo a ser tocado. Existem 16 bot˜oes que representam uma barra, e usando o bot˜ao shift e um dos bot˜oes da interface F pode-se ir para outra p´agina representando um novo conjunto de steps. Prevemos para este projeto 4 p´aginas, representando at´e 4 barras de steps.

Com o bot˜ao de shift pode-se selecionar o tamanho da sequˆencia, para que ela tenha um n´umero de steps arbitr´ario. Cada instrumento tem a sua sequˆencia separada, dessa maneira se um instrumento tem a sequˆencia de um tamanho e outro tem uma sequˆencia cujo tamanho n˜ao ´e m´ultiplo ou divisor da sequˆencia do primeiro, dizemos que isso ´e uma sequˆencia polirr´ıtmica. Os tamanhos independentes possibilitam t´ecnicas musicais mais complexas que assumir tamanhos iguais pois desacoplam a sequencia de notas seguida

(45)

por cada instrumento.

4.4.3

Instrumentos

Os 8 bot˜oes ao topo da caixa representam cada um dos instrumentos, e somente um instrumento pode estar selecionado por vez. Quando um instrumento ´e selecionado sua sequˆencia ´e mostrada nos steps. H´a ainda um LED por bot˜ao para indicar qual o instrumento est´a atualmente selecionado.

4.4.4

Encoders

Para cada instrumento existe um encoder, que controla um dos parˆametros de s´ıntese especificados anteriormente. Quando o encoder ´e clicado o pr´oximo parˆametro ´e selecio-nado para edi¸c˜ao. Os parˆametros ser˜ao colocados em uma lista e quando chega-se ao fim da lista, volta para o ´ındice 0, tornando a navega¸c˜ao circular. Para melhorar a experiˆencia do usu´ario, o nome do parˆametro atualmente sendo modificado pelo encoder ´e mostrado no display com o valor atual.

4.4.5

Potenciˆ

ometros

Cada instrumento tem um potenciˆometro, que este controla o volume de cada nota tocada pelo instrumento. Quando o som da pr´opria m´aquina ´e usada, tanto por s´ıntese quanto por samples de ´audio, o valor do potenciˆometro ´e normalizado em um valor de 0 a 1 e usado para multiplicar o volume do instrumento correspondente. Vale notar que n˜ao basta dividir o valor por 1024 (equivalente a 5v no ATMega), pois n˜ao refletir´ıamos a percep¸c˜ao da mudan¸ca que os seres humanos tˆem, mas sim dividir por 1024 e elevar o resultado ao quadrado para ter a representa¸c˜ao sonora correta. Quando o ´audio interno n˜ao ´e utilizado, isto ´e, envia-se as notas das sequˆencias por MIDI para o computador sintetizar, ent˜ao cada nota codifica o volume por meio do parˆametro MIDI velocity que vai de 0 a 127.

4.4.6

Interface de controle

Essa se¸c˜ao mistura elementos da interface A e da interface B. Vamos analisar os elementos de cima para baixo.

(46)

HPF, aplicado na sec¸c˜ao de efeitos da arquitetura de software. Isso tem grande utilidade para pessoas que est˜ao se apresentando com a m´aquina ao vivo pois pode-se controlar o efeito final em tempo real.

Depois temos o display. Este display pode ser de dimens˜oes reduzidas e n˜ao h´a necessidade de ser colorido. Sua fun¸c˜ao ´e mostrar qual parˆametro est´a sendo controlado naquele momento pelo usu´ario e seu valor correspondente.

Em seguida temos um encoder (similar aos encoders dos instrumentos). Este com-ponente ´e respons´avel por controlar os parˆametros globais de funcionamento do sistema: clock interno, salvar o estado atual e recuperar o estado atual, al´em dos parˆametros dos efeitos.

Os componentes restantes desta parte para baixo s˜ao os da Interface A. O primeiro bot˜ao ´e o shift, que pode ser usado para alterar o tamanho de uma sequˆencia pressionando-o apressionando-o mesmpressionando-o temppressionando-o que ´ultimo bot˜ao correspondente ao ´ultimo step que o usu´ario deseja para a sequˆencia. Se combinado com o bot˜ao copy, todas as sequˆencias s˜ao apagadas.

O segundo bot˜ao ´e o copy, que ´e utilizado para copiar uma sequˆencia de um padr˜ao para outro.

O terceiro ´e o repeat que, quando apertado, o usu´ario pode pressionar o seletor de um instrumento e o instrumento ir´a tocar em todos os steps. Quando o bot˜ao do instrumento ´e solto a repeti¸c˜ao para, mas se o repeat for solto antes do instrumento, este fica repetindo at´e que o repeat seja pressionado novamente. O funcionamento da interface para o repeat parece confuso no in´ıcio, mas ´e conhcido pelos operadores deste tipo de m´aquina.

O ´ultimo bot˜ao ´e o start, que tem a fun¸c˜ao de alternar entre o padr˜ao atual e o padr˜ao sendo visualizado.

4.4.7

Patterns (padr˜

oes) e p´

aginas

Esta sec¸c˜ao tem duas fun¸c˜oes. A primeira ´e alternar entre Patterns. Existem qua-tro deles, e a m´aquina inicia executando o Pattern 0. Se outro pattern for apertado, o Pattern relativo ´e mostrado nos steps e disponibilizado para a edi¸c˜ao. Se esse Pattern ainda n˜ao est´a sendo reproduzido pela m´aquina, ´e necess´ario pressionar start para que isso aconte¸ca. Dessa maneira ´e poss´ıvel editar um Pattern enquanto o p´ublico ouve outro que j´a foi configurado.

(47)

A segunda fun¸c˜ao ´e chavear entre p´aginas. As sequˆencias tˆem por defini¸c˜ao 16 steps, o que cabe em uma p´agina, mas se o usu´ario preferir, com shift e um pattern ´e poss´ıvel navegar para outras p´aginas (at´e 4). Para selecionar um novo tamanho para a sequˆencia, basta pressionar shift, quando a sequˆencia ficar´a com o tamanho p´agina*4 + step.

4.5

Constru¸

ao do hardware

O esquem´atico da interface A ´e implementado utilizando dois multiplexadores/demultiplexadores de 16 canais para ler os steps e escrever nos LEDs, um multiplexador anal´ogico de 8 canais

para ler os potenciˆometros, dois multiplexadores de 8 canais para ler os bot˜oes dos ins-trumentos e escrever nos LEDs dos insins-trumentos e mais dois multiplexadores de 8 canais para ler os bot˜oes dos patterns e de controle global, e escrever nos LEDs dos patterns.

Como temos muitos multiplexadores podemos reutilizar as linhas de endere¸camento conjuntamente, iterando endere¸cos de 0 a 15 e chaveando todos os multiplexadores ao mesmo tempo. Isso reduz a complexidade total, o numero de portas necess´ario e a latˆencia de leitura e escrita da interface. Os multiplexadores s˜ao controlados diretamente pelo ATMega328p.

Na interface B temos uma arquitetura similar utilizando trˆes multiplexadores de 8 canais para ler os encoders (pinos A, B e C), uma porta simples para ler o potenciˆometro principal e trˆes portas digitais para ler o encoder principal. Dois pinos s˜ao usados para a comunica¸c˜ao com o display e outros dois pinos s˜ao usados para a comunica¸c˜ao I2C do Teensy com o ATMega328p.

Al´em disso todos os LEDs e bot˜oes tem associados a eles resistores limitadores de corrente, calculados pelos parˆametros dos datasheets dos componentes. O ATMega precisa tamb´em de um circuito para a gera¸c˜ao limpa de clock de 16MHz.

Como o Teensy opera em 3.3V e o ATMega opera em 5V precisamos de um circuito de redu¸c˜ao do n´ıvel l´ogico entre as duas partes.

Finalmente temos os componentes que interfaceiam a placa com o exterior a saber: a porta USB tipo B e a sa´ıda de ´audio P2.

(48)

Figura 22: Esquem´atico dos Steps

(49)

Figura 24: Esquem´atico da interface A

(50)
(51)

Figura 27: Esquem´atico final

(52)

4.6

Constru¸

ao da caixa

A caixa foi modelada no Fusion360[30], software CAD da Autodesk[31]. Sua cons-tru¸c˜ao foi pensada de modo a n˜ao ter solda e poder ser constru´ıda apenas com dobras e cortes de uma chapa de ferro. O material escolhido foi ferro 1.5mm por sua resistˆencia, que ´e importante em instrumentos que s˜ao muito transportados e geralmente s˜ao operados em ambientes imprevis´ıveis.

Todos os componentes foram modelados no software a fim de simular a montagem (part assembly). Uma vez que a simula¸c˜ao validou que a montagem poderia ser realizada, os PCBs foram fabricados, a caixa foi fabricada no Brasil e a montagem final foi feita em casa sem grandes complica¸c˜oes.

(53)
(54)

5

ESPECIFICAC

¸ ˜

AO DOS REQUISITOS DO

SISTEMA

5.1

ao funcionais

• Criar sequˆencias em 8 instrumentos diferentes. • Controle do volume de cada instrumento. • Sequˆencias de at´e 64 steps.

• Sincronia externa com o computador.

• Sintetizar sons a partir de parˆametros controlados pelo artista. • Tocar samples de ´audio carregadas pelo artista.

• Aplicar efeitos.

O controle de volume deve ser dado ao artista pois cada artista atribui uma im-portˆancia diferente para cada instrumento da percuss˜ao, controlada pelo volume. J´a os tamanhos das sequˆencias, entende-se que quanto maior, mais liberdade o artista tem para criar, por´em raramente as sequencias nesse tipo de instrumentos, passam de 64 steps.

A sincronia externa ´e obrigat´oria para qualquer instrumento de musica eletrˆonica, uma vez que quase todos os instrumentos tem pouca flutua¸c˜ao de velocidade, diferentemente de instrumentos tradicionais, em que os artistas tˆem uma flutua¸c˜ao de velocidade natural humana.

O sucesso de um instrumento de musica eletrˆonica ´e associado ao seu pre¸co compa-rado com a sua flexibilidade, dessa forma queremos dar ao artista toda o controle sobre os modelos de s´ıntese, j´a que com essas altera¸c˜oes ele pode se expressar muito mais livre-mente. O mesmo vale para o requisito de carregar samples externas. Quando a altera¸c˜ao de parˆametros do modelo n˜ao for suficiente para o artista, ele pode usar um som seu, feito

Referências

Documentos relacionados

A fim de informar ao gestor sobre as perdas ocorridas no processo produtivo, podendo este controlá-las e reduzi-las, este trabalho tem como objetivo principal

3259 21 Animação e dinamização de actividades lúdico-expressivas - expressão musical 50 3260 22 Animação e dinamização de actividades lúdico-expressivas -

Manipular o medicamento veterinário com cuidado para evitar inalar o pó assim como o contacto com pele e olhos durante a sua incorporação na água tomando

As etapas do trabalho compreendem: a seleção e coleta dos materiais, ensaios de caracterização (análise granulométrica, determinação dos limites de liquidez

De acordo com a metodologia empregada e diante dos resultados obtidos, foi possível concluir que as cepas de Candida envolvidas com infecções da cavidade bucal

Assim, foi proposta a execução da obra, com fundação em estacas- -raiz e estacas pré-moldadas, com diâmetro de 60 cm, com comprimen- to médio de 11 metros, trabalhando com

Notas Explicativas da Administração às Demonstrações Financeiras em 31 de dezembro de 2017 e 2016 22. Também é de sua responsabilidade estipular prazo para solucionar operações

a) mostram vantagens consistentes em tarefas envolvendo habilidades verbais e não-verbais; b) mostram habilidades metalinguísticas avançadas, especialmente