App inventor 2 en español
Cómo programar los teléfonos móviles con Android
mediante App inventor 2 - Juan Antonio Villalpando
-- Tutorial de iniciación de App Inventor 2 en español --
Volver al índice del tutorial
____________________________
299I.- Extensión. FFT. Forma de onda. Pico. RMS. Visualizador.
com.KIO4_Visualizer.aix
p299I_Visualizer.aia (Esta app necesita el permiso MODIFY_AUDIO_SETTINGS, necesita estar instalada para su funcionamiento).
- Mediante la clase Visualizer de Android vamos a obtener el valor de pico, el valor medio rms, la descomposición de una señal mediante FFT y la forma de onda que emite un Player. También veremos códigos para obtener y cambiar el volumen de sonido.
- FFT es un proceso matemático para descomponer cualquier señal en una serie de señales sinusoidales.
- Fíjate en el dibujo, la señal Wave form se descompone en un número infinito de señales sinusoidales, cada una con cierta amplitud, frecuencia y desfase. En vez de representar esas señales con ondas sinusoidales en el dominio del tiempo, se representa con trazos verticales en el dominio de la frecuencia, es decir en el eje horizontal se representa la frecuencia de cada onda, la altura de cada trazo indica su amplitud.
- La descomposión de cualquier señal suele generar un infinito número de señales sinusoidales.
- Si sumamos todas esas ondas sinusoidales, obtendríamos la señal inicial.
- Si sumamos las primeras ondas sinusoidales, obtendríamos la señal inicial distorsionada.
- Si la señal inicial estuviera formada por un cierto número de señales sinusoidales puras, en su representación tendremos ese cierto número de trazos.
- Además del gráfico de Amplitudes en el dominio de la frecuencia, también se podemos obtener otro gráfico con los desfase de cada una de las señales, eso no lo veremos en este tutorial.
- Para realizar esta extensión utilizaremos la clase Visualizer de Android.
https://developer.android.com/reference/android/media/audiofx/Visualizer
- En tiempo real mediante un
setDataCaptureListener podemos obtener una lista de amplitudes mediante onWaveFormDataCapture y/o una lista de valores FFT mediante onFftDataCapture.
- El número de valores obtenidos se puede establecer mediante setCaptureSize, este número lo estableceremos en 128, 256, 512 o 1024.
- Además también podemos obtener los valores de pico y medios (rms) de la señal, en mB, es decir en mili Belios. Y también el paso de frecuencia, es decir la diferencia entre una frecuencia y la anterior.
- Para realizar el proceso matemático se ha de muestrear la señal, es decir tomar partes de la señal, ya que al ser analógica, si tomáramos toda la señal sería necesario analizar muchísimos puntos de la señal, asi que las muestreamos. Segén el critero de Nyquist, se necesita al menos muestrear la señal a una frecuencia mayor que el doble de la señal. La señal de audio se compone teóricamente de frecuencias entre 20 Hz y 22 kHz, por lo cual se suele muestrear (SamplingRate) a 44,1 kHz.
- Otro concepto es la cantidad de muestras capturadas(CaptureSize), este número suele ser 128, 254, 512 o 1024 en nuestro código.
- El paso de frecuencia (FrequencyStep), es la separación entre una frecuencia y otra, la obtenemos mediante SamplingRate / CaptureSize, si hacemos 44100 / 128 obtendremos una separación de 344 Hz.
___________________________
0.- Bloques de la extensión.
___________________________
1.- Ejemplo de app.
- Esta extensión necesita el permiso MODIFY_AUDIO_SETTINGS, por lo cual necesita estar instalada para su funcionamiento.
- MIT Companion no tiene el permiso MODIFY_AUDIO_SETTINGS, por eso no funciona en Companion.
- Podemos añadirle el permiso MODIFY_AUDIO_SETTINGS a MIT Companion, para eso necesita el proceso indicado en 127G2_androidmanifest.htm.
-También puedes bajar e instalar esta versión de MIT Companion que contiene el permiso MODIFY_AUDIO_SETTINGS mit-ai2-companion-2-63_2.apk.
___________________________
- Diseño.
___________________________
- Bloques.
___________________________
|