【问题标题】:Reversing a sound with Processing and Minim使用 Processing 和 Minim 反转声音
【发布时间】:2014-05-28 10:53:26
【问题描述】:

我需要在 Processing 中创建一个程序来反转加载的 .mp3 文件,避免已经实现的抽象函数(例如,反转给定声音的 Minim 函数,尽管我仍然没有没有找到这样的)。我现在已经尝试了很多方法,但它仍然无法播放。

我的最后一种方法是使用Minim.loadFileIntoBuffer() 函数获取float[],然后我使用Processing 的reverse() 函数反转缓冲区。然后,我使用相同的float 数组和原始文件的格式创建一个AudioSample。然后我继续使用trigger() 播放样本。

这是一个sn-p:

Minim minim;
AudioPlayer songPlayer;
MultiChannelBuffer song;
AudioSample reversedSong;
float[] reversedBuffer, mixBuffer;

void setup() {
  size(512, 200);
  minim = new Minim(this);

  songPlayer = minim.loadFile("sound.mp3");

  // loadFileIntoBuffer changes the MultiChannelBuffer's parameters to
  // match the file's, so init values doesn't really matter
  song = new MultiChannelBuffer(10, 3);
  minim.loadFileIntoBuffer("sound.mp3", song);

  mixBuffer = songPlayer.mix.toArray();
  reversedBuffer = reverse(mixBuffer);

 reversedSong = minim.createSample(reversedBuffer, songPlayer.getFormat());
 reversedSong.trigger();
} 

我也尝试了一些不同的解决方案。即直接将文件导入AudioSample。我相信我已经使用过的大多数方法的问题在于我只能访问AudioBuffer整个声音的一部分。因此,我无法扭转这一切。

你知道有什么方法吗?

【问题讨论】:

  • 不要将其添加为评论。改为编辑您的帖子

标签: processing minim


【解决方案1】:

好的,我最终通过一个更简单的过程做到了。

我得到了原始样本的通道并直接操作它们。首先,构造一个与通道大小相同的新floatarray。然后,使用相同的过程将值放回原始值。

它远不是一个漂亮的实现,它可能比它可能的时间复杂。但它确实有效,因为我仅限于使用没有实现的高级函数。

void revert() {
  /* sample is an AudioSample, created in setup() */
  float[] leftChannel = sample.getChannel(AudioSample.LEFT);
  float[] rightChannel = sample.getChannel(AudioSample.RIGHT);

  float[] leftReversed = new float[leftChannel.length];
  float[] rightReversed = new float[rightChannel.length];

  int size = leftChannel.length-1;

  /*inverts the array*/
  for(int i=0; i<=size; i++){
    leftReversed[i] = leftChannel[size-i];
    rightReversed[i] = rightChannel[size-i];
  }
  /*copies it to the original array*/
  for(int i=0; i<size; i++){
    leftChannel[i] = leftReversed[i];
    rightChannel[i] = rightReversed[i];
  }  
}

【讨论】:

    猜你喜欢
    • 2014-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多