Pac 1 Integració Digital de continguts
En l'assignatura "Integració digital de continguts" es tracten els processos fonamentals sobre la digitalització i el processament de continguts d'àudio i vídeo. El llenguatge en què es desenvolupa l'assignatura és Processing.
Es tracta d'una assignatura amb quatre entregues 2 PAC's i 2 pràctiques amb algunes preguntes teòriques molt senzilles i una part de programació amb Processing
2. 1 -Dibuixeu un esquema de tots els passos del procés de digitalització.
El procés de digitalització dels senyals analògics d'àudio es realitza per la dificultat que presenten els
ordinadors i sistemes de control digitals a poder interpretar els senyals analògics.
Aquest procés consta de 4 parts:
a) Sobre aquest esquema indiqueu els punts clau de cada pas i els factors a tindre en compte perquè es
puguin realitzar correctament.
Mostreig:
És la part mes complicada de tot el procés, ja que en aquest punt és en el qual prendrem les mostres
periodiques de so analogic La qualitat del mostreig sera directament proporcional amb el resultat final del
senyal ja digitalitzat.
Un factor important en aquesta fase és, la velocitat de mostreig quant mes alta sigui la freqüència, millors
resultats s'obtindran a major velocitat major numero de mostres per segon es podran capturar i mes
informació s'obtindrà.
Un element a tenir en compte és el allising aquest fenomen es produeix quan les freqüències mes altes de
mostreig són superiors a les freqüències que poden ser capturades pel dispositiu (convertidor A/D) aquest
fenomen se soluciona mitjançant tecnologia antialliasing.
Retenció:
En la fase de retenció les mostres preses són retingudes a través del (hold) circuit de retenció, durant aquest
període es comptabilitza el nivell del senyal (quantificació). Tècnicament aquest procés no es té en compte ja
que és un procés tècnic del mitjà .
Quantificació:
En aquesta part es mesuren el nivells de cada mostra obtinguda asignant-li un valor numèric ùnic de sortida,
ha aquest valors de senyal en el procés haurem d'afegir-los els errors que puguin produir-se i això també es
quantifica mitjançant una relació senyal-error.
Codificació:
Consisteix convertir les mostres analògiques preses en digitals normalment es transcriuen en codi binari. Ja
que és el sistema mes utilitzat.
b) També cal indicar quins passos són reversibles sense pèrdua, és a dir, després d'un pas en concret es
pot desfer i obtindre exactament el senyal original abans d'haver estat processat.
3. Com evitar el alliasing
L' aliàsing es produeix quan estem intentant mostrejar una freqüència major que la meitat de la freqüència de
mostreig. Aquest fenomen en el resultat final del procés de conversió ens el mostra amb pèrdues de
continuïtat en el so.
Per a evitar-ho aplicarem el Teorema de Nyquist que diu que per no notar salts en la continuïtat i així poder
reconstruir el senyal original el més paregut al original, cal prendre el doble de mostres de la freqüència
màxima que es pot percebre.
Normalment si apliquem una freqüència de mostreig amb un valor de 44100 Hz. obtindrem un bon resultat
final. El valor de 44100HZ s'obté aplicant el teorema de Nyquist, ja que a 22050 Hz, l'oïda humana encara
podria sentir-ho tot, encara que es perdrien algunes freqüències altes ( freqüencia Nyquist= 22,05 Khz).
Es fa necessari emprar sempre, un filtre passa baix sobre el senyal a mostrejar a fi d'evitar l'aliasing, que
podria fer que l'audio de freqüència fora de la banda d'interès quedessi registrat com a freqüència dins de la
banda d'interès.
Com evitar que l'error de quantificació sigui més potent que el senyal obtingut
Si no s'empren un nombre suficients de nivells de quantificació en el procés de digitalització, la relació
senyal a soroll resultant es reduirà en relació amb la del senyal analògic original. Això és una conseqüència
que la mesura del senyal conegut com a error de quantificació que s'introdueix sempre en el procés de
quantificació será més potent que la del soroll del senyal analògic original.
Els nivells de quantificació es mesuren en bits a major nombre de bits emprats per guardar la mesura major
exactitud. Habitualment s'empren valors de 8 i 16 bits per canal d'informació el que permet emmagatzemar→
28 bit
=256 valors ó 216 bit
=65536 valors de les mesures adquirides.
Com evitar perdues en la codificació
Per a la conversió dels impulsos recollits en la quantificació utilitzarem una codificació PCM. És un tipus de
codi que digitalitza els senyals sense perdudes, aquest tipus de conversió té el desavantatge que els fitxers
generats amb ella tenen una grandària superior a altres tipus de codificació. Això és a causa que utilitzen un
tipus d'algorismes de codificació en els que es permet la perduda de mostres d'àudio.
4. 2 -Un cop tenim un senyal digitalitzat hem de guardar-lo en algun format per tal de poderlo emmagatzemar i utilitzar.
a) Feu un quadre amb 10 formats d'àudio que tinguem disponibles actualment (per exemple mp3) i indiqueu:
1 ) Si són formats amb pèrdua o sense pèrdua de qualitat (p.ex. mp3 amb pèrdua).
2 ) En quines aplicacions s'acostumen a utilitzar (p.ex. mp3 compressió per transmetre dades).
TAULA FORMATS D'AUDIO
format SI té pèrdua NO té pèrdua aplicacions que s'acostuma a utilitzar
FLAC: Free Lossless Audio Codec música
AIF música
WAV música
ALAC música (dispositius apple)
APE música
AC3: Dolby Digital DVD Video
M4A musica, video, videoConsoles
MP3 música, internet ( es l'artxiu més utlitzat per a l'intercanvi d'audio)
OGG Vorbis música
WMA: Windows Media Audio música
5. b) Seleccioneu 1 dels formats i expliqueu-lo amb més profunditat.
FLAC: Free Lossless Audio Codec és un format d'àudio sense pèrdues i lliure, a diferència d'un arxiu en
format MP3 que utilitza un algorisme de compressió que elimina certes freqüències que no són perceptibles
pel ser humà. El format FLAC utilitza un algorisme de compressió que redueix la seva grandària sense que
es perdi cap tipus d'informació. Les cançons comprimides en aquest format pesen al voltant de 70% a 50%
respecte a l'original.
Él FLAC un fitxer lliure de patents es pot reproduir pràcticament en tots els reproductors existents al mercat
la difusió d'aquest format és menor que el format MP3 a causa del pes en Mb que és superior al MP3 .
El format MP3 comprimeix directament l'àudio usant un algorisme amb moltes perdudes perquè el fitxer
final tingui un pes menor respecte a l'original. L'unica cosa al seu favor la grandària per cançó que permet
més que cap altre la seva difusió ja que els arxius que es generen té són molt baixos entre 5 i 7 Mb a una
qualitat de 192 Kbs.
Si el comparem amb un fitxer sense perdues com el format wav la pricipal diferencia es que et dóna certs
avantatges sobre el WAV, ocupa menys espai (al voltant del 50% a 70%, conservant bit per bit la qualitat de
l'original) i té molt millor suport per tags (camps on poses informacion de la pista).
És un format d'àudio lliure, el que significa que no té la molèstia de les patents, disposa d'una implementació
de referència de codi obert. Cada vegada es troba més present a les xarxes i en sites especialitzats venda de
música. Al mateix temps, molts grups musicals han apostat per aquest format com una alternativa per
distribuir els seus treballs.
6. 3. Graveu una frase i apliqueu-li 3 filtres diferents. Per poder-los escoltar es demana que feu un
programa amb Processing on apareguin 4 globus (o altres elements) i al fer clic a cada un d'ells
apareixerà un text indicant quin àudio és (original, filtre x, filtre y, filtre z) i el reproduirà
automàticament.
import ddf.minim.*;
import ddf.minim.effects.*;
import ddf.minim.signals.*;
import ddf.minim.spi.*;
import ddf.minim.ugens.*;
// Definim els objectes
Minim minim;
AudioOutput out;
FilePlayer audio;
MoogFilter moog;
// Definim variables
PImage img;
PImage[] imgC2;
int[] posY;
llibreries d'audio minim
Declaració de l'objecte minim per a generar audio
Declaració sortida d'àudio
FilePlayer reprodueix l'àudio des d'un fitxer.
versió de programari del filtre analògic 24 dB/octava
de Moog. Filtre de tipus analògic pot configurar-se
com a filtre passa baixos, passa alts o passa banda.
variable de l'imatge de background
Array de les imatges dels globus
Array del deplaçament dels globus a l'eix Y
7. int[] limitX;
String[] message= {
"S'escolta el missatge sense
filtrar",
"El missatge incorpora un filtre
passa baixa",
"El missatge incorpora un flitre
passa alta",
"El missatge incorpora un flitre
passa banda"
};
int posMouseX;
int posMouseY;
int frame;
int vel=25;
int j;
void setup() {
size(600, 800);
minim = new Minim(this);
out = minim.getLineOut();
audio = new FilePlayer
(minim.loadFileStream("audio.mp3"))
;
moog = new MoogFilter(24000, 0.5);
audio.patch( moog ).patch(out);
frameRate (2);
frame = 1;
img = loadImage ("fondo.png");
Array per a la posicio X serveix per a pressionar al
sobre de cadascun dels globus
Array de variables tipus string
variable posMouse X
variable posMouse Y
variable frame
variable velocitat ("vel") a un valor de 25 que
permet una correcta relació entre la trajectòria del
globus i el temps de reproducció de l'àudio
variable j per a poder controlar l'array de text
tamany de sketch
Inicialitzem l'objecte classe Minim per poder crear
sons
crear objecte sortida audio
carrega audio
crea i defineix el filtre 24.000Hz. i Resonancia 0.5
Finalment, connectem el filtre a la nostre sortida
(out)
valor d'inici del swtich
carrega imatge "fondo.png"
8. limitX=new int[5];
limitX[0]=90;
limitX[1]=185;
limitX[2]=285;
limitX[3]=385;
limitX[4]=485;
posY=new int[4];
posY[0]=450;
posY[1]=450;
posY[2]=450;
posY[3]=450;
imgC2=new PImage[4];
imgC2[0] =loadImage
("glob_blau.png");
imgC2[1] =loadImage
("glob_roig.png");
imgC2[2] =loadImage
("glob_taronga.png");
imgC2[3] =loadImage
("glob_verd.png");
}
void draw() {
image (img, 0, 0);
switch (frame){
case 1:
frameOne();
if (mousePressed){
posMouseX=mouseX;
posMouseY=mouseY;
frame=2;
}
break;
case 2:
for (int i=0;i<4;i++)
{
if (posMouseX>limitX[i]
&& posMouseX<limitX[i+1] &&
posMouseY>450){
frameTwo();
// inicialitzem el
Array per a llimitar l'area d'accio de cadascuna de
les imatges dels globus al pressionar
Array per a cadascun dels quatre globus amb un
mateix valor a l'eix Y
Array per les imatges dels globus
imatge del fons que mostra l'sketch
switch
case1= carrega la funció frameOne(); si fem click
les variables posMousseX i posMouseY
guardaran únicament un valor x e y ( el primer click)
del ratoli. Així mourà sols un globus i no varis a la
vegada. frame=2 anem al case 2
case 2:
Inclou un for controlat per la variable i, aquesta
variable el que fa és controlar el switch el qual
controla les accions dels globus.
També disposem d'un condicional que el que fa és
recollir els valors posMousseX comparar-los amb
9. contador
posY[i]= posY[i]-1 *
vel;
audio.play();
switch(i)
{
case 0:
moog.type =
MoogFilter.Type.LP;
moog.frequency.setLastValue(20000);
j=0;
break;
case 1:
moog.type =
MoogFilter.Type.LP; // filtre passa
baixa
moog.frequency.setLastValue(250);
j=1;
break;
case 2:
moog.type =
MoogFilter.Type.HP; // filtre passa
alta
moog.frequency.setLastValue(8000);
j=2;
break;
case 3:
moog.type =
MoogFilter.Type.BP; // filtre passa
banda
moog.frequency.setLastValue(500);
j=3;
break;
}
if (posY[i]<0){
frame=3;
posY[i]=450;
}
}
}
break;
el llimitX i que el valor de i posMouseY i sigui
major que 450 depenent del valor es donara un
resultant entre 0 i 3 que correspondrà amb els case de
cadascun dels globus
case0 tenim un filtre de passa baix amb una
freqüència equivalent a 20.000Hz és a dir que deixa
passar totes les freqüències audibles perque aturarà a
partir de 20.000 Hz.
j=0 ens mostra el text 0 de l'array que conté els
string ( message)
case1, tenim un filtre de passa baix amb una
freqüència equivalent a 250Hz aturarà totes aquelles
que són superiors a la freqüència establerta.
j=1 ens mostra el text 1 de l'array que tenim els
string ( message)
case2, tenim un filtre de passa alta amb una
freqüència equivalent a 10.000Hz aturarà totes
aquelles que són inferiors a la freqüència establerta.
j=2 ens mostra el text 2 de l'array que tenim els
string ( message)
case3, tenim un filtre de passa banda amb una
freqüència equivalent a 500Hz aturarà totes les
freqüencies excepte aquelles que es troben en la
banda de freqüències programades en el filtre.
j=3 ens mostra el text 3 de l'array que tenim els
string ( message)
Aquest condicional ens indica que si l'objete
posicioY la seva altura es menor que 0 tornarà
l'objecte a la posició inicial ( y=450) i la instrucció
frame=3 accedeix al case3 del switch principal
torna al case 1
10. case 3:
frame=1;
audio.rewind();
break;
}
}
void frameOne(){
/** GRAELLA DE AREA DELS BOTONS
fill(255,0,0);
rect(100, 425, 70, 200);
fill(0,255,0);
rect(200, 425, 70, 200);
fill(0,255,255);
rect(300, 425, 70, 200);
fill(0,0,255);
rect(400, 425, 70, 200); **/
image (imgC2[0], 100,
posY[0]); // globus blau
image (imgC2[1], 200,
posY[1]); // globus roig
image (imgC2[2], 300, posY[2]);//
globus taronga
image (imgC2[3], 400,
posY[3]); // globus verd
}
void frameTwo(){
image (imgC2[0], 100,
posY[0]); // globus blau
image (imgC2[1], 200,
posY[1]); // globus roig
image (imgC2[2], 300, posY[2]);//
globus taronga
image (imgC2[3], 400,
posY[3]); // globus verd
fill(153, 204, 204);
stroke(255);
rect (-1,650,604,50);
textSize(22);
fill(255, 255, 255);
text (message[j], 100, 680);
}
metode de reset de audio (rebobina).
la funcio frameOne té la posició inicial de
cadascuna de les quatre imatges al case 1 del switch
principal
La funció frameTwo té la posició inicial de
cadascuna de les quatre imatges al case 2 del switch
principal
El rectangle te una posició de x=-1 i tamany
x=604 per a no veure's el rectangle al complet i
estalviem una instrucció.
Depenent del valor de la variable auxiliar j
mostrarà el text corresponent respecte a la seva
posició a l'array.
11. Marcos Baldoví Martínez “ PAC 1 Tractament i Publicació d'Audio” [Data de consulta 15 Novembre del
2016 ] [en línia]
Francesc Martí Perez. Universitat Oberta de Catalunya “Mòdul 7. Desenvolupament d'aplicacions
d'àudio amb Minim“ [Data de consulta 25 Novembre del 2016 ] [en línia]