Advertisement
morikawa

funçoes_audio

Nov 10th, 2019
569
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.22 KB | None | 0 0
  1. /*============================================================================*/
  2. /* IF61C - TRABALHO 2                                                         */
  3. /*----------------------------------------------------------------------------*/
  4. /* Autor: Gabriela Morikawa, Julia Zimmermann, Lucas Amaral
  5. /*============================================================================*/
  6.  
  7. #include <stdlib.h>
  8. #include <math.h>
  9.  
  10. #include "trabalho2.h"
  11.  
  12.  
  13. /**Esta função altera o ganho de cada amostra de acordo com os valores que foram designados
  14. *
  15. *
  16. * Parâmetros: double* dados: vetor de dados
  17. *             unsigned long n_amostras: número de amostras no vetor
  18. *             double ganho: modificador do ganho
  19. *
  20. * Valor de Retorno: nenhum */
  21. void mudaGanho (double* dados, unsigned long n_amostras, double ganho)
  22. {
  23.     int cont;
  24.  
  25.     for (cont=0; cont<n_amostras; cont++) {
  26.         dados[cont]=dados[cont]*ganho;
  27.     }
  28. }
  29.  
  30.  
  31.  
  32. /**Esta função insere um ruído (estalo) de 1 ou -1 (alternados) periodicamente de acordo com o valor do intervalo
  33. *
  34. *
  35. * Parâmetros: double* dados: vetor de dados
  36. *             unsigned long n_amostras: número de amostras no vetor
  37. *             unsigned short intervalo: o número de amostras entre dois pontos de ruído é intervalo-1
  38. *
  39. * Valor de Retorno: nenhum */
  40. void ruidoPeriodico (double* dados, unsigned long n_amostras, unsigned short intervalo)
  41. {
  42.     int cont, estalo=1;
  43.     for (cont=0; cont<n_amostras; cont=cont+intervalo) {
  44.         dados[cont]=estalo;
  45.         estalo=-estalo;
  46.     }
  47. }
  48.  
  49.  
  50.  
  51. /**Esta função remove o ruído do áudio, fazendo a mediana dos valores anterior e posterior de cada amostra
  52. *
  53. *
  54. * Parâmetros: double* dados: vetor de dados
  55. *             unsigned long n_amostras: número de amostras no vetor
  56. *
  57. * Valor de Retorno: nenhum */
  58. void removeRuido (double* dados, unsigned long n_amostras)
  59. {
  60.     double anterior=dados[0],aux,vet_aux[3],meio;
  61.     int cont,i;
  62.  
  63.     for(cont=1;cont<n_amostras-1;cont++){
  64.         aux=dados[cont];
  65.  
  66.         vet_aux[0] = anterior;
  67.         vet_aux[1] = dados[cont];
  68.         vet_aux[2] = dados[cont+1];
  69.  
  70.         if ((vet_aux[0]>=vet_aux[1] && vet_aux[0]<=vet_aux[2]) || (vet_aux[0]<=vet_aux[1] && vet_aux[0]>=vet_aux[2])) {
  71.             meio = vet_aux[0];
  72.         } else if ((vet_aux[1]>=vet_aux[0] && vet_aux[1]<=vet_aux[2]) || (vet_aux[1]<=vet_aux[0] && vet_aux[1]>=vet_aux[2])) {
  73.             meio = vet_aux[1];
  74.         } else {
  75.             meio = vet_aux[2];
  76.         }
  77.  
  78.         dados[cont] = meio;
  79.         anterior=aux;
  80.     }
  81.  
  82. }
  83.  
  84.  
  85.  
  86. /**Nesta função, a variável n_constantes determina a quantidade de valores do vetor que serão substituídos pelo primeiro valor do grupo (a cada n_constantes)
  87. *
  88. *
  89. * Parâmetros: double* dados: vetor de dados
  90. *             unsigned long n_amostras: número de amostras no vetor
  91. *             unsigned short n_constantes: largura de cada "degrau"
  92. *
  93. * Valor de Retorno: nenhum */
  94. void simulaSubAmostragem (double* dados, unsigned long n_amostras, unsigned short n_constantes)
  95. {
  96.     int cont, cont2;
  97.  
  98.     for (cont=0; cont<n_amostras; cont=cont+n_constantes){
  99.         for (cont2=cont; cont2<(cont+n_constantes); cont2++) {
  100.             dados[cont2]=dados[cont];
  101.         }
  102.     }
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement