Стоячая волна: бесконечный цикл MP3 - PullRequest
0 голосов
/ 26 августа 2011

Как бесконечно зациклить mp3-файл в стоячей волне .Я пробовал LoopSource с SoundGenerators и т. Д., Но мне не повезло.Я не могу найти примеры использования в документации или онлайн, где кто-то зацикливает бесконечно mp3:

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

Спасибо

Ответы [ 4 ]

1 голос
/ 29 августа 2011

Я автор библиотеки. Поскольку многие задают этот вопрос, я добавил страницу, отвечающую на этот вопрос, в вики-сайте github для проекта.

https://github.com/maxl0rd/standingwave3/wiki/How-to-use-loopsource

Надеюсь, это поможет.

0 голосов
/ 30 января 2015

ОК, так как у меня были ужасные попытки зациклить аудиоисточник на основе документации и небольшого количества помощи в Интернете, я решил создать свою собственную библиотеку дополнений Standing Wave 3. Он не идеален, но он выполняет свою работу, и в этом отношении на уровне байтов; Никаких таймеров цикла или чего-то еще. Он работает, беря звук с начальной и конечной точками цикла. Затем он клонирует выборку цикла несколько раз в зависимости от времени, указанного в секундах. Это должно быть прямо в использовании. Это код для класса Main.as в "зацикливающийся" файл в папке "examples":

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.

        }

    }

}

Проверьте исходные файлы здесь: https://github.com/charlesclements/standingwave3-addons

0 голосов
/ 06 января 2015

Я пытался использовать информацию о том, как использовать петли здесь . Я могу воспроизвести свой звук, но он звучит только 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 голосов
/ 26 августа 2011

Похоже, что параметр AudioDescriptor функции LoopSource должен соответствовать параметру 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) из полного обработчика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...