Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Artigo Clube Delphi 55 - Guitar Explorer
Artigo da Revista Clube Delphi Edição 55

![]()
Guitar Explorer
Uma aplicação prática envolvendo o uso de tipos, arrays e técnicas de programação multimídia
Mesmo que você não seja um guitarrista ou não se interesse por música, não deixe de ler este artigo, pois ele lhe mostrará várias situações interessantes abordando o uso de matrizes, open arrays e tipos, aplicados a um exemplo construído
A função do programa é mostrar visualmente um fretboard (braço da guitarra) e permitir que o usuário clique em uma determinada corda em um determinado fret (“traste”) e obtenha a nota musical relacionada, bem como selecionar escalas musicais e visualizá-las desenhadas no fretboard e na notação de tablatura, nota por nota. As notas também podem ser ouvidas caso o usuário disponha de placa de som.
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);
"
Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Carlos Henrique Cantu
(cantu@clubedelphi.com.br) – Bacharel em Ciência da Computação e pós-graduado em análise de sistemas, trabalha com o desenvolvimento de softwares há 15 anos. É consultor especializado em bancos de dados Firebird/InterBase, mantenedor do site www.firebase.com.br, editor da SQL Magazine, membro da equ...



