Pārlūkot izejas kodu

README-es.md edited on August 3, 2016 at 8:45am

Jose R Ortiz Ubarri 8 gadus atpakaļ
vecāks
revīzija
af377c05b8
1 mainītis faili ar 25 papildinājumiem un 26 dzēšanām
  1. 25
    26
      README-es.md

+ 25
- 26
README-es.md Parādīt failu

4
 ![main2.png](images/main2.png)
4
 ![main2.png](images/main2.png)
5
 ![main3.png](images/main3.png)
5
 ![main3.png](images/main3.png)
6
 
6
 
7
-[Verano 2016 - Ive]
7
+[Verano 2016 - Ive - Coralys]
8
 
8
 
9
-Los arreglos de datos (*arrays*) nos facilitan guardar y trabajar con grupos de datos del mismo tipo. Los datos se guardan en espacios de memoria consecutivos a los que se puede acceder utilizando el nombre del arreglo e índices o suscritos que indican la posición en que se encuentra el dato. Las estructuras de repetición nos proveen una manera simple de acceder a los datos de un arreglo. En la experiencia de laboratorio de hoy te expondrás a algoritmos de procesamiento de sonido, simples pero ingeniosos, para practicar el uso de ciclos en la manipulación de arreglos.
9
+Los arreglos de datos (*arrays*) nos facilitan guardar y trabajar con grupos de datos del mismo tipo. Los datos se guardan en espacios de memoria consecutivos a los que se puede acceder utilizando el nombre del arreglo con índices o suscritos que indican la posición en la que se encuentra el dato. Las estructuras de repetición nos proveen una manera simple de acceder a los datos de un arreglo. En la experiencia de laboratorio de hoy, te expondrás a algoritmos de procesamiento de sonido, simples pero ingeniosos, para practicar el uso de ciclos en la manipulación de arreglos.
10
 
10
 
11
 
11
 
12
 Esta experiencia de laboratorio es una adaptación de un "nifty assignment" presentado por Daniel Zingaro en [1]. 
12
 Esta experiencia de laboratorio es una adaptación de un "nifty assignment" presentado por Daniel Zingaro en [1]. 
14
 
14
 
15
 ## Objetivos:
15
 ## Objetivos:
16
 
16
 
17
-1. Practicar el  uso de ciclos en la manipulación de arreglos.
17
+1. Practicar el uso de ciclos en la manipulación de arreglos.
18
 
18
 
19
 2. Aprender algoritmos simples para procesar sonido.
19
 2. Aprender algoritmos simples para procesar sonido.
20
 
20
 
28
 
28
 
29
 1. Repasado los conceptos relacionados a arreglos y ciclos.
29
 1. Repasado los conceptos relacionados a arreglos y ciclos.
30
 
30
 
31
-2. Estudiado los atributos `left` y `right` de la clase `QAudioBuffer::S16S` de  la librería multimedios de `Qt`.
31
+2. Estudiado los atributos `left` y `right` de la clase `QAudioBuffer::S16S` de la librería de multimedios de `Qt`.
32
 
32
 
33
 3. Estudiado los conceptos e instrucciones para la sesión de laboratorio.
33
 3. Estudiado los conceptos e instrucciones para la sesión de laboratorio.
34
 
34
 
35
-4. Tomado el quiz Pre-Lab que se encuentra en Moodle.
35
+4. Tomado el quiz Pre-Lab, disponible en Moodle.
36
 
36
 
37
 ---
37
 ---
38
 
38
 
40
 
40
 
41
 ## Procesamiento de sonido digital
41
 ## Procesamiento de sonido digital
42
 
42
 
43
-El sonido es una vibración que se propaga en medios elásticos tales como el aire, el agua y los sólidos. Las ondas sonoras son generadas por una fuente de sonido como por ejemplo la vibración del diafragma de una bocina de sonido [2]. Las ondas de sonido consisten de segmentos de alta y baja presión llamados compresiones y rarefacciones respectivamente.
43
+El sonido es una vibración que se propaga en medios elásticos tales como el aire, el agua y los sólidos. Las ondas sonoras son generadas por una fuente de sonido como por ejemplo, la vibración del diafragma de una bocina de sonido [2]. Las ondas de sonido consisten de segmentos de alta y baja presión llamados compresiones y rarefacciones, respectivamente.
44
 
44
 
45
-Los micrófonos convierten las ondas de sonido a señales eléctricas. Estas señales eléctricas pueden digitalizarse, o sea, pueden ser convertidas a sucesiones de números, en donde cada número representa la intensidad de la señal eléctrica en un momento en el tiempo. La *razón de la muestra* es el número de muestras de la señal de sonido tomadas en un segundo. Por ejemplo, para obtener la calidad de sonido de una grabación estéreo de CD se usa una razón de muestra de 44,100 muestras por segundo. Esto significa que en cada segundo, para cada uno de los canales (izquierdo y derecho), se toman 44,100 muestras de sonido y se convierten a números.
45
+Los micrófonos convierten las ondas de sonido a señales eléctricas. Estas señales eléctricas pueden digitalizarse, o sea, pueden ser convertidas a sucesiones de números, en donde cada número representa la intensidad de la señal eléctrica en un momento en el tiempo. La *razón de la muestra* es el número de muestras de la señal de sonido, tomadas en un segundo. Por ejemplo, para obtener la calidad de sonido de una grabación estéreo de CD se usa una razón de muestra de 44,100 muestras por segundo. Esto significa que en cada segundo, para cada uno de los canales (izquierdo y derecho), se toman 44,100 muestras de sonido y se convierten a números.
46
 
46
 
47
 ---
47
 ---
48
 
48
 
53
 
53
 
54
 ---
54
 ---
55
 
55
 
56
-**Pregunta...**
56
+**Pregunta:**
57
 
57
 
58
-Supón que cada muestra de sonido se convierte a un número que ocupa 2 bytes. ?Cuántos bytes se necesitan para guardar una canción que dure exactamente 180 segundos y que fue grabada en calidad de CD estéreo? 
58
+Supón que cada muestra de sonido se convierte a un número que ocupa 2 bytes. ¿Cuántos bytes se necesitan para guardar una canción que dura exactamente 180 segundos y que fue grabada en calidad de CD estéreo? 
59
 
59
 
60
 **Respuesta:**
60
 **Respuesta:**
61
 
61
 
62
 180 segundos * 44,100 muestras/segundo * 2 bytes/muestra * 2 canales = 31,752,000 bytes = 31.75 MBytes.
62
 180 segundos * 44,100 muestras/segundo * 2 bytes/muestra * 2 canales = 31,752,000 bytes = 31.75 MBytes.
63
 
63
 
64
-Afortunadamente existen técnicas de compresión de datos como *MP3* y *ogg* que reducen la cantidad de memoria necesaria para guardar música con calidad de CD.
64
+Afortunadamente, existen técnicas de compresión de datos como *MP3* y *Ogg* que reducen la cantidad de memoria necesaria para guardar música con calidad de CD.
65
 
65
 
66
 ---
66
 ---
67
 
67
 
68
-Las **técnicas de procesamiento digital** se pueden utilizar para mejorar la calidad del sonido removiendo ruido y eco  para comprimir los datos y para mejorar la transmisión. El procesamiento de sonido digital también juega un papel importante en las aplicaciones de reconocimiento de voz y en investigaciones científicas de detección de biodiversidad utilizando sensores de sonido [4]. El sonido digital también se puede manipular fácilmente para lograr efectos especiales.
68
+Las **técnicas de procesamiento digital** se pueden utilizar para mejorar la calidad del sonido removiendo ruido y eco, para comprimir los datos, y para mejorar la transmisión. El procesamiento de sonido digital también juega un papel importante en las aplicaciones de reconocimiento de voz y en investigaciones científicas de detección de biodiversidad utilizando sensores de sonido [4]. Asimismo, el sonido digital también puede ser manipulado fácilmente para lograr efectos especiales.
69
 
69
 
70
 Como las grabaciones de sonido digital son esencialmente una colección de valores numéricos que representan una onda de sonido, el procesamiento de sonido digital puede ser tan simple como el aplicar operaciones aritméticas a esos valores. Por ejemplo, digamos que tienes una grabación de sonido digital. Mientras más alto el volúmen de la grabación, más altos los valores absolutos de los números que contiene. Para reducir el volúmen de toda la grabación solo tendríamos que multiplicar cada valor en la grabación por un número positivo menor que 1.
70
 Como las grabaciones de sonido digital son esencialmente una colección de valores numéricos que representan una onda de sonido, el procesamiento de sonido digital puede ser tan simple como el aplicar operaciones aritméticas a esos valores. Por ejemplo, digamos que tienes una grabación de sonido digital. Mientras más alto el volúmen de la grabación, más altos los valores absolutos de los números que contiene. Para reducir el volúmen de toda la grabación solo tendríamos que multiplicar cada valor en la grabación por un número positivo menor que 1.
71
 
71
 
75
 ![image2.png](images/image2.png)
75
 ![image2.png](images/image2.png)
76
 
76
 
77
 
77
 
78
-**Figura 2.** Una de las tareas más simples en el  procesamiento de sonido digital: cambiar el volúmen de una onda de sonido multiplicando cada punto por un valor positivo menor que 1 (en este caso 0.5).
78
+**Figura 2.** Una de las tareas más simples en el procesamiento de sonido digital: cambiar el volúmen de una onda de sonido multiplicando cada punto por un valor positivo menor que 1 (en este caso 0.5).
79
 
79
 
80
 ---
80
 ---
81
 
81
 
82
 ## Bibliotecas
82
 ## Bibliotecas
83
 
83
 
84
-Para esta experiencia de laboratorio usarás bibliotecas multimedios de `Qt`. Para poder trabajar los ejercicios necesitarás conocer los atributos `left` y `right` de la clase `QAudioBuffer::S16S`. Para propósito de esta experiencia de laboratorio utilizamos el nombre `AudioBuffer` al referirnos a `QAudioBuffer::S16S`.
84
+Para esta experiencia de laboratorio usarás bibliotecas multimedios de `Qt`. Para poder trabajar los ejercicios necesitarás conocer los atributos `left` y `right` de la clase `QAudioBuffer::S16S`. Para propósito de esta experiencia de laboratorio, utilizamos el nombre `AudioBuffer` al referirnos a `QAudioBuffer::S16S`.
85
 
85
 
86
 Cada objeto de la clase `AudioBuffer` tendrá atributos o variables miembro `left` y `right` que contienen el valor izquierdo y derecho de la muestra de sonido estéreo. Estas variables son públicas y podrás acceder su contenido escribiendo el nombre del objeto, seguido de un punto y luego el nombre de la variable. Para representar una señal de sonido, usamos un arreglo de objetos de clase `AudioBuffer`. Cada elemento del arreglo es un objeto que contiene los valores izquierdo y derecho  de la señal en un instante en el tiempo (recuerda que cada segundo contiene 44,100 muestras). Por ejemplo, si tenemos un arreglo de objetos `AudioBuffer`, llamado `frames`, entonces  `frames[i].left`  se refiere al valor del canal izquierdo del sonido en la muestra `i`.
86
 Cada objeto de la clase `AudioBuffer` tendrá atributos o variables miembro `left` y `right` que contienen el valor izquierdo y derecho de la muestra de sonido estéreo. Estas variables son públicas y podrás acceder su contenido escribiendo el nombre del objeto, seguido de un punto y luego el nombre de la variable. Para representar una señal de sonido, usamos un arreglo de objetos de clase `AudioBuffer`. Cada elemento del arreglo es un objeto que contiene los valores izquierdo y derecho  de la señal en un instante en el tiempo (recuerda que cada segundo contiene 44,100 muestras). Por ejemplo, si tenemos un arreglo de objetos `AudioBuffer`, llamado `frames`, entonces  `frames[i].left`  se refiere al valor del canal izquierdo del sonido en la muestra `i`.
87
 
87
 
135
 
135
 
136
 ### Ejercicio 1 - Remover las voces de una grabación
136
 ### Ejercicio 1 - Remover las voces de una grabación
137
 
137
 
138
-Una forma barata (pero muchas veces inefectiva) de remover las voces de una grabación es tomando ventaja del hecho de que las voces usualmente se graban en ambos canales, izquierdo y derecho, mientras que el resto de los instrumentos quizás no. Si este fuera el caso, podemos remover las voces de una grabación restando el canal izquierdo y derecho.
139
-
140
-#### Instrucciones:
138
+Una forma barata (pero muchas veces inefectiva) de remover las voces de una grabación es tomando ventaja del hecho de que las voces usualmente se graban en ambos canales, izquierdo y derecho, mientras que el resto de los instrumentos quizás no. Si este fuese el caso, podemos remover las voces de una grabación restando el canal izquierdo y derecho.
141
 
139
 
140
+#### Instrucciones
142
 
141
 
143
 1. Carga a `QtCreator` el proyecto `SoundProcessing`. Hay dos maneras de hacer esto:
142
 1. Carga a `QtCreator` el proyecto `SoundProcessing`. Hay dos maneras de hacer esto:
144
 
143
 
145
     * Utilizando la máquina virtual: Haz doble “click” en el archivo `SoundProcessing.pro` que se encuentra  en el directorio `/home/eip/labs/arrays-soundprocessing` de la máquina virtual.
144
     * Utilizando la máquina virtual: Haz doble “click” en el archivo `SoundProcessing.pro` que se encuentra  en el directorio `/home/eip/labs/arrays-soundprocessing` de la máquina virtual.
146
-    * Descargando la carpeta del proyecto de `Bitbucket`: Utiliza un terminal y escribe el commando `git clone http:/bitbucket.org/eip-uprrp/arrays-soundprocessing` para descargar la carpeta `arrays-soundprocessing` de `Bitbucket`. En esa carpeta, haz doble “click” en el archivo `SoundProcessing.pro`.
145
+    * Descargando la carpeta del proyecto de `Bitbucket`: Utiliza un terminal y escribe el comando `git clone http:/bitbucket.org/eip-uprrp/arrays-soundprocessing` para descargar la carpeta `arrays-soundprocessing` de `Bitbucket`. En esa carpeta, haz doble “click” en el archivo `SoundProcessing.pro`.
147
 
146
 
148
-2. Compila y corre el programa. Aparecerá un interface gráfico para procesamiento de sonido de grabaciones.
147
+2. Compila y corre el programa. Aparecerá un interfaz gráfico para procesamiento de sonido de grabaciones.
149
 
148
 
150
 3. Carga cualquiera de los archivos de onda  `love.wav`, `cartoon.wav`, o `grace.wav` marcando el botón de búsqueda (`Search`) en el lado derecho de la etiqueta `Audio In`, y reprodúcela marcando el botón `Play Audio In`.
149
 3. Carga cualquiera de los archivos de onda  `love.wav`, `cartoon.wav`, o `grace.wav` marcando el botón de búsqueda (`Search`) en el lado derecho de la etiqueta `Audio In`, y reprodúcela marcando el botón `Play Audio In`.
151
 
150
 
162
 
161
 
163
 Un efecto de sonido común es la intensificación gradual del volumen de una grabación. Esto se consigue aumentando constantemente el valor de muestras consecutivas en el arreglo de muestras de sonido.
162
 Un efecto de sonido común es la intensificación gradual del volumen de una grabación. Esto se consigue aumentando constantemente el valor de muestras consecutivas en el arreglo de muestras de sonido.
164
 
163
 
165
-#### Instrucciones:
164
+#### Instrucciones
166
 
165
 
167
 1. Carga y reproduce cualquiera de los archivos de onda `rain.wav`, o `water.wav` como hiciste en el Ejercicio 1. 
166
 1. Carga y reproduce cualquiera de los archivos de onda `rain.wav`, o `water.wav` como hiciste en el Ejercicio 1. 
168
 
167
 
177
 
176
 
178
 **Algoritmo:**
177
 **Algoritmo:**
179
 
178
 
180
-Para aplicar el aumento de intensidad a un sonido, multiplicamos cada muestra sucesiva por números entre `0` y `1` que van en aumento constante. Si la muestra se multiplica por `0` se silencia, si se multiplica por `1` se queda igual; si se multiplica por un valor entre `0` y `1` el volúmen se escala por ese factor. Ambos canales deben ser multiplicados por el mismo factor.
179
+Para aplicar el aumento de intensidad a un sonido, multiplicamos cada muestra sucesiva por números entre `0` y `1` que van en aumento constante. Si la muestra se multiplica por `0` se silencia, si se multiplica por `1` se queda igual; si se multiplica por un valor entre `0` y `1` el volúmen se escala por ese factor. Es importante destacar que ambos canales deben ser multiplicados por el mismo factor.
181
 
180
 
182
 Por ejemplo, si `fade_length` es `4`, aplicaremos el filtro a las primeras 4 muestras:
181
 Por ejemplo, si `fade_length` es `4`, aplicaremos el filtro a las primeras 4 muestras:
183
 
182
 
198
 
197
 
199
 Otro efecto de sonido común es la disminución gradual del volumen de una grabación. Esto se consigue disminuyendo constantemente el valor de muestras consecutivas en el arreglo de muestras de sonido.
198
 Otro efecto de sonido común es la disminución gradual del volumen de una grabación. Esto se consigue disminuyendo constantemente el valor de muestras consecutivas en el arreglo de muestras de sonido.
200
 
199
 
201
-#### Instrucciones:
200
+#### Instrucciones
202
 
201
 
203
 1. Carga y reproduce cualquiera de los archivos de onda `rain.wav`, o `water.wav` como hiciste en los ejercicios anteriores. 
202
 1. Carga y reproduce cualquiera de los archivos de onda `rain.wav`, o `water.wav` como hiciste en los ejercicios anteriores. 
204
 
203
 
205
-2. Tu tarea en este ejercicio es completar la función `AudioFadeOut` que se encuentra en el archivo `audiomanip.cpp` para que desvanezca el volúmen a partir de una muestra de la grabación hasta el final. La función recibe un arreglo de objetos de la clase `AudioBuffer`, el tamaño del arreglo, y un largo de duración del desvanecimiento que será aplicado a `AudioBuffer`. Por ejemplo, si  `fade_length` es `88200`, el desvanecimiento no debe afectar ninguna muestra en  posiciones menores o iguales a `88200`. 
204
+2. Tu tarea en este ejercicio es completar la función `AudioFadeOut` que se encuentra en el archivo `audiomanip.cpp` para que desvanezca el volúmen a partir de una muestra de la grabación hasta el final. La función recibe un arreglo de objetos de la clase `AudioBuffer`, el tamaño del arreglo, y un largo de duración del desvanecimiento que será aplicado a `AudioBuffer`. Por ejemplo, si  `fade_length` es `88200`, el desvanecimiento no debe afectar ninguna muestra en posiciones menores o iguales a `88200`. 
206
 
205
 
207
 3. Reproduce las siguientes grabaciones contenidas en la carpeta `WaveSamples`: 
206
 3. Reproduce las siguientes grabaciones contenidas en la carpeta `WaveSamples`: 
208
 
207
 
213
 
212
 
214
 **Algoritmo:**
213
 **Algoritmo:**
215
 
214
 
216
-Los factores para desvanecer son los mismos que para intensificar pero se aplican en el orden opuesto. Por ejemplo, si `fade_length` fuera `4`, las muestras de los canales en la posición cuatro antes de la última se multiplican por `0.75`, las muestras de los canales en la posición tres antes de la última se multiplican por `0.5`, las muestras de los canales en la penúltima posición se multiplican por `0.25`, y las muestras en los canales en la última posición se multiplican por `0.0`. 
215
+Los factores para desvanecer son los mismos que para intensificar, pero se aplican en el orden opuesto. Por ejemplo, si `fade_length` fuera `4`, las muestras de los canales en la posición cuatro antes de la última se multiplican por `0.75`, las muestras de los canales en la posición tres antes de la última se multiplican por `0.5`, las muestras de los canales en la penúltima posición se multiplican por `0.25`, y las muestras en los canales en la última posición se multiplican por `0.0`. 
217
 
216
 
218
 
217
 
219
 
218
 
220
 ### Ejercicio 4 - Recorrido de izquierda a derecha
219
 ### Ejercicio 4 - Recorrido de izquierda a derecha
221
 
220
 
222
-El efecto de sonido que queremos lograr en este ejercicio es comenzar a escuchar un sonido por el canal izquierdo, que vaya desvaneciéndose en ese canal, vaya intensificándose en el canal derecho y termine completamente en el canal derecho.
221
+El efecto de sonido que queremos lograr en este ejercicio es comenzar a escuchar un sonido por el canal izquierdo, que vaya desvaneciéndose en ese canal, vaya intensificándose en el canal derecho, y termine completamente en el canal derecho.
223
 
222
 
224
-#### Instrucciones:
223
+#### Instrucciones
225
 
224
 
226
 1. Carga y reproduce el archivo  `airplane.wav` como hiciste en los ejercicios anteriores. 
225
 1. Carga y reproduce el archivo  `airplane.wav` como hiciste en los ejercicios anteriores. 
227
 
226
 
249
 
248
 
250
 ## Entrega
249
 ## Entrega
251
 
250
 
252
-Utiliza "Entrega" en Moodle para entregar el archivo  `audiomanip.cpp`. Recuerda utilizar buenas prácticas de programación, incluir el nombre de los programadores y documentar tu programa.
251
+Utiliza "Entrega" en Moodle para entregar el archivo `audiomanip.cpp`. Recuerda utilizar buenas prácticas de programación, incluye el nombre de los programadores, y documenta tu programa.
253
 
252
 
254
 
253
 
255
 ---
254
 ---