2008-12-24 16 views
9

¿Hay alguna manera de reproducir una canción de Navidad en una PC o Mac sin tener un archivo de sonido pregrabado? (No .mp3 o .wav o cualquier archivo de sonido)Código de publicación que reproduce una canción de Navidad

Recuerdo que en mi TI 99/4A y Apple II se podían reproducir sonidos (parecidos a la música). No estoy seguro si las computadoras modernas tienen estas capacidades (aparte de pitido).

Respuesta

1

MIDI es una opción, aunque en una PC por lo general suena casi tan mal como un pitido.

+1

Eso es un artefacto de tener un mal soundba nk. Con un banco de sonido de alta calidad, MIDI puede sonar casi tan bueno como la música real. De hecho, la comunidad musical usa MIDI todos los días; no tienen las mismas vistas negativas de MIDI que los programadores a menudo tienen. –

3

Sí, puedes jugar midi.

Midi no codifica los sonidos per se, codifica la información utilizada para reproducir música; el terreno de juego, tono, intensidad, etc.

Hay un C# midi kit de herramientas en CodePlex en: http://www.codeproject.com/KB/audio-video/MIDIToolkit.aspx

La calidad del sonido depende totalmente del dispositivo MIDI utilizado para jugar, por lo que varían en calidad de la computadora a la computadora.

se puede encontrar una buena lista de archivos midi de Navidad en: http://www.lockergnome.com/midi/

Windows Media Player puede reproducir archivos midi al igual que el tiempo rápido (creo).

3
PLAY "e4 e4 e2 e4 e4 e2 e4 g4 c4 d4 e2" 
+0

¿Qué idioma es este? – Ricket

+0

@Ricket: es QBASIC para mí. tal vez sea otro BASIC para otra persona. –

2

¿Qué ocurre con la generación de datos de PCM sobre la marcha? PCM - Pulse Code Modulated - el sonido es solo un montón de muestras de voltaje en un sistema de sonido analógico.

Piense en un altavoz. A medida que se reproduce el sonido, vibra. ¿Qué pasaría si tomaras una regla y midieras la ubicación del altavoz a un ritmo más rápido que la frecuencia del sonido? Obtendrás una imagen de una forma de onda. Así es exactamente como se ven los datos de PCM, con cada medición almacenada como una int de 8 o 16 bits. La frecuencia, digamos 44khz es el número de muestras por segundo. Los CD usan una frecuencia de muestreo de 44 kHz y muestras de 16 bits.

DirectSound (en Windows) y OpenAL (plataforma cruzada) son dos bibliotecas que puede usar para reproducir divisores de datos llenos de datos PCM. He usado DirectSound en el pasado, no para reproducir datos, sino más bien para leer los datos del micrófono para obtener el nivel de volumen.

Si desea crear una muestra de PCM para una nota determinada, simplemente calcule la frecuencia (aquí hay un table) y luego coloque una onda sinusoidal en el búfer. Puede mezclar diferentes frecuencias con solo agregarlas (asegúrese de que la suma sea menor que el volumen máximo, para evitar clipping)

7

"Jingle Bells" en java (hinchado como de costumbre), usando JFugue, con campanas tubulares y xilófonos (polifónica!):

import org.jfugue.*; 

public class JingleBells 
{ 
    public static void main(String[] args) 
    { 
     Player player = new Player(); 
     player.play("T170 "+ 
        "  V0 I[XYLOPHONE] C4q C4q C3h C4q C4q C3h C3q B3q A3q G3q C4h "+ 
        "  V1 I[TUBULAR_BELLS] E5q E5q E5h E5q E5q E5h E5q G5q C5q D5q Eqh "+ 
        "  V2 I[XYLOPHONE] G3h  G2q G3q G3h  G3h"); 
    } 
} 
6

Hablando de "tan malo como bip", si usted tiene beep instalado en su máquina Linux, puede ejecutar el siguiente script (en la misma línea que la respuesta de Jeremy Ruten):

#!/bin/sh 
beep -f 659 -l 400 
sleep 0.05 
beep -f 659 -l 400 
sleep 0.05 
beep -f 659 -l 800 
sleep 0.05 
beep -f 659 -l 400 
sleep 0.05 
beep -f 659 -l 400 
sleep 0.05 
beep -f 659 -l 800 
sleep 0.05 
beep -f 659 -l 400 
sleep 0.05 
beep -f 783 -l 400 
sleep 0.05 
beep -f 523 -l 400 
sleep 0.05 
beep -f 587 -l 400 
sleep 0.05 
beep -f 659 -l 800 
Cuestiones relacionadas