定在波:MP3の無限ループ

actionscript-3 audio
定在波:MP3の無限ループ

standing waveでmp3ファイルを無限にループするにはどうすればよいですか。 SoundGeneratorsなどでLoopSourceを試しましたが、運がありませんでした。 ドキュメンテーションまたはオンラインで無限のmp3をループしている人の使用例は見つかりません:

var player:AudioPlayer = new AudioPlayer()
const generator:SoundGenerator = new SoundGenerator(sound)
source = new LoopSource(new AudioDescriptor(), generator)
player.play(source)

ありがとう

  0  0


ベストアンサー

私はlibの著者です。 多くの人がこの質問をするので、プロジェクトのgithub wikiにこの質問に答えるページを追加しました。

お役に立てば幸いです。

1


LoopSource`関数の AudioDescriptor`パラメーターは `soundGenerator`パラメーターと一致する必要があるようです。 ドキュメントによると、新しい「AudioDescriptor」をインスタンス化すると、「channels」および「rate」プロパティが「NaN」に設定されます(「uint」で入力されますか?)。 とにかく、これが代わりに機能するかどうかを確認してください:

var player:AudioPlayer = new AudioPlayer()
const generator:SoundGenerator = new SoundGenerator(sound)
source = new LoopSource(generator.descriptor, generator)
player.play(source)

それ以外に、 `AudioPlayer`クラスにはcompleteイベントが含まれています。これは、オーディオソースの再生が終了したときに送出されます。 ブール値のスイッチを使用して独自のループを設定し、完全なハンドラーから `play(source:IAudioSource)`を呼び出すことができます。

0


How-to-use-loopsource info https://github.com/maxl0rd/standingwave3/wiki/How-to-use-loopsource [こちら]を使用しようとしています。 サウンドを再生できますが、ループは3回しかありません。 考えですか?

import com.noteflight.standingwave3.performance.ListPerformance;
import com.noteflight.standingwave3.elements.AudioDescriptor;
import com.noteflight.standingwave3.performance.AudioPerformer;
import com.noteflight.standingwave3.elements.IAudioSource;
import com.noteflight.standingwave3.sources.SineSource;
import com.noteflight.standingwave3.output.AudioPlayer;
import hype.framework.behavior.AbstractBehavior;
import com.greensock.loading.LoaderMax;
import com.greensock.loading.MP3Loader;
import com.noteflight.standingwave3.sources.LoopSource;
import com.noteflight.standingwave3.elements.Sample;
import flash.media.Sound;
import com.greensock.events.LoaderEvent;
import com.demonsters.debugger.MonsterDebugger;
import flash.events.Event;


var player:AudioPlayer = new AudioPlayer();
var loader:LoaderMax = new LoaderMax( { onComplete:onComplete } );
loader.append( new MP3Loader( "../deploy/assets/audio/Letter_A1.mp3", { autoPlay:false } ) );
loader.load();


function onComplete(e:LoaderEvent):void
{

    var mySound:Sound = e.currentTarget.content[ 0 ] as Sound;
    var length:Number = mySound.length * 44.1;
    var mySample:com.noteflight.standingwave3.elements.Sample = new com.noteflight.standingwave3.elements.Sample( new AudioDescriptor, length );

    mySample.extractSound( mySound, 0, length ); // now all of the Sound's data is in this Sample

    // LoopSource
    var myLoop:LoopSource = new LoopSource( new AudioDescriptor( 44100, 2 ), mySample );
    myLoop.firstFrame = 1;
    myLoop.startFrame = 1;
    myLoop.endFrame = myLoop.frameCount;

    // Play.
    player.play( myLoop );

}

0


OK、ドキュメンテーションとわずかなオンラインヘルプに基づいてオーディオソースをループしようとしていたので、私は独自のStanding Wave 3アドオンライブラリを作成することにしました。 それは完璧ではありませんが、仕事を成し遂げます。ループタイマーなどはありません。 これは、開始ループポイントと終了ループポイントでサウンドを取り込むことによって機能します。 次に、秒単位の時間に基づいてループサンプルを何度も複製します。 使い方は簡単です。 これは、 “examples”フォルダ内の “looping”ファイル内のMain.asクラスのコードです。

package
{

    // Imports.
    import com.greensock.events.LoaderEvent;
    import com.greensock.loading.LoaderMax;
    import com.greensock.loading.MP3Loader;
    import flash.display.Sprite;
    import flash.events.Event;
    import com.greensock.TweenMax;
    import com.SW3.gadget.LoopGadget;
    import flash.media.Sound;


    // Class.
    public class Main extends Sprite
    {

        // Vars.
        private var loader:LoaderMax;// Using LoaderMax for ease of use.


        // Constructor.
        public function Main()
        {

            trace("Main");

            loader = new LoaderMax( { name:"audio", onComplete:onSoundsLoaded } );
            loader.append( new MP3Loader( "assets/Beat.mp3", { autoPlay:false } ) );
            loader.append( new MP3Loader( "assets/Clap.mp3", { autoPlay:false } ) );
            loader.append( new MP3Loader( "assets/Boom.mp3", { autoPlay:false } ) );
            loader.load();

        }


        private function onSoundsLoaded(e:LoaderEvent):void
        {

            trace("onSoundsLoaded");
            var looping:LoopGadget = new LoopGadget;
            looping.addLoopSound( "Beat", e.currentTarget.content[ 0 ] as Sound, 0, 10 );
            looping.addLoopSound( "Clap", e.currentTarget.content[ 1 ] as Sound, 0, 10 );
            //looping.addLoopSound( "Boom", e.currentTarget.content[ 2 ] as Sound, 0, 10 ); // Commented out to test possible error.

            looping.playLoop( "Beat" );// Play the "Beat" loop.
            looping.playLoop( "Clap" );// Play the "Clap" loop.
            looping.stopLoop( "Beat" );// Stop the "Beat" loop.
            looping.playLoop( "Beat" );// Play the "Beat" loop.
            looping.playLoop( "Beat" );// Play the "Beat" loop again to test if it would error out..

            looping.stopAllLoops();// Stop all the loops.
            looping.playLoops( [ "Beat", "Clap", "Boom" ] );// Play all the loops. Test to see if "Boom" will error out.

        }

    }

}

ここにあるソースファイルをチェックしてください。

0


タイトルとURLをコピーしました