我想创建一个音乐应用,其视图类似于SoundCloud的视图,这一点要清楚:This
我想为每个栏创建一个这样的类:
class Bar {
const Bar(this.alreadyPlayed, this.index, this.height);
final bool alreadyPlayed;
final int index;
final double height;
}
已经播放的是一个布尔值,指示条形应该是彩色还是灰色,索引是条形的数量和高度,好是条形的高度。前两个变量应该不难获取,我的问题是获取条形的高度,因此要了解当时的音乐强度。这已经足够了,但是如果有人知道如何计算特定频率(例如225 Hz)的强度,那就更好了。
但是无论如何,如果有帮助,我会添加我想用伪代码实现的目标:
// Obtain the mp3 file.
//
// Define a number of bars decided from the song length
// or from a default, for example, 80.
//
// In a loop that goes from 0 to the number of bars create
// a Bar Object with the default alreadyPlayed as 0, index
// as the index and the height as a 0.
//
// Obtain the intensity of the sound in a way like this:
// sound[time_in_milliseconds = song_lenght_in_milliseconds / num_of_bars ],
// and then set the height of the bar as the just found intensity.
我要问的可能吗?
答案 0 :(得分:1)
看起来您正在寻找从音频生成波形图的方法。到目前为止,您有尝试过什么吗?
虽然这里没有简短的答案。您可以从flutter_ffmpeg到generate waveform data from audio开始探索。由您决定波形数据使用哪种格式。一旦获得数据,就可以使用CustomPaint在Flutter中生成波形图。您可以在此blog post上查看示例。样本中使用的波形数据为JSON。
答案 1 :(得分:0)
我正在寻找一种聆听麦克风并使用颤振进行音频分析的方法,我在这里找到了一些可能对您有所帮助的方法:
是两篇文章的序列,逐步解释如何使用 Flutter 绘制波形
生成波形数据 - 音频表示: https://matt.aimonetti.net/posts/2019-06-generating-waveform-data-audio-representation/
在 Flutter 中绘制波形:https://matt.aimonetti.net/posts/2019-07-drawing-waveforms-in-flutter/
希望对你有帮助