Reproducir notas musicales

.

El siguiente procedimiento permite teclear una nota musical en función de su frecuencia y duración, no sobre el altavoz interno del PC, que habitalmente se haría con la función Windows.Beep() , sino sobre la tarjeta de sonido.
Para ello se configura las propiedades del archivo "wav" (en la estructura WaveFormatEx), esta estructura se escribe en un MemoryStream que se pasa como parámetro a la función sndPlaySound indicando la lectura de un flujo de memoria.

Por ejemplo un "LA" que dura 1 segundo se reproduciría así:

procedure TForm1.Button1Click(Sender: TObject);
begin
  MakeSound(440, 1000, 60);
end;

Link de descarga del programa

Una nota musical se caracteriza por 3 parámetros: altura, amplitud y timbre.
Altura: también llamada "frecuencia". Musicalmente para aumentar una octava haría falta mutiplicar su frecuencia por 2.
Amplitud: Es la potencia sonora - volumen. El fichero WAV no utiliza la noción de decibelios, sino un valor comprendido entre 0 -silencio- y 127 -el más fuerte posible-.
Timbre
: Es el parámetro que caracteriza el sonido. Es el que permite diferenciar 2 instrumentos musicales que tocan la misma nota.

Frecuencias informativas de las notas musicales: (Octava nº 3)

  • Do : 264 Hz
  • Ré : 297 Hz
  • Mi : 330 Hz
  • Fa : 352 Hz
  • Sol : 396 Hz
  • La : 440 Hz
  • Si : 495 Hz
  • Do4 : 528 Hz

Más información

Estructura del fichero WAV:Wotsit's format
Tutoriales sobre WAV : http://sub0.developpez.com
Manipulación de ficheros WAV :Concaténation de fichiers WAV

No hay comentarios:

Publicar un comentario