Este repositório contém a implementação do Trabalho 2 da disciplina de Fundamentos de Programação 1 da Universidade Tecnológica Federal do Paraná (UTFPR).
O objetivo principal deste projeto é aplicar conceitos de manipulação de vetores, alocação dinâmica de memória, laços de repetição e passagem de parâmetros por referência para aplicar efeitos digitais em sinais de áudio no formato .wav.
- João Vitor Colla de Souza
- Lucas Klein Barsch
Este projeto é um trabalho académico. Nem todo o código presente neste repositório é de nossa autoria. * O que nós desenvolvemos: Apenas a lógica de processamento de áudio e as funções contidas no ficheiro t2-2877554-2877589.c, além da documentação e relatório.
- O que foi fornecido pelos professores: Os ficheiros base para leitura e gravação de áudio (
wavfile.cewavfile.h), as assinaturas das funções (trabalho2.h), os áudios originais de teste e os ficheirosmain.cutilizados para testar as implementações. Estes materiais são de autoria dos docentes da disciplina (Prof. Bogdan T. Nassu, Profa. Leyza B. Dorini e Prof. Daniel F. Pigatto).
O núcleo do projeto encontra-se no ficheiro t2-2877554-2877589.c, onde foram desenvolvidas as seguintes funções de processamento de áudio:
mudaGanho: Altera o volume do áudio multiplicando cada amostra do sinal por um fator de ganho.misturaDados: Mescla dois sinais de áudio distintos (ex: juntar o som de uma guitarra e de um violão), somando as amostras elemento a elemento.inverteSinal: Inverte a ordem das amostras, fazendo com que o áudio seja reproduzido de trás para a frente.atrasaSinal: Desloca o sinal no tempo (para a frente ou para trás), preenchendo os espaços vazios com silêncio (zeros).filtroDaMedia: Aplica um filtro de média móvel (janela deslizante/passa-baixo) para suavizar o sinal, o que resulta num som mais abafado/grave.ecos(Função Extra): Cria um efeito de eco complexo combinando as funções anteriores. O sinal repete-se com atraso, redução de volume (decaimento) e um efeito progressivo de abafamento.
Para que o projeto funcione corretamente, a estrutura de ficheiros deve ser a seguinte:
/
├── data/ # Diretoria OBRIGATÓRIA contendo os áudios
│ ├── sonic2_gui.wav # Áudio original 1 (exemplo)
│ ├── sonic2_per.wav # Áudio original 2 (exemplo)
│ ├── sonic2_vio.wav # Áudio original 3 (exemplo)
│ └── teste2_mistura.wav # Ficheiro gerado após a execução
├── t2-2877554-2877589.c # Implementação das funções de processamento
├── trabalho2.h # Cabeçalhos das funções do trabalho
├── wavfile.c # Biblioteca base fornecida para I/O de áudio
├── wavfile.h # Cabeçalhos da biblioteca base
└── main.c # Ficheiro de testes (ex: junta 3 sinais)