Comunidad de diseño web y desarrollo en internet online

detector de sonido con microfono en flash

Citar            
MensajeEscrito el 23 Abr 2012 01:57 pm
hola chicos de cristalab bueno de primera quisiera pedirles un favor ya que tengo un problema con un detector de sonido en flash y bueno mi problemas es que bueno al detectar el sonido mi dice cuando es muy alto o muy bajo el problema que tengo es el siguiente es que de muy bajo a muy fuerte cambia muy rapido y quisiera que fuera mas lento y bueno de todos modos les adjunto el archivo si es que me pueden ayudar

[url=http://dl.dropbox.com/u/13596377/detector%20de%20sonido.rar][/url]

Por ThonyLicht

3 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 23 Abr 2012 03:16 pm
Debieras ajustar el rango del algoritmo, a veces introducir alguna constante ayuda a evitar los picos

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 Abr 2012 03:24 pm
Hola, esto que pones en el link es as2 no as3, el código es muy sencillo y fácil de entender

Código ActionScript :

stop();
m = Microphone.get();
attachAudio(m);
m.setUseEchoSuppression(true);

sonido = new Sound ()
sonido.setVolume (0);

onEnterFrame = function () {
   if (m.activityLevel <= 9 ) {
      _root.texto6 = "No está hablando";
   }
      
   if (m.activityLevel > 10 and m.activityLevel <=29 ) {
      _root.texto6 = "Muy bajo";
   }
   
   if (m.activityLevel > 30 and m.activityLevel <= 70 ) {
      _root.texto6 = "Buen volumen";
   }
   
   if (m.activityLevel > 71) {
      _root.texto6 = "Muy fuerte";
   }      
}
Lo que quieres es configurar una alerta que cambiará en una caja de texto, cada vez que se cambie el volumen. Lo primero que tienes que saber es que el volumen va de 0 a 100, y ahora con mirar un pelín el código te darás cuenta de cómo está hecho.

Tienes 4 condicionales
1º Si el sonido es 9 o inferior la alerta es "No se está hablando"
2º Si el sonido está entre 10 y 29 la alerta es "Muy Bajo"
3º Si el sonido está entre 30 y 70 la alerta es "Buen Volumen"
4º Si el sonido es mayo a 71 la alerta es "Muy Fuerte"
--En esta línea de código en prticular le falta un =

Código ActionScript :

if (m.activityLevel > 71) {
//Debería ser
if (m.activityLevel >= 71) {


Sólo tienes que cambiar esos números a tu antojo. Para que las alertas cambien cuando tu quieras.

Un saludo.

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 23 Abr 2012 03:27 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 23 Abr 2012 04:20 pm
Felicitaciones Abducted :lol:

Por Finvara

807 de clabLevel



 

EL reino de los duendes...

chrome
Citar            
MensajeEscrito el 23 Abr 2012 04:26 pm
Clap, clap, clap... Gracias gracias graciassss

Jajajjajajajajja

Ainnns, que pardillo soy.
:oops: :oops: :oops:

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 23 Abr 2012 04:29 pm

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 24 Abr 2012 07:27 am
No se si lo has hecho aposta, o ....
Pero vamos, pero aquí tu privado a ver si alguien te puede echar una mano.

Aquí puedes encontrar un tuto que hice hace un par de días, donde repaso velozmente como se usan los métodos de un objeto:
Métodos del objeto Date

ThonyLicht - (Por privado) escribió:

Primero quiero darte las gracias por responder disculpa si hice algo que infringiera las reglas del sitio en en pedir ayudar pero es urgente mira sobre el codigo que me dijiste que era sencillo eso ya lo sabia ya que = tengo conocimiento de pseudolenguaje lo que nose muy bn es como utilizar los metodos de flash te adjunto este link en el que indica el uso de otros metodos osea de modo que se = que estaria pidiendo que me ayudaen con una algoritmo sin hacer nada yo pero bueno osea la idea no es esa pero ya independiete de eso la ideas es que no lo hagas pero quisiera que me dieras una ayuda con un tutorial como para duraznos para usar actionscript y bueno tambien de como se pueden ver estos codigos de ejemplo que da adobe ya que nose muy bn como usar la infraestructura de flash professional y tampoco de como agregarle librerias te adjuntare el link

Objeto Timer

Aqui te copio un codigo en action script que tiene librerias y de las cuales nose como agregarlas al flash professional espero qeu em entiendas mis dudas pls!!!

Código ActionScript :

package {
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.text.TextFieldType;
    import flash.text.TextFieldAutoSize;
    import flash.utils.Timer;
    import flash.events.TimerEvent;
    import flash.events.Event;

    public class Timer_constructorExample extends Sprite {
            private var statusTextField:TextField = new TextField();
            private var inputTextField:TextField = new TextField();
            private var delay:uint = 30000;
            private var repeat:uint = 3;
            private var myTimer:Timer = new Timer(delay, repeat);

        public function Timer_constructorExample() {
            inputTextField.x = 10;
            inputTextField.y = 10;
            inputTextField.border = true;
            inputTextField.background = true;
            inputTextField.height = 200;
            inputTextField.width = 200;
            inputTextField.multiline = true;
            inputTextField.wordWrap = true;
            inputTextField.type = TextFieldType.INPUT;

            statusTextField.x = 10;
            statusTextField.y = 220;
            statusTextField.background = true;
            statusTextField.autoSize = TextFieldAutoSize.LEFT;

            myTimer.start();
            statusTextField.text = "You have " + ((delay * repeat) / 1000)
                                 + " seconds to write your response.";

            myTimer.addEventListener(TimerEvent.TIMER, timerHandler);
            myTimer.addEventListener(TimerEvent.TIMER_COMPLETE, completeHandler);

            addChild(inputTextField);
            addChild(statusTextField);
        }

        private function timerHandler(e:TimerEvent):void{
            repeat--;
            statusTextField.text = ((delay * repeat) / 1000) + " seconds left.";
        }

        private function completeHandler(e:TimerEvent):void {
            statusTextField.text = "Times Up.";
            inputTextField.type = TextFieldType.DYNAMIC;
        }
    }
}

Un saludo.

Por Abducted

Claber

489 de clabLevel

3 tutoriales

Genero:Masculino  

Mentalidad Renovada

chrome
Citar            
MensajeEscrito el 24 Abr 2012 01:55 pm
La primera respuesta lo pone simple (yo pensé que los algoritmos eran mas complejos, como analisis de espectro) tienes un rango de 0 a 100, modifica los if según te parezca que tienen que ser los cambios.
Pero lo primero antes de preguntar es es saber redactar. No rompes ninguna regla ... pero no te haces entender. A lo mejor (viendo tu nick) tu pirmer idioma no es el español, considera foros en inglés, hay muchos y muy buenos

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 24 Abr 2012 02:10 pm
De primera mi idioma si es español segundo si creo que me exprese mal segundo se que son los if pero a lo que voy es uqe la sensibilidad que tiene el adobe detecar el sonido es mucha ya que a lo que voy si descargas el archivo que adjunte y hablas yo digo por decir: "gato feo" me dice muy bajo, no esta hblando , muy bajo, no esta hablando y asi varia muy rapido en lo que es senibilidad al detectar el sonido lo que quisiera es que cuando yo digo digo la misma frase se quede muy bajo supongamos un buen rato sin que varie tan rapido y eso quiere decir que ademas de tener los "if" tenga que agregarle otra sentencia como un "while" o "do while" bueno espero haberme explicado mejor y otras reconfirmo si hablo español y mi redaccion no es la mejor lo siento u.uU

PD: gracias por tu respuesta espero haber dejado un poco mas claro =)

Por ThonyLicht

3 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 24 Abr 2012 02:27 pm
Estas muestreando en un onEnterframe, es decir 24 veces por segundo por ejemplo suponiendo que esos sean los FPS de tu peli. En vez de usar onEnterFrame, metelo dentro de una función que llames por ejemplo cada segundo

var t:int = setInterval(muestrea, 1000);

Suponiendo que la función se llame muestrea. 1000 = 1 segundo, ya que son milisegundos. Disminuye la frecuencia de muestreo si te sigue pareciendo muy rápido

Jorge

PD: Oblígate a usar puntos y aparte y oraciones menores a 2 líneas para permitirle al lector entender el sujeto de la oración.

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 24 Abr 2012 06:24 pm
es lo mismo que el metodo timer cierto y oie me podrias dar un ejemplo para estar mas clarito pls!!! y discula por mi mala redaccion u.uU

Por ThonyLicht

3 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 24 Abr 2012 06:50 pm
El setInterval ya te lo puse, luego cambia esta línea

onEnterFrame = function () {

por esta otra

muestrea = function () {

Y ya lo tienes, el resto igual. Timer es AS3 y entiendo que usas AS2. Modifica el tiempo seg{un quieras la frecuencia de muestreo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 24 Abr 2012 10:34 pm
Muchas gracias po tu ayuda me resulto =)

Por ThonyLicht

3 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.