C语言生成midi文件,介绍二个wave 转 midi的开源项目

//lihaoyxj@gmail.com

在进行音频处理时,往往需要把wav数据转成其它格式,而作为音乐编辑类的软件,更多则是要以midi格式去处理。

在这里简单介绍二款开源的有关音频中和midi相关的软件,首先一款是:WavetoMidi.

LINK:

从结构上来说,源码结构如下:

wavetomidi

{

BWidget

options

snack

tclmidi

wavetomidi

}

就我暂时看下来,BWidget是作为一个图形UI的。用tcl语言写成。

options是一些参数处理

snack则是针对一些音频码流的解析,调用的主要是libaudio及libsndfile等库。

tclmidi则是针对midi处理的主要库,里边有一些tcl写的东西暂时没有研究。

wavetomidi是其它类型音频转向midi的接口库。

当然,这个工具要编译时需要有以下一些库的支持,libsndfile,libao等等库。

第二款则是:waon,

源码结构相对简单

全部是c的源码,有audio文件解析,播放,以及转成midi的接口,播放等,它所依赖的库是:

fftw,libsndfile,libau,libsample等库。

在这个库中所使用库中,我以前也没见过fftw,所以顺带把该库的介绍也copy过来

、、、、

FFTW由麻省理工学院计算机科学实验室超级计算技术组开发的一套离散傅立叶变换(DFT)的计算库,开源、高效和标准C语言编写的代码使其得到了非常广泛的应用,Intel的数学库和Scilib(类似于matlab的科学计算软件)都使用FFTW做FFT计算。

FFTW是计算离散Fourier变换(DFT)的快速C程序的一个完整集合。

l        它可计算一维或多维、实和复数据以及任意规模的DFT;甚至包括正弦/余弦变换和离散哈特莱变换(DHT)。

l        FFTW输入数据长度任意。

l        FFTW支持任意多维数据。

l        FFTW 支持 SSE, SSE2, Altivec,和 MIPS 指令集。

l        FFTW还包含对共享和分布式存储系统的并行变换。

FFTW的基本结构:

FFTW不是采用固定算法计算变换,而是根据具体硬件和变换参数来调整使用不同算法,以期达到最佳效果。因此,变换被分成两个阶段。首先,FFTW

规划针对目标计算机的最快变换的计算途径,并生成一个包含此信息的数据结构。然后,对输入数据进行变换。该规划可以被多次使用。在一个典型的高性能应用

中,总是在执行相同参数条件的任务,因而,相对复杂但结果可被重复使用的初始化是值得的。另一方面,当你需要某一参数的单次变换,初始化就显得过于费时。

基于此FFTW提供基于启发式和先例的快速初始化。总的来说,FFTW的一个显著特点就是,对某一参数类型的单次变换优势不大,但对于参数相同的多次变换

具有更快的平均速度。

FFTW为了加快用户的使用集成速度,提供了三种不同层次的接口。

连续数据的单一变换的基本接口。

计算多重和步进阵列数据的高级接口。

支持通用数据布局、多重和步进的顶级接口。

大部分的用户使用基本接口就可以满足需要,顶级接口需要更小心使用以避免出错,因此需要花更多的时间去理解掌握。FFTW不仅提供了数据自适应,还提供了高级用户定制功能。例如,由于代码空间不足,可以去掉用户不需要的功能代码。相反,FFTW还可以拓展数据结构。

以下是waon的一个转换的内容:zip.gif文件:Sample_Wavs.zip

大小:215KB

下载:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值