Audio 播放圣诞歌曲的邮政编码

Audio 播放圣诞歌曲的邮政编码,audio,playback,Audio,Playback,有没有一种方法可以在PC或Mac电脑上播放圣诞歌曲而无需预先录制声音文件?(没有.mp3或.wav或任何声音文件) 我记得在我的TI 99/4A和Apple II上可以播放声音(类似于音乐)。不确定现代计算机是否具备这些功能(除了嘟嘟声)。MIDI是一种选择,尽管在PC上它的声音通常和嘟嘟声一样糟糕。是的,您可以播放MIDI Midi本身并不编码声音,它编码用于播放音乐的信息;音调、音调、强度等 codeplex上有一个C#midi工具包,位于: 声音的质量完全取决于用于播放它的midi设备,因

有没有一种方法可以在PC或Mac电脑上播放圣诞歌曲而无需预先录制声音文件?(没有.mp3或.wav或任何声音文件)


我记得在我的TI 99/4A和Apple II上可以播放声音(类似于音乐)。不确定现代计算机是否具备这些功能(除了嘟嘟声)。

MIDI是一种选择,尽管在PC上它的声音通常和嘟嘟声一样糟糕。

是的,您可以播放MIDI

Midi本身并不编码声音,它编码用于播放音乐的信息;音调、音调、强度等

codeplex上有一个C#midi工具包,位于:

声音的质量完全取决于用于播放它的midi设备,因此不同计算机的声音质量会有所不同

您可以在以下位置找到圣诞midi文件的列表:


Windows Media Player可以像Quick Time(我相信)一样播放midi文件。

动态生成PCM数据怎么样?PCM-脉冲编码调制-声音只是模拟声音系统中的一组电压样本

想想演讲者。当声音播放时,它会振动。如果你拿一把尺子,以比声音频率更快的速度测量扬声器的位置,会怎么样?你会得到一张波形图。这正是PCM数据的样子,每个测量值都存储为8或16位整数。频率,比如44khz是每秒的采样数。CD使用44khz采样频率和16位采样

(在windows上)和(跨平台)是两个可用于播放包含PCM数据的数据缓冲区的库。我过去使用DirectSound,不是播放数据,而是从麦克风读取数据以获得音量

如果你想为某个音符创建一个PCM样本,你只需计算频率(这里是a),然后在缓冲区中放入一个正弦波。您可以将不同的频率混合在一起,只需将它们相加(确保总和小于最大音量,以避免剪切)

java中的“叮当铃”(像往常一样臃肿),使用,与管状铃铛和木琴(复调!):

说到“像嘟嘟声一样糟糕”,如果您已经在linux机器上安装了,您可以运行以下shell脚本(与Jeremy Ruten的回答相同):


那是一个坏音箱的产物。有了高质量的音库,MIDI的音质几乎可以和真正的音乐一样好。事实上,音乐界每天都在使用MIDI;他们对MIDI的负面看法与程序员不一样。@Ricket:对我来说这是QBASIC。可能这是其他人的另一个基本功能。也是Microsoft GW-BASIC和BASIC(A)
PLAY "e4 e4 e2 e4 e4 e2 e4 g4 c4 d4 e2"
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");
    }
}
#!/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