SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana">O básico Antes de partirmos para a parte prática, vou passar um mínimo de informações sobre a teoria envolvida no programa. Note que, apesar de tocar guitarra, não sou profundo conhecedor de teoria musical e nunca tive muita paciência para aprendê-la. Esse foi na realidade um dos motivos que me levou a escrever este programa: entender um pouco mais sobre a teoria de notas e escalas. Para quem não quiser entender a teoria por trás do programa, pule esta etapa e vá direto para a parte prática, caso contrário, vamos lá: Acredito que a maioria das pessoas conheça as sete notas musicais: Dó (C), Ré (D), Mi (E), Fá (F), Sol (G), Lá (A) e Si (B) – as letras entre parênteses são o que chamamos de representação cifrada, sendo assim, o C representa um Dó, o A representa um Lá, e assim por diante. Chamamos de escala cromática a escala que contém todas as notas musicais, ou seja: C-C#-D-D#-E-F-F#-G-G#-A-A#-B-C (Dó - Dó sustenido - Ré - Ré sustenido - Mi - Fá - Fá sustenido - Sol - Sol sustenido - Lá - Lá sustenido - Si – Dó). O intervalo (distância sonora) entre qualquer nota e a próxima nota consecutiva na escala cromática é chamada de semitom, portanto entre um C e um C# temos um semitom. Observe que não existe E# e B#. Uma escala consiste em uma seqüência de notas que nos leva de uma oitava até a outra, ou seja, usando como exemplo a escala apresentada anteriormente, o Dó (C) final está uma oitava acima (mais agudo) em relação ao Dó (C) inicial. Outra informação básica que facilitará a compreensão do programa é que utilizaremos a afinação padrão para a guitarra, onde as cordas estão afinadas Para quem quiser se aprofundar mais na teoria musical envolvida, sugiro ir até o link www.zentao.com/guitar/theory (site em inglês). Tipos e arrays usados no exemplo Agora que sabemos o mínimo necessário sobre teoria musical, podemos compreender melhor o programa analisando o código-fonte. Usaremos o componente freeware MidiGen para tocar as notas na placa de som. Ele pode ser obtido no endereço www.alan-warriner.co.uk/software/TMidiGen.zip. Sua instalação é simples, basta instalar o arquivo TMidiGen.dpk. Temos na Listagem 1 alguns tipos, constantes e variáveis usadas na aplicação, explicados a seguir: Listagem 1. Tipos, variáveis utilizadas no exemplo (retirados da unit MidiGen.pas) type TMGNote = (mgC, mgCsharp, mgD, mgDsharp, mgE, mgF, mgFsharp, mgG, mgGsharp, mgA, mgAsharp, mgB); NoteStruc = record Fret: TRect; Nota: TMGNote; Oitava: Smallint; end; NotasArray = array of NoteStruc; ... const NotasBase: array[1..6] of TMGNote = (mgE, mgB, mgG, mgD, mgA, mgE); NotasMusic: array[0..11] of TMGNote = (mgC, mgCsharp, mgD, mgDsharp, mgE, mgF, mgFsharp, mgG, mgGsharp, mgA, mgAsharp, mgB); NotasMusicPort: array[Low(NotasMusic)..High( NotasMusic)] of string[4] = ('Do', 'Do#', 'Ré', 'Ré#', 'Mi', 'Fá', 'Fá#', 'Sol', 'Sol#', 'Lá', 'Lá#', 'Si'); NotasAlfa: array[Low(NotasMusic)..High( NotasMusic)] of string[2] = ('C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B'); Larg = 43; { Largura do bitmap do fret } ...
Quer ler esse conteúdo completo?
Tenha acesso completo