Avatar billede grafikeren Nybegynder
20. august 2004 - 00:37 Der er 11 kommentarer og
1 løsning

Avanceret lyd-loop

Hej!

Jeg er ved at lege med lidt avanceret loop af lyd. Ideen er den, at jeg har skrevet nogle ostinater-loops på omkring 10 sek. stykket. Loop 1 kører et minut (imens loades loop2) og derefter tager loop2 over (imens loades loop3)- osv...

Jeg har det meste af koden på plads. Den læser de forskellige loops fra forskellige swf filer. Jeg har kørt loopsne bare med frames, så den i slutningen af hver lydstump sendes tilbage til starten. Når en hvis tid er gået, så stoppes loopet i slutningen og det næste loop sættes i gang. Det ser ud til at virke fint, men ikke når jeg kommer over i Explore. Nu passer loopet ikke længere, det er enten for kort eller for langt... øvøv.

Hvis jeg skal bruge den indbyggede loops funktion, og fx loope sange 8 gange, hvordan sender jeg den så videre efter de 8 gange?? Så skal den jo køre et nyt loop?

Der må være noget actionscript, som kan køre det... Barklund? Anyone? :o)
Avatar billede grafikeren Nybegynder
20. august 2004 - 00:40 #1
Er der evt. andre måder? Har aldrig arbejdet med loops før, derfor kastede jeg mig ud i dette... :o)
Avatar billede grafikeren Nybegynder
20. august 2004 - 00:43 #2
Hvis jeg nu bare bruger frames metoden til loopet og jeg får den tilpasset til Explore, kan jeg så være sikker på at det bare virker? Altså at den looper det rigtige sted?
Avatar billede grafikeren Nybegynder
20. august 2004 - 00:49 #3
"Puck maxi" løsningen med frames holder vist ikke... Den varierer hele tiden. Så skal det løses på anden måde.
Avatar billede _michael_ Nybegynder
20. august 2004 - 01:57 #4
Giv dine lyde et linkage-navn i library.

Dernæst skal du fortælle flash, at den skal bruge lydene.
Det gør du eks. ved at sætte følgende på en frame:

grunge = new Sound();
grunge.attachSound("grunge");
grunge.start(0, 3)

grunge er linkage-navnet fra library og navnet på dit lyd-object.
grunge.start(0,3) betyder, at den starter lyden fra 0 sekunder - stod der eks. 2 var det 2 sek inde i lyden. Det sidste 3-tal betyder, at lyden skal gentages 3 gange.
Avatar billede grafikeren Nybegynder
20. august 2004 - 08:52 #5
Tak for dit svar.

Jeg forstår stadig ikke helt, hvordan jeg får den til at spille de andre loops lige bagefter...

loop1 = new Sound();
loop1.attachSound("loop1");
loop1.start(0, 4);
// wenn loop1 stops
loop2 = new Sound();
loop2.attachSound("loop2");
loop2.start(0, 1);
// wenn loop2 stops
loop1.start(0, 4);
// wenn loop1 stops
loop2.start(0, 1);

...??
Avatar billede barklund Nybegynder
20. august 2004 - 10:12 #6
Kig i manuelen og find den fantastiske event - onSoundComplete. Så burde det nok være til at finde ud af, men et lille bud:

var sange = new Array();
sange.push({linkage: "sang1", loops: 3});
sange.push({linkage: "sang2", loops: 1});
sange.push({linkage: "sang3", loops: 5});
var sang_pointer = 0;
var loop_pointer = -1;
function næsteSang() {
    if (loop_pointer < sange[sang_pointer].loops) {
        loop_pointer++;
    } else {
        loop_pointer = 0;
        sang_pointer++;
        sang_pointer %= sange.length;
    }
    lyd.attachSound(sange[sang_pointer].linkage);
    lyd.start();
}
var lyd = new Sound(this);
lyd.onSoundComplete = næsteSang;
næsteSang();

Så skal du bare have tre lyde i library med linkage navne sang1, sang2 og sang3.

Det er ikke testet men burde nogenlunde virke ;)

--
Morten Barklund
Avatar billede grafikeren Nybegynder
20. august 2004 - 10:35 #7
Det virker fint. :o) Jeg havde næsten løst det via frames og timers, men det ville aldrig rigtige blive godt! En funktion er meget bedre.

Den virker dog lidt "sløv", den venter gerne 0,1 sekund inden den looper forfra. Kan dette optimeres? Min loop fil er perfekt længde, men jeg kan da godt "tweeke" den lidt her. :o)
Avatar billede grafikeren Nybegynder
20. august 2004 - 10:46 #8
Jeg cutter bare lydfilen lidt i længde. Læg et svar Barklund.
Avatar billede barklund Nybegynder
20. august 2004 - 11:48 #9
onSoundComplete er fuldstændigt skarp på filens længde, så du har nok lidt tom lyd i den ene eller anden ende - det gør de fleste lydprogrammer desværre automatisk.
Avatar billede grafikeren Nybegynder
20. august 2004 - 12:36 #10
... jeg bruger Logic og Sony Sound Forge. Jeg har bare lytte til hvordan det lyder i Sound Forge. Men det er trimmet nu.

Mange tak for hjælpen. Har købt mig Colin Moocks bog, så jeg kan få lært noget seriøst action script. Det glæder jeg mig til!
Avatar billede barklund Nybegynder
20. august 2004 - 13:36 #11
SoundForge lægger også få millisekunder lyd ind i enden. Lame er en batch converter wav2mp3, som ikke lægger ekstra "hul" ind i enderne. Det er open-source og kan fås fra http://lame.sourceforge.net

Men tark for points ;)
Avatar billede barklund Nybegynder
20. august 2004 - 13:36 #12
(så vidt jeg ved efter at have snakket med lydtekniker herindefra :))
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester