【问题标题】:How to play a melody in android?如何在android中播放旋律?
【发布时间】:2017-02-11 10:53:32
【问题描述】:

如何在 android 5 中播放旋律,比如 440Hz、480Hz、500Hz、440Hz? 其他系统有……像“声音(440)”。 还是必须用 AudioTrack 合成?

【问题讨论】:

标签: android audio


【解决方案1】:

是的,您必须使用 @zed 指出的 AudioTrack 来合成它。

这里有一些可以帮助你的代码

 final static double scale = 1;
 final static int duration = 50; // Seconds
 final static int sampleRate = 22050; // Hz (maximum frequency is 7902.13Hz (B8))
 final static int numSamples = duration * sampleRate;
 final static double samples[] = new double[numSamples];
 final static short buffer[] = new short[numSamples];


double note = scale * frequency;
for (int i = 0; i < numSamples; ++i)
 {
      samples[i] = Math.sin(2 * Math.PI * i / (sampleRate / note)); // Sine wave
      buffer[i] = (short) (samples[i] * Short.MAX_VALUE);  // Higher amplitude increases volume
 }

audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,sampleRate,AudioFormat.CHANNEL_OUT_MONO,
                AudioFormat.ENCODING_PCM_16BIT, buffer.length,AudioTrack.MODE_STATIC);
audioTrack.write(buffer, 0, buffer.length);

【讨论】:

    猜你喜欢
    • 2021-10-13
    • 2016-04-28
    • 2011-06-05
    • 1970-01-01
    • 2012-03-26
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多