| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #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 |
| | |
| | #2 (permalink) |
| Assegai-Pilot 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: |
| | |
| | #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();
} |
| | |
| | #4 (permalink) |
| Assegai-Pilot 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 |
| | |
| | #5 (permalink) |
| vermisst ein e 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 |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |