Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-07-2009, 10:23   #1 (permalink)
Neuer User
 
Registriert seit: Feb 2007
Beiträge: 32
Sound in FP10

Hallo,

ich möchte was ganz einfaches machen: Sound generieren!! Soll ja mit dem FP10 Player gut klappen. Jedoch verstehe ich es nicht ganz.

Ich möchte die Möglichkeit haben, einen durchgehenden Ton einer bestimmten Frequenz mit kurzen Pausen (also ein dauer Piepen) generieren. Dabei möchte ich die Tonhöhe sowie die Länge der Pausen definieren können. (piep piep piep...)

Hat jemand sowas schonmal gemacht?

Gruss
tengelman ist offline   Mit Zitat antworten
Alt 13-07-2009, 04:58   #2 (permalink)
Assegai-Pilot
 
Benutzerbild von blazenizer
 
Registriert seit: Oct 2006
Ort: 糞箱
Beiträge: 150
Habe vor einiger Zeit mal damit angefangen aber nicht viel draus geworden.
Allemal generiert folgendes Skript nen Sound und malt dir ein paar Blöcke auf die Bühne, über die du auf Klick die Tonhöhe verändern kannst. Willst den Ton ausschalten, musst "ups" auf 0 setzen. Latenz ist leider grottig

PHP-Code:
import flash.display.*;
import flash.events.*;
import flash.media.*;

var 
sound:Sound;
var 
noise:Number 0;
sound = new Sound();
sound.addEventListener(SampleDataEvent.SAMPLE_DATAonCallback);
var 
ups:Number 80;

function 
onCallback(e:SampleDataEvent):void {
    for (var 
i:int=0i<8192i++) {
        
noise += ups 44100;
        var 
sample:Number=noise*Math.PI*2;
        
e.data.writeFloat(Math.sin(sample));
        
e.data.writeFloat(Math.sin(sample));
    }
}
sound.play();

for(var 
i:uint 110i++) {
    var 
abc:MovieClip = new MovieClip();
    
abc.graphics.beginFill(0xff0000);
    
abc.graphics.drawRect(0,0,50,150);
    
abc.graphics.endFill();
    
abc.+= (i-1)*60;
    
abc.i
    
abc.addEventListener(MouseEvent.MOUSE_DOWNmultiply);
    
addChild(abc);
}
function 
multiply(e:MouseEvent) {
    
ups e.target.80;

blazenizer ist offline   Mit Zitat antworten
Alt 13-07-2009, 09:14   #3 (permalink)
Neuer User
 
Registriert seit: Feb 2007
Beiträge: 32
Hallo,

danke für den Code!!
Ich habe jetzt mal einen kleinen Timer eingebaut der mir die Pausen macht. Leider ist der sehr ungenau geworden und pausiert sehr unregelmäßig. Was kann man da machen?
Code:
import flash.display.*;
import flash.events.*;
import flash.media.*;

var sound:Sound;
var noise:Number = 0;
sound = new Sound();
sound.addEventListener(SampleDataEvent.SAMPLE_DATA, onCallback);
var ups:Number = 80;

var isBreaking:Boolean = false;
var tempups:Number;

var timer:Timer = new Timer(200,0);
timer.addEventListener(TimerEvent.TIMER,timerhandler);

function timerhandler(e:TimerEvent):void{
	if(isBreaking){
		ups = tempups;
		isBreaking = false;
	}else{
		ups = 0;
		isBreaking = true;
	}
}

function onCallback(e:SampleDataEvent):void {
    for (var i:int=0; i<8192; i++) {
        noise += ups / 44100;
        var sample:Number=noise*Math.PI*2;
        e.data.writeFloat(Math.sin(sample));
        e.data.writeFloat(Math.sin(sample));
    }
}
sound.play();

for(var i:uint = 1; i < 10; i++) {
    var abc:MovieClip = new MovieClip();
    abc.graphics.beginFill(0xff0000);
    abc.graphics.drawRect(0,0,50,150);
    abc.graphics.endFill();
    abc.x += (i-1)*60;
    abc.i = i; 
    abc.addEventListener(MouseEvent.MOUSE_DOWN, multiply);
    addChild(abc);
}
function multiply(e:MouseEvent) {
    ups = e.target.i * 80;
	tempups = ups;
	if(!timer.running) timer.start();
}
Gruss m.
tengelman ist offline   Mit Zitat antworten
Alt 13-07-2009, 09:31   #4 (permalink)
Assegai-Pilot
 
Benutzerbild von blazenizer
 
Registriert seit: Oct 2006
Ort: 糞箱
Beiträge: 150
Das ist besagte Latenzzeit. Bei mir dauert das ne halbe Sekunde bis ein neuer SampleDataEvent gefeuert wird und damit die Änderungen sich auf die Kurve auswirken. Deswegen hab ich da auch nicht weiter mit gearbeitet.
Laut Adobe liegt das an der Sample-Rate. Lies mal den ersten Abschnitt.

Zum Ein- und Ausschalten dreh doch lieber die Lautstärke auf und ab. Stichwort SoundChannel, SoundTransform
blazenizer ist offline   Mit Zitat antworten
Alt 13-07-2009, 15:53   #5 (permalink)
vermisst ein e
 
Benutzerbild von kRizzl
 
Registriert seit: Oct 2007
Beiträge: 774
bei sound-geschichten arbeite immer sample-basiert und nicht zeit-basiert. wenn du verfolgst, wie viele samples du generiert und uebergeben hast, kannst du dir sicher sein, dass immer so-und-so-viel hoerbares durch die boxen kommt.
__________________
krisrok.de
kRizzl ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 16:42 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele