2016-10-06 1 views
0

thisisatest.wavファイルから再生するmyWordArrayという配列の順序を逆にする必要があります。 「これはテストです」ではなく、「テストはこれです」を再生する必要があります。SoundSample配列を逆にする方法は?

public void playReverseOrder(int pause) throws InterruptedException { 
     Sound orig = new Sound(); 
     int length = myWordArray.length; 

     for (int i = 0, source = length - 1; i < length && source > 0; i++, source--) { 
      myWordArray[i].setSampleValueAt(i, orig.getSampleValueAt(source)); 
      myWordArray[i].blockingPlay(); 
      Thread.sleep(pause); 
     } 

    } 

私のロジックは、元のソースデクリメントとして前方にインデックスiをインクリメントする長さを使用して、私は新しいサウンドを作成することです。それは前進しますが、私は言葉を逆にすることはできません。私は、新しいSound内のmyWordArrayのサンプルを取得することを考えました(myWordArray.getSamples())。しかし、それはうまくいかず、私はパラメータ内のファイルにアクセスしようとしますが、テストハーネス内で手動でファイルを選択します。

+0

逆転させるのではなく逆方向にループバックするのはどうですか? –

+0

「これはテストですか?」と思っていますか?または「テストはこれですか? –

+0

申し訳ありませんが、私はそれを台無しにしました。私は "テストはこれです"と期待しています。 –

答えて

0

私はあなたがtest a is thisを意味すると仮定しています。これはより困難な問題であり、以下で説明します。 tset a si sihtのようにしたい場合は、単純に配列の内容を逆順に並べ替えることができます。注意してください、この音は分かりません。あなたのコードで

 myWordArray[i].blockingPlay(); 
     Thread.sleep(pause); 

、私はあなたがこれを必要としないと思います。

あなたはtest a is thisに興味がある場合、プロセスはこのようなものになるだろう:

  1. サウンドファイル内の単語の検索数、は、オーディオ信号処理の知識が少し
  2. マーク彼らの境界を必要と
  3. 今、半分の作業が完了しました。残りの部分だけが逆の順序で単語の音を再生します。
  4. Soundをもう1つ作成し、すべてのセグメント化された単語で、の逆の順序でsamples配列に入力します。完了しました。
関連する問題