就像输入一个wav文件,是一个钢琴音符do,这时候把他变成re,fa,mi,sol
就像midi中的那128个音色一样,可以升高音降低音,所以我想自己添加一种音色,或者就是存成wav文件或其他格式声音文件然后变调,不知道怎么弄啊求指教

解决方案 »

  1.   

    如果不了解喇叭是如何发声的理论,理解起来就麻烦点。
    其实,喇叭就是一个电磁铁上粘根金属线扯动纸盆中心部位上下移动发出声音的。
    这种上下移动有几个关键参数决定声音的音色。
    1、上下移动的变换速度,这个称之为频率,这个频率决定了声音的高中低音的变换
    2、上下移动的力度,这个是数模(D/A)转换时主要控制的功率,通常用来控制音量因为喇叭是以一种模拟信号工作的,所以每一次向上和向下移动的力度会根据不同的电压而不同。
    但在数字领域里,就通过一种模数(A/D)转换的技术来记录这种电压功率的波形变换。
    在 WAV 文件里,由基本的文件头+音频数据所组成。在文件头中,有这么几个概念,就是声道、
    采样频率、数据位。
    声道:
          这个应该好理解,通常是指单声道和双声道,就是说每个声道有一个独立数据,如果是双
    声道就有两个喇叭(左右)的数据。采样频率:
          这个可以理解是每一个捕获音频变化时的间隔时间,如果时间越短,细节就越多,当然采样
    的效果就越好,而这种采样频率是以秒为单位、采样次数来说明的,如 8000kHz/秒,就是说:
    1秒*1000=1000毫秒
    1000毫秒*1000=1000000微秒
    1000000微秒/8000次 = 125微秒/次
    这 125 微秒 就是每次 A/D 转换采集过程的间隔时间
    那么每一次模数转换的二进制数量是多少呢?这就是数据位数据位:
          是以二进制为单位来说明的,比如8位,则表示8个二进制位的数据,也就是一个字节的内容。所以我们可以这么理解这样一个WAV文件数据:
    采样频率:8000 kHz    数据位:8  声道:单就是每 125微秒采集一次模拟信号,并将模拟信号转换为 8 个二进制位(1个字节)的过程也就是说, 读 8000 个字节的数据就得到一秒内的音频数据如果想对声音进行改变,主要就是控制好这些频率的变化情况,比如要加高声调,只要最简单的就是提高速度,怎么提高速度?比如原来是8000个字节一秒,你减一点不就好了吗,比如提高一倍速度,就是用新的4000个字节表示完原来的8000个字节数据,算法有很多,用一种简单的方法就是每两个字节相加除以2,然后以这个数作为合并数取代原来的两个字节数据,这样就少了一半数据,然后改一下 WAV 的文件头,把数据大小改一下就OK了同理,降低音调也差不多,比如每个字节都重复原来位置出现一次,速度变慢了,音调也就降下来了,当然这种音频计算方法还有很多,还有不用改变时长的降掉或升调算法,当你理解这些是什么回事后再自己了解吧,我也就不多说了。