DevMedia
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da ClubeDelphi DIGITAL
ou para quem possui Créditos DevMedia.

Clique aqui para saber como acessar este post

1) Torne-se um assinante MVP e por apenas R$ 59,90 por mês você terá acesso completo a todos os posts. Assinar MVP

2) Adquira Créditos: comprando R$ 180,00 em créditos esse post custará R$ 1,20. Comprar Créditos

post favorito     comentários

Artigo Clube Delphi 55 - Guitar Explorer

Artigo da Revista Clube Delphi Edição 55

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você poderia comentar o que não lhe agradou?

Confirmo meu voto negativo

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

imagem_pdf.jpg

 

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 em Delphi. Não é necessário ter qualquer conhecimento musical para entender o conteúdo técnico deste artigo. Passarei alguns conceitos básicos apenas para situar o leitor no assunto que está sendo abordado.

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 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 "

A exibição deste artigo foi interrompida

Este post está disponível para assinantes MVP.



(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, mantene [...]

O que você achou deste post?
Publicidade
Serviços

Mais posts