标签: waveform

在给定时间/样本量下,频率f1和f2之间指数变化的正弦波

我正在尝试实现生成正弦波的Python方法,它以指数方式在两个频率之间斜升.使用以下Python代码在[this question]中解决了线性变化:

from math import pi, sin

def sweep(f_start, f_end, interval, n_steps):    
    for i in range(n_steps):
        delta = i / float(n_steps)
        t = interval * delta
        phase = 2 * pi * t * (f_start + (f_end - f_start) * delta / 2)
        print t, phase * 180 / pi, 3 * sin(phase)

sweep(1, 10, 5, 1000)
Run Code Online (Sandbox Code Playgroud)

如何将这种线性累积相位/ delta方法改变为指数频率扫描并且对人耳是平滑的.

c python algorithm math waveform

5
推荐指数
2
解决办法
4886
查看次数

AudioKit - 绘制文件的完整波形

我一直在阅读文档寻找答案.我看到AudioKit可以在录制或播放时实时绘制波形,但我想知道你是否可以加载文件并完全绘制波形,这样我就可以看到整个文件的波形而无需回放.

任何帮助将不胜感激.甚至只是指向我应该查看的对象的指针.

waveform swift audiokit

5
推荐指数
1
解决办法
1990
查看次数

使用java声音实时处理音频和绘制波形

我目前正在开发一个应用程序,帮助用户调整他的吉他并生成吉他效果.这是实时的.我一直在寻找能够产生吉他效果的java应用程序,例如过载和延迟,但我找不到任何东西.还需要实时创建波形的源.您的意见将非常有用,感谢提前.

java waveform javasound

4
推荐指数
1
解决办法
1万
查看次数

在android中有效绘制正弦波

我正在制作一个应用程序,需要在两个给定点之间绘制正弦波。我已经谷歌了,谷歌了,但我还没有找到任何我认为合适的东西。

android中是否有一种有效的方法来使用一些预定义的点来绘制平滑的波浪状形式?

java android waveform sine-wave

4
推荐指数
1
解决办法
5583
查看次数

确定FFT的长度

我正在使用一种工具来比较两个波形文件的波形相似性。例如,我有一个持续时间为1min的波形文件,我使用第一个波形文件制作了另一个波形文件,但是每个5sec数据的间隔为5秒至0。现在,我的软件会告诉您,在5sec至10sec的时间间隔内存在波形差异,15秒至20秒,25秒至30秒,依此类推...

截至目前,通过初步开发,此方法可以正常工作。以下是3个测试集:

  1. 我有两个波形文件,采样率为960Hz,单声道,没有数据采样为138551(1分钟12秒的文件)。我正在使用128点FFT(在128个样本块中拆分文件),效果很好。

  2. 当我对采样率为48KHz,2通道的波文件使用相同的算法时,每个通道均没有数据采样6927361(文件为2min 24秒),过程变得太慢了。当我使用4096点FFT时,过程会更好。

  3. 但是,在22050Hz,2通道的文件上使用4096点FFT,每个通道的数据采样数为55776(文件长度为0.6秒),结果非常差。在这种情况下,128点FFT效果很好。

因此,我对如何确定FFT的长度感到困惑,因此在每种情况下我的结果都是不错的。

我猜长度应该取决于样本数量和采样率。请对此提供您的意见。

谢谢

size audio waveform fft wav

4
推荐指数
1
解决办法
7259
查看次数

使用webaudio生成静态波形

我正在尝试使用webaudio和canvas生成类似于音频编辑应用程序的静态波形.现在我正在加载一个mp3,创建一个缓冲区,迭代getChannelData返回的数据.

问题是..我真的不明白什么是返回.

  1. getChannelData返回的内容 - 是否适合波形?
  2. 如何调整(样本大小?)以获得一个峰值==一秒?
  3. 为什么~50%的值是负数?

    ctx.decodeAudioData(req.response, function(buffer) {
      buf = buffer;
    
    src = ctx.createBufferSource();
    src.buffer = buf;
    
    //create fft
    fft = ctx.createAnalyser();
    
    var data = new Uint8Array(samples);
      fft.getByteFrequencyData(data);
    
    bufferL = buf.getChannelData(0)
      for(var i = 0; i<buf.length; i++){
        n = bufferL[i*(1000)]
          gfx.beginPath();
          gfx.moveTo(i +0.5, 300);
          gfx.lineTo(i +0.5, 300 + (-n*100));
          gfx.stroke();
    
    Run Code Online (Sandbox Code Playgroud)

我正在产生什么:

我正在产生什么:

我想要产生什么:

我想要产生什么:

谢谢

javascript waveform canvas web-audio-api

4
推荐指数
1
解决办法
866
查看次数

如何使用 FFmpeg 获取音频峰值?

我正在开发音乐应用程序,需要为我的文件生成音频频谱。像这个:

在此输入图像描述

所以我尝试使用这样的音频波形:

audiowaveform -i music.mp3 --pixels-per-second 1 -o out.dat
Run Code Online (Sandbox Code Playgroud)

这给了我以下结果[正确的结果]:[前 10 个单词是元数据]

0000000 0001 0000 0000 0000 bb80 0000 bb80 0000
0000020 00f9 0000 df3e 1fa2 e22c 1ef3 e0bb 1e5a
0000040 e099 1e88 dfcf 1c33 e29f 1d4c e055 1f80
0000060 df63 1e3a e1b4 1f31 e271 1d81 e0e5 1b1c
0000100 e06d 1be4 dee2 1cb0 e118 1da1 e026 1dea
0000120 e055 1dac df9b 1dbf e0c3 2063 ded4 21b2
0000140 dec9 1f8d de5b 20c8 e02d 216a dd7e 21af
0000160 dea1 20ac de6c …
Run Code Online (Sandbox Code Playgroud)

audio waveform ffmpeg spectrum audiowaveform

4
推荐指数
1
解决办法
3603
查看次数

根据具体数据计算锯齿波和三角波

我需要计算三角形和锯齿波,但由于我的模型和我能够使用的数据,它有点复杂(但也许我只是感到困惑)。

我能够计算我的正弦波,但我并没有真正使用帧计数器。我所做的是,计算一个theta_increment变量,下次需要计算样本时可以使用该变量。这工作起来是这样的:

float x = note.frequency / AppSettings::sampleRate;
float theta_increment = 2.0f * M_PI * x;
float value = 0;

if(waveType == SINE){
    value = sin(note.theta) * fixedAmplitude;
}
Run Code Online (Sandbox Code Playgroud)

theta_increment现在我有了存储在成员中的当前帧/样本的值,note.theta以便我可以将其用于下一个样本:

note.theta += theta_increment;
Run Code Online (Sandbox Code Playgroud)

我已经看过大量关于如何计算锯子或三角形的示例,但我无法弄清楚。(我只有上面提到的数据可供我使用)这是我最后一次尝试,但它不起作用并给我带来了很多故障:

value = 1.0f - (2.0f * ((float)note.theta / (float)44100));
Run Code Online (Sandbox Code Playgroud)

c++ math trigonometry waveform

3
推荐指数
1
解决办法
6731
查看次数

将 NAudio 控件添加到工具箱

我正在尝试使用 NAudio 库中的控件,例如 WaveViewer、VolumeMeter、VolumeSlider、Fader、WaveformPainter 等。我使用的是 Visual Studio 2012 并安装了 net 4.5。我还下载并引用了 NAudio 1.7 及其 .dll 到我的项目中。当我右键单击工具箱并单击选择项目,导航到 .NET 组件选项卡并选择浏览,单击 NAudion dll,然后检查这些新控件以添加时,会出现一个消息框,并显示以下错误:

添加了控件 Fader、PanSlider、Pot、VolumeMeter、VolumeSlider、WaveformPainter、WaveViewer。确保添加的控件与当前设计器和 .NET Framework 版本兼容。

我尝试重置工具箱并重新添加这些控件。

我正在使用 VS2012 创建一个 WPF 项目来播放视频并在下面显示它的波形(我已经将音频提取到一个 .wav 文件中,如果我只能得到这些,我希望使用 NAudio 中的一个控件来显示该文件要启用的控件 - 不会变灰 - 在设计器的工具箱中。)

我是 c# 和 WPF 以及 NAudio 的新手,因此非常感谢任何帮助。

wpf waveform naudio .net-4.5 visual-studio-2012

3
推荐指数
1
解决办法
2917
查看次数

如何在html5中绘制音频流的波形?

我有来自网络摄像头的媒体流。我需要动态绘制音频波形(从媒体流中提取)。如何在 HTML5 中使用 JS 做到这一点?

我检查了:

https://github.com/soundcloud/waveformjs

https://github.com/katspaugh/wavesurfer.js

它们似乎都可以使用音频文件。如何为流做到这一点?

html audio waveform stream mediastream

3
推荐指数
1
解决办法
5361
查看次数