【问题标题】:android java audio dsp sites or android sound library?android java 音频 dsp 网站或 android 声音库?
【发布时间】:2011-12-06 13:15:57
【问题描述】:

任何人都知道任何有用的链接来学习 android 的音频 dsp 吗? 还是声音库?

我正在尝试制作一个用于播放 wav 文件的基本混音器,但意识到我对 dsp 了解不够,而且我根本找不到任何适用于 android 的东西。

我有一个 wav 文件加载到一个字节数组和一个短循环上的 AudioTrack。 如何输入数据?

我希望这篇文章会被忽略,但值得一试。

    FileInputStream is = new FileInputStream(filePath);
                BufferedInputStream bis = new BufferedInputStream(is);
            DataInputStream dis = new DataInputStream(bis);

            int i = 0;

                while (dis.available() > 0) {
                    byteData[i] = dis.readByte(); //byteData

                  i++;
                }

 final int minSize = AudioTrack.getMinBufferSize( 44100, AudioFormat.CHANNEL_CONFIGURATION_STEREO, AudioFormat.ENCODING_PCM_16BIT ); 
           track = new AudioTrack( AudioManager.STREAM_MUSIC, 44100, AudioFormat.CHANNEL_CONFIGURATION_STEREO, AudioFormat.ENCODING_PCM_16BIT, 
             minSize, AudioTrack.MODE_STREAM);
           track.play();
           bRun=true;

        new Thread(new Runnable() {

            public void run() { 

                  track.write(byteData, 0, minSize);


            }

            }).start();

【问题讨论】:

    标签: android audio signal-processing


    【解决方案1】:

    我会试一试,因为几个月前我处于你的位置......

    如果您已经在字节数组中拥有 wav 文件音频样本,您只需将样本传递给音轨对象(查找 write() 方法)。

    要将音频混合在一起,您只需从每个轨道添加相同的内容。例如,将轨道 1 中的第一个样本添加到轨道 2,将轨道 1 中的第二个样本添加到轨道 2,依此类推。理想情况下,最终结果将是第三个数组,其中包含您传递给音轨实例的“写入”方法的添加样本。

    您必须注意此处的剪辑。如果您的数据类型为“短”,则允许的最大值为 32768。确保添加的样本不超过此限制的一种简单方法是执行加法并将结果存储在数据类型大于短的变量中(例如 int) 并评估结果。如果它大于 32768,则使其等于 32768 并将其转换回短。

    int result = track1[i] + track2[i];
    
    if(result > 32768) {
       result = 32768;
    }
    else if(result < -32768) {
        result = -32768;
    }
    
    mixedAudio[i] = (short)result;
    

    请注意上面的 sn-p 如何测试短路的最小范围。

    抱歉这里缺少格式,我在火车上用手机:-)

    祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-27
      • 2012-10-11
      • 1970-01-01
      相关资源
      最近更新 更多