我毕业后就是电子和电信专业的学生.我将参与一个涉及我对DSP,音乐和音频知识的项目.我已经知道所有基本的数学仪器和我需要管理的所有东西,例如FFT,循环卷积ecc ecc.
我想学习C++编程基本上是出于一个原因:它在专业领域非常重要!我认为它是最常用于编写音频应用程序的应用程序之一,尤其是当它涉及实时处理时.
好的,在这个小小的介绍之后我想首先知道,哪些是最常用的库,用于c ++中的音频处理?我长时间在网上看,但我找不到工作的东西.(我使用eclipse CDT环境在linux下工作).
然后我想知道是否有很好的资源来学习如何编写一些工作代码,例如如何编写一个简单的低通滤波器.基本上现在我不会写实时应用程序,我想从处理WAV文件开始,甚至更好的MP3文件,所以基本上是在样本矢量上.
让我们说基本上现在我想从音频文件中提取波形,并将其保存为缩略图或PNG图像.
好的,现在我认为这就是我所需要的.
关于这个的任何想法,建议,图书馆,书籍,有趣的资料来源?
非常感谢您提供任何答案.
乔瓦尼.
我是CoreAudio的新手,我希望使用CA通过扬声器输出一个具有给定频率和幅度的简单正弦波和方波.我不想使用声音文件,因为我想合成声音.
我需要做什么?你能给我一个例子或教程吗?谢谢.
可能吗?我想要运行一批音频文件并从中生成图形波形文件.与SoundCloud显示的类似,但也许我正在寻找的模块将提供更多选项.
那里有什么?有什么好的?
我正在尝试使用AudioTrack生成正弦波,方波和锯齿波.然而,这个创建的音频听起来并不像纯正弦波,但是它有一些其他的波形覆盖.在第一个例子中使用方法时,我将如何获得纯正弦波,就像在第二个代码示例中那样?由于顶部示例仅围绕第二个中使用的某些算法移动,它们不应该产生相同的波吗?
@Override
protected Void doInBackground(Void... foo) {
short[] buffer = new short[1024];
this.track = new AudioTrack(AudioManager.STREAM_MUSIC, 44100, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, minBufferSize, AudioTrack.MODE_STREAM);
float samples[] = new float[1024];
this.track.play();
while (true) {
for (int i = 0; i < samples.length; i++) {
samples[i] = (float) Math.sin( (float)i * ((float)(2*Math.PI) * frequency / 44100)); //the part that makes this a sine wave....
buffer[i] = (short) (samples[i] * Short.MAX_VALUE);
}
this.track.write( buffer, 0, samples.length ); //write to the audio buffer.... and start all over …Run Code Online (Sandbox Code Playgroud) 我已经浏览了Stack Overflow以获得答案,但似乎没有给出正确答案或方向......
我的项目将允许用户上传WAV,最终将使用服务器上的FFmpeg将其转换为低质量的MP3,并且它将全部存储并在Amazon S3上提供.下一个障碍是如何从这个上传的声音中提取可靠的波形可视化.我在Linux Ubuntu 10上使用Python和Django在这个项目的VPS上...
我,至少需要某种方向......我迷失在哪里开始寻找这样的工具?
我正在编写交流程序,以产生一个正弦波,在给定时间间隔内缓慢地将频率从f1加速到f2.
我已经编写了这个c程序,将频率从0到10 Hz加速,但问题是360度完成后频率会发生变化.如果我尝试在0到360度之间改变频率,那么转换不平滑且突然.
这是我用过的罪的等式y =幅度*sin(频率*相位)
int main(int argc, char *argv[]) {
double y, freq,phase;
int count; // for convenience of plotting in matlab so all the waves are spread on x axis.
for (freq = 0; freq < 10; freq+=1) {
for (phase = 0; phase < 360; phase++) { // phase is 360 degrees
y = 3 * sin((count*6.283185)+(freq*(phase*(3.14159/180))));
printf("%f %f %f \n", freq, phase, y);
}
count++;
}
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
我有一长串十六进制值,它们看起来都像这样:
'\x00\x00\x00\x01\x00\x00\x00\xff\xff\x00\x00'
Run Code Online (Sandbox Code Playgroud)
实际字符串是1024帧的波形.我想将这些十六进制值转换为整数值列表,例如:
[0, 0, 0, 1, 0, 0, 0, 255, 255, 0, 0]
Run Code Online (Sandbox Code Playgroud)
如何将这些十六进制值转换为整数?
我正在寻找一种方法来获取歌曲中的高音和低音数据,增加一些时间(例如0.1秒),范围为0.0到1.0.我已经google了一下,但是找不到任何与我正在寻找的东西相近的东西.最终我希望能够在播放歌曲时表现高音和低音水平.
谢谢!
我正在为我的网站使用自定义Soundcloud播放器waveform.js来生成波形.它工作得很好,但缺乏擦洗功能.我该如何添加?
我不是一个JS向导,仍然在学习我的方式所以我会非常感谢任何帮助或建议!
更新IV:我找到了一种将画布生成的波形包含在原始SoundCloud自定义播放器中的新方法sc-player.js.
首先,我找到了一行代码,负责播放器的HTML结构,并添加id="waveform"到sc-waveform container第529行:
.append('<div class="sc-time-span"><div class="sc-waveform-container" id="waveform">
</div><div class="sc-buffer"></div><div class="sc-played"></div></div>')
Run Code Online (Sandbox Code Playgroud)
然后我更新了676行,替换img为canvas
$available = $scrubber.find('.sc-waveform-container canvas'),
Run Code Online (Sandbox Code Playgroud)
接下来,我找到了一段代码,负责在340行嵌入波形的原始图像并将其评论出来:
// $('.sc-waveform-container', $player).html('<img src="' + track.waveform_url +'" />');
Run Code Online (Sandbox Code Playgroud)
然后我在页面底部发布了以下代码:
<script>
SC.get("/tracks/80348246", function(track){
var waveform = new Waveform({
container: document.getElementById("waveform"),
height: 40,
innerColor: '#ffffff'
});
waveform.dataFromSoundCloudTrack(track);
});
//----------- end of insterted waveform.js code ----------------------
</script>
Run Code Online (Sandbox Code Playgroud)
结果非常有希望,现在我有完全可定制的波形和洗涤器也正常工作.但是仍然有一些我想解决的问题.
在Chrome中,当我按下播放和暂停时,然后单击波形,曲目开始播放,但播放按钮不会改变其状态.然后需要双击它来停止轨道.
缓冲区和进度条仍然只是sc-player后台的div.我怎么能联系sc-player.js并waveform.js在一起,使波形画布上产生(例如如在进度http://waveformjs.org/)?
任何想法如何解决这些问题?
这是现场网站上的播放器:http: //www.code.spik3s.com/rnr/
这是声云搜索栏的图像:

声音云实际上会在歌曲播放之前计算波形,并将其添加为搜索栏的背景.
我试图添加一些基于android-visualizer的可视化.但我需要的是使用可视化工具作为音频搜索栏的背景.任何指针都非常有用,因为我确信可能会有一些代码开始.
谢谢.