卡丽
Kali在Javascript中用于实时时间拉伸和投出移位. 它可以独立地改变Tempo和Pitch.
来自维基百科:
时间拉伸是改变音频信号的速度或持续时间而不影响其发音的过程. 皮奇缩放或投出相变则相反:改变投出过程而不影响速度. 类似的方法可以同时以时间变化的方式改变速度,投出,或者两者兼而有之.
Kali 使用类似 WSOLA 的算法在浏览器中进行高质量的时间拉伸
演示
尝试演示 这里。 。 。 .
开始
找卡莉来 页 次。 。 。 .
卡利将很快发布给npm.
基本用途
创建新实例
var kali = new Kali(numChannels);
设定时间拉伸的参数 。 设置 useQuickSearch 以某种质量为代价加速处理。 默认为虚构. 在许多情况下,这种区别并不明显,因此,如果需要更多的业绩,就尽量将其变为真实.
kali.setup(sampleRate, stretchFactor, useQuickSearch);
给Kali提供一些数据 并告诉它处理. dataToInput 应该是由相接样品组成的浮图32.
kali.input(dataToInput);
kali.process();
读取数据到目标数组 . targetArray 应该是一个浮图32箭头.
var samplesRead = kali.output(targetArray);
完成输入数据后,告诉卡利冲出它的缓冲并继续读取数据.
kali.flush();
就这样! 见 Test.ts 在示例文件夹中提供完整的使用示例.
如果你想在拉伸时改变节奏,你可以打电话 setTempo (带有新的拉伸因子)在输入数据时. 这将让你在节奏间顺利地改变。 见 Test.ts 举个例子.
文档
完整文件见 https://kali.readme.io/docs. 互联网档案馆的存檔,存档日期2013-12-22
效率
通过使用TypedArrays和对TypedArrays的视图,Kali的运行非常高效. 说到这里,这是早期的发布,而且表现还没有被尽可能地优化. 拉请求是欢迎的!
运行示例
- 克隆或下载此仓库
- 设置一个名为 mp3 文件
test.mp3输入build/examples目录 - 在目录中启动服务器
python -m SimpleHTTPServer
- 打开浏览器并导航到测试页面
- 譬如说.
http://localhost:8000/test.html
- 譬如说.
开发者控制台将显示文件被拉伸的进展. 一旦拉伸完成,减速版将开始播放. 这个例子将一首歌曲减慢了4%(因此一首125 bpm的歌曲会减慢到120 bpm).
要更改此选项( 或关于示例的其他事项) , 编辑 Test.ts 输入 examples 目录和构建如下所示.
大楼
npm install
// build examples
webpack --config webpack.config.test.js
// build Kali
webpack
// build minified Kali
webpack -p
许可证
LGPL 语言