Esse artigo faz parte da revista Clube Delphi Edição 55. Clique aqui para ler todos os artigos desta edição

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 em E A D G B E (Mi, Lá, Ré, Sol, Si e Mi).

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