我正在寻找一种方法来获取歌曲中的高音和低音数据,增加一些时间(例如0.1秒),范围为0.0到1.0.我已经google了一下,但是找不到任何与我正在寻找的东西相近的东西.最终我希望能够在播放歌曲时表现高音和低音水平.
谢谢!
我正在寻找一种C#中快速,专业外观和可定制的波形显示组件.
我想在时域和频域主要显示实时音频波形(快!).我希望能够缩放,更改轴设置,显示多个通道,自定义手感和颜色等...
任何人都知道什么,无论是否商业?
谢谢!
迭戈
我在udacity.com上关注了一个非常好的教程,用Swift探索音频应用程序的基础.我想扩展其当前的功能,从显示WAV文件的波形开始.为此,我需要从WAV文件中检索幅度与样本.考虑到我已经录制了文件,我怎么能快速进行?
谢谢!
我想找到两个时间戳数组之间的偏移量.它们可以代表两个音轨中的哔哔声.
注意:两个轨道中可能有额外或缺少的开始.
我找到了一些关于互相关的信息(例如https://dsp.stackexchange.com/questions/736/how-do-i-implement-cross-correlation-to-prove-two-audio-files-are-similar)看起来很有希望.
我假设每个音轨的持续时间为10秒,并将哔哔声表示为"方波"的峰值,采样率为44.1 kHz:
import numpy as np
rfft = np.fft.rfft
irfft = np.fft.irfft
track_1 = np.array([..., 5.2, 5.5, 7.0, ...])
# The onset in track_2 at 8.0 is "extra," it has no
# corresponding onset in track_1
track_2 = np.array([..., 7.2, 7.45, 8.0, 9.0, ...])
frequency = 44100
num_samples = 10 * frequency
wave_1 = np.zeros(num_samples)
wave_1[(track_1 * frequency).astype(int)] = 1
wave_2 = np.zeros(num_samples)
wave_2[(track_2 * frequency).astype(int)] = 1
xcor = irfft(rfft(wave_1) * np.conj(rfft(wave_2)))
offset …Run Code Online (Sandbox Code Playgroud) 我有一个长64个样本的波形.如果采样率为44100 hz,我该如何播放(循环)此波形以使其播放任意频率?
频率=样本中的采样率/波形持续时间
因此频率应为689hz(44100/64).如果我想要它,65.41hz(C-2),我必须这样做:
65.41 = 44100/x
求解x得到aprox.674.208.因此,我需要弄清楚播放波形的速度,以获得此频率.所以我们可以解决这个等式:
64*x = 674.208
得到大约10.5.因此波形需要以其原始速度的10.5%播放.
这是我的代码:
double smp_index = 0;
double freq = .105;
void callback(void *data, Uint8 *buf, int len){
int i;
s8 *out;
out = (s8*) buf;
if(smp_index < waveform_length){
for(i = 0; i < len; i ++){
out[i] = smpdata[(int)smp_index];
smp_index +=freq;
if(smp_index >= waveform_length)
smp_index = 0;
}
}
}
Run Code Online (Sandbox Code Playgroud)
因此产生的音频应该是关于音符C-2,但它更多的是D-2.是演员
(int)smp_index
Run Code Online (Sandbox Code Playgroud)
造成这个问题?我看不到任何其他方法来实现这个目标......
我正在尝试用Java开发一个静态方法来生成纯音.
在开始时它似乎很容易,但是当我尝试将双阵列写入扬声器时,我欣赏太多的谐波.
我用频谱分析仪(声压计)测试它,然后我也在图形中绘制了数组结果.当我完成它时,我已经看到了问题:
这是波形,它已经中断了.我想平滑这个数组,但我不知道该怎么做.
这是代码:
/**
* Genera un tono puro.
* @param bufferSize Tamaño del buffer.
* @param fs Frecuencia de muestreo.
* @param f0 Frecuencia central.
* @return El tono puro.
*/
public static double[] generateTone(int bufferSize, int fs, int f0) {
double[] tone = new double[bufferSize]; // Tono
double angle; // Ángulo del tono
// Sólo hace falta recorrer la mitad del array, ya que hay simetría:
for (int i = 0; i < tone.length / 2; …Run Code Online (Sandbox Code Playgroud) 假设有人想找出给定正弦波信号的周期。从我在网上阅读的内容来看,这两种主要方法似乎采用了傅立叶分析或自相关。我正在尝试使用 python 自动化该过程,我的用例是将此概念应用于来自围绕恒星运行的模拟物体的位置(或速度或加速度)时间序列的类似信号。
为了简单的例子,考虑x = sin(t)for 0 ? t ? 10 pi。
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
## sample data
t = np.linspace(0, 10 * np.pi, 100)
x = np.sin(t)
fig, ax = plt.subplots()
ax.plot(t, x, color='b', marker='o')
ax.grid(color='k', alpha=0.3, linestyle=':')
plt.show()
plt.close(fig)
Run Code Online (Sandbox Code Playgroud)
给定形式x = a sin(b(t+c)) + d为 的正弦波,正弦波的周期为2 * pi / b。由于b=1(或通过目视检查),我们的正弦波的周期是2 * pi。我可以根据此基线检查从其他方法获得的结果。
尝试 1:自相关
据我了解(如果我错了,请纠正我),相关性可用于查看一个信号是否是另一个信号的时间滞后副本(类似于余弦和正弦因相位差而不同)。因此,自相关是针对自身测试信号,以测量时滞重复所述信号的时间。使用此处发布的示例 …