A program to read songs transcribed from sheet to code, following a pattern, and run them on an Arduino Uno with a buzzer. Project named after the Greek Muse of Music, Euterpe. < Text in portuguese >.
Um programa para ler músicas transcritas da partitura para o código, seguindo um padrão, e executá-las em um Arduino Uno com buzzer. Projeto nomeado em referência à Musa Grega da Música, Euterpe.
- Linha 1: está comentado o nome da música, para identificação:
// NOME DA MÚSICA: Davy Jones' Locket - Linha 2: precisa ser inserido o BPM da música, se conhecido, alterando o valor numérico:
float bpm = 120; - Linha 6: deve ser inserido o pino correto do Arduino em que o buzzer está ligado
- Linha 199: se necessário, pode-se transpor a partitura inteira em oitavas alterando o valor numérico:
byte transposition = 1; - Linha 202: o ritmo de reprodução da música pode ser alterado, trocando o valor numérico:
float rhythm = 1;
A transposição da partitura começa na linha 207 e vai até a linha 237 do código de exemplo (v6).
A partitura precisa ser transcrita dentro da seguinte estrutura, para funcionar corretamente:
int melody[][2]{
TRANSCRIÇÃO
};
A forma de organização não interfere no funcionamento, desde que:
- cada nota e sua respectiva duração estejam entre chaves e separadas por vírgula:
{nota,duração} - cada nota esteja separada por vírgulas das demais:
{nota1,duração}, {nota2,duração}, ... - a última nota não seja sucedida por uma vírgula:
{última_nota,duração} - não haja alterações na estrutura acima.
int melody[][2]{
{nota1,duração}, {nota2,duração},
{nota3,duração},
{nota4,duração},
...
{última_nota,duração}
};
Todas as TAGS DE NOTAS precisam vir acompanhadas por parêntesis.
Ex.:
C()ouGsus()
A exceção é a pausa, que deve ser usada sem os parêntesis.
Ex.:
pausa--- corretopausa()--- INCORRETO
| TAG | Nota | Frequência |
|---|---|---|
| pausa | Pausa / Silêncio | 0 Hz |
| --- | ||
| C | Dó | 264 Hz |
| Csus | Dó sustenido | 280 Hz |
| Db | Ré bemol | idem |
| --- | ||
| D | Ré | 297 Hz |
| Dsus | Ré sustenido | 313 Hz |
| Eb | Mi bemol | idem |
| --- | ||
| E | Mi | 330 Hz |
| --- | ||
| F | Fá | 352 Hz |
| Fsus | Fá sustenido | 374 Hz |
| Gb | Sol bemol | idem |
| --- | ||
| G | Sol | 396 Hz |
| Gsus | Sol sustenido | 418 Hz |
| Ab | Lá bemol | idem |
| --- | ||
| A | Lá | 440 Hz |
| Asus | Lá sustenido | 467 Hz |
| Bb | Si bemol | idem |
| --- | ||
| B | Si | 495 Hz |
| Nota | Código |
|---|---|
| Dó | C() |
| Fá sustenido | Fsus() |
| Si bemol | Bb() |
O código suporta 4 oitavas acima e 3 oitavas abaixo das notas naturais.
Para utilizar as oitavas, basta colocar sua representação entre os parêntesis das notas:
Ex.:
nota(oitava)
| Representação | Oitava |
|---|---|
| natural | |
| n | natural |
| I | 1 oitava acima |
| II | 2 oitavas acima |
| III | 3 oitavas acima |
| IV | 4 oitavas acima |
| i | 1 oitava abaixo |
| ii | 2 oitavas abaixo |
| iii | 3 oitavas abaixo |
| Nota | Código |
|---|---|
| Dó natural | C() |
| Sol natural | G(n) |
| Dó, 1 oitava acima | C(I) |
| Fá sustenido, 1 oitava acima | Fsus(I) |
| Si bemol, 2 oitavas acima | Bb(II) |
| Lá bemol, 1 oitava abaixo | Ab(i) |
É necessário inserir o ritmo/passo da música em BPM (batidas por minuto) no início do código para que o tempo das figuras seja calculado.
Por padrão o ritmo será 120 BPM.
| TAG | Nota | Duração |
|---|---|---|
| sbre | Semibreve | 1 |
| mini | Mínima | 1/2 |
| smini | Semínima | 1/4 |
| col | Colcheia | 1/8 |
| scol | Semicolcheia | 1/16 |
| fusa | Fusa | 1/32 |
| sfusa | Semifusa | 1/64 |
Assim como as notas, as TAGS DE FIGURA devem ser acompanhadas por parêntesis.
Ex.: sbre() ou mini()
Para alterar a duração das notas, basta colocar sua representação entre os parêntesis das figuras.
Ex.:
figura(duração)
| Representação | Duração |
|---|---|
| natural | |
| n | natural |
| p | ponto de aumento |
| s | staccato (ponto de diminuição) |
| Nota | Duração | Código |
|---|---|---|
| Semibreve | natural | sbre() |
| Mínima | natural | mini(n) |
| Colcheia | aumentada | col(p) |
| Mínima | diminuida | mini(s) |