• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

frm

Teclado como piano

6 mensagens neste tópico

Quase todos os PC's têm um altifalante interno que pode ser controlado atraves dos portos

0x42, 0x43 e 0x61. Quando devidamente controlado, este dispositivo basico permite reproduzir

um som continuo de uma determinada frequencia. Antigamente, quando os computadores ainda

nao tinham placa de som nem altifalantes externos, aquele era o unico meio acustico disponivel

num PC.

E objectivo deste trabalho pratico controlar o altifalante interno de modo a que ele emita notas

musicais. A nota a ser tocada pode ser controlada, quer por uma tecla (versao piano).

Estrategia:

1. Fase 1 - Controlo do Altifalante

Uma nota musical nao e mais do que um som continuo de uma determinada frequencia. O

altifalante pode ser programado para emitir um som de uma determinada frequencia como

esta documentado em:

http://courses.ece.uiuc.edu/ece390/books/labmanual/io-devices-speaker.html

Pretende-se que elabore o seguinte conjunto de funcoes em assembly para controlo do altifalante.

(a) void InitPIT2() - Configura adequadamente o contador 2 escrevendo no porto 0x43

(:) void Sound() - Faz o \enable" do altifalante escrevendo no porto 0x61

© void Silence() - Faz o \disable" do altifalante escrevendo no porto 0x61

(d) void SetSound(short count limit) - Programa o limite de contagem de PIT2 usando o

porto 0x42 (o par^ametro count limit depender a da frequencia do som a emitir).

Estas funcoes deverao ficar no ficheiro soundlib.asm de forma a criar uma livraria que sera

utilizada por programas escritos em C. De forma a verificar a correccao do seu codigo sugerese

que elabore um programa em C que solicite ao utilizador a frequencia do som que deseja

ouvir, e que faca o amplificador reproduzir esse som durante 3 segundos.

Fase 2 - Piano digital controlado pelo teclado

Elabore um programa que associa a cada tecla um som de uma determinada frequência

(nota musical). Para isso podera fazer uso das livrarias do DJGPP cuja documentacao se

encontra em

(a) http://www.delorie.com/djgpp/doc/libc/

Tou sem ideias, nem sei por onde comecar e nem como comecar, se alguem me puder ajudar...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não venho acrescentar nada de propriamente novo, mas apenas dizer que a ideia é muito boa. É difícil de implementar pelo que vejo, no entanto com alguma pesquisa e algumas ajudas vais conseguir implementar isso.

Depois apresenta nos Projectos Programação. Boa sorte !  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se isso é um trabalho escolar, é suposto teres dado nas aulas o suficiente para leres a documentação fornecida e fazeres o trabalho. Ou pelo menos começares a escrever a estrutura do programa, e o básico das funções. Se não acertares à primeira no funcionamento das coisas não é preocupante, mas se não sabes por onde começar já se torna um pouco mais grave...

Mas também com professores que escrevem "livraria" em vez de biblioteca já não sei de nada...

Sabes escrever funções em assembly?

PS - Não percebi a estrutura do trabalho... na 1ª parte pedem para escrever funções que emitam som de uma dada frequência, e na 2ª parte dizem para utilizar bibliotecas externas que fazem o mesmo que as funções criadas na 1ª parte?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já foste ao primeiro link? Está lá explicado tim-tim por tim-tim tudo o que tens de fazer para a primeira parte. Até tem um exemplo...

Quanto à segunda parte não percebi bem a ideia de ter de usar aquela biblioteca (livraria? oh meu deus...)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só não percebi porque é que tendo desenvolvido as funções da 1ª parte, na 2ª mandam usar outra biblioteca... :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora