目前,我有显示幅度及其频率的代码
def plot_fft(p, xf, fs, notes, dimensions=(960, 540)):
xf_bet=xf-160
layout = go.Layout(
title="frequency spectrum",
autosize=False,
width=dimensions[0],
height=dimensions[1],
xaxis_title="Frequency (note)",
yaxis_title="Magnitude",
font={'size': 24}
)
fig = go.Figure(layout=layout,
layout_xaxis_range=[FREQ_MIN, FREQ_MAX],
layout_yaxis_range=[0, 1]
)
fig.add_trace(go.Scatter(
x=xf_bet,
y=p))
for note in notes:
# Dodanie wartości częstotliwości do nazwy dźwięku
note_name_with_freq = f"{note[1]} ({round(note[0]-160, 2)} Hz)"
fig.add_annotation(x=note[0] + 10, y=note[2],
text=note_name_with_freq,
font={'size': 48},
showarrow=False)
return fig
该程序的想法是创建许多情节并最终将它们组合成MP4
我可以想到两种方法:
只需创建单独的正弦波。那么每个频率波就是
y = A * sin(2 * np.pi * f + phi)
振幅 A、频率 f 和相移 phi。