Exercício 8 Busca de Músicas



Documentos relacionados
TONALIDADE X FREQUÊNICA

Por que o quadrado de terminados em 5 e ta o fa cil? Ex.: 15²=225, 75²=5625,...

NOTAÇÃO MUSICAL: Como se escreve música?

APRENDA MÚSICA Vol I 1. As notas musicais no endecagrama

Mecanismo de busca semântica de áudio

MICROSOFT EXCEL AVANÇADO

Fundamentos de Hardware

Organização e Arquitetura de Computadores I

Sistemas de numeração

CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante

PROVA ESCRITA. 2. Tendo como referencia as escalas maiores abaixo,

Manual AGENDA DE BACKUP

Dó Dó# - Ré Ré# - Mi Fá Fá# - Sol Sol# - Lá Lá# - Si Dó

Tabela e Gráficos Dinâmicos Como estruturar dinamicamente dados no Excel

Como Gerar documento em PDF com várias Imagens

Microsoft Excel 2007

43 11 Relatórios, Listagens e Exportações para Excel, TXT e HTML

Material Teórico - Módulo de Divisibilidade. MDC e MMC - Parte 1. Sexto Ano. Prof. Angelo Papa Neto

NOTAÇÃO MUSICAL TRADICIONAL: Como se escrever música?

Tutorial Gerar arquivo PDF. Gerando um documento pdf com várias imagens 1- Inserir imagem no Word

PRINCÍPIOS DE INFORMÁTICA PRÁTICA OBJETIVO 2. BASE TEÓRICA 3. SEQÜÊNCIA DA AULA. 3.1 Iniciando o PowerPoint

Sistemas Numéricos e a Representação Interna dos Dados no Computador

Como consolidar dados nas planilhas utilizando o comando CONSOLIDAR do Excel

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

Manual de Operação do Sistema de Tickets Support Suite

3 Classificação Resumo do algoritmo proposto

Google Drive. Passos. Configurando o Google Drive

Orientação a Objetos

SISTEMAS OPERACIONAIS

Trecho retirando do Manual do esocial Versão 1.1

Planilha (2ª parte) Capítulo 15

Só Matemática O seu portal matemático FUNÇÕES

3 Resumo de dados com Tabelas e Gráficos dinâmicos

2. Representação Numérica

Dicas para usar melhor o Word 2007

1. ROTEIRO DE USO DO CORISCO Para usar o CoRisco, e gerar os seus próprios modelos de risco, você deve seguir o roteiro:

A máscara de sub-rede pode ser usada para dividir uma rede existente em "sub-redes". Isso pode ser feito para:

Dadas a base e a altura de um triangulo, determinar sua área.

Exercícios de Fixação Pseudocódigo e Estruturas Básicas de Controle

MANUAL DE UTILIZAÇÃO DO SISTEMA DE NOTA FISCAL ELETRÔNICA e-nota

e-ouv Passo-a-passo Sistema de Ouvidorias do Poder Executivo Federal Junho, 2015 Controladoria-Geral da União

Curso de Hardware Aula 01 Tema: Sistema de Medidas Por: Edmilson de Oliveira Reis Revisado em: 02/03/2012

Integração Persona x Contábil

INICIAÇÃO À MÚSICA E AO VIOLÃO

Construção da Consulta. Para a construção da consulta, siga os passos abaixo:

Capítulo 7 Medidas de dispersão

Tutorial Plone 4. Manutenção de Sites. Universidade Federal de São Carlos Departamento de Sistemas Web Todos os direitos reservados

As Notas Musicais. O processo moderno utiliza códigos quando se refere a cada uma das notas. Este código é chamado de CIFRA.

Acordes, sua estrutura e cifragem

Prof. Rafael Gross.

Manual AGENDA DE BACKUP

3. No painel da direita, dê um clique com o botão direito do mouse em qualquer espaço livre (área em branco).

Probabilidade e Estatística I Antonio Roque Aula 8. Introdução ao Excel

Jeandervall. Roteamento

9. Quais as características a tecnologia de conexão à Internet denominada ADSL A) Conexão permanente, custo variável, linha telefônica liberada e

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR

Trabalhando com arquivos de som. Prof. César Bastos Fevereiro 2008

ATENÇÃO: * Arquivos com tamanho superior a 500 KB NÃO SERÃO ACEITOS * SOMENTE serão aceitos documentos do formato: PDF

WORKSHOP Ferramenta OLAP IBM Cognos

Fluxo de Caixa por Demonstrativo Contábil

CONTEÚDO PROGRAMÁTICO

O Software Face Match

Gravando CDs Musicais com o Windows Media Player 9

1. Introdução Instalação Baixando o arquivo Instalando Enviando SMS Configurando o Itcell sms massa...

13 ÁLGEBRA Uma balança para introduzir os conceitos de Equação do 1ºgrau

Treinamento Sistema Condominium Módulo III

MANUAL LOTOFÁCIL. Por Cláudio luis

Guia Rápido Portal do Paciente

Astra LX Parametrização das Amostras e Etiquetas Guia para a Configuração das Amostras e Etiquetas no Programa AstraLX.

Aula 4 Estatística Conceitos básicos

O EXCEL NÃO É UM SOFTWARE NATIVO DO WINDOWS. É UM SOFTWARE QUE INTEGRA O PACOTE MICROSOFT OFFICE.

Lista de Exercícios. Vetores

NewAgent enterprise-brain

PROJETO DE REDES

Instruções para a atividade

Como funciona? SUMÁRIO

Aula 02 Excel Operações Básicas

PLANILHA PARA GERENCIAR NOTAS DAS TURMAS

MANUAL TISS Versão

Aula 01 - Formatações prontas e condicionais. Aula 01 - Formatações prontas e condicionais. Sumário. Formatar como Tabela

SMS Corporativo Manual do Usuário

VISUAL LIGHTBOX FERRAMENTA WEB DESIGN FABIANO KEIJI TAGUCHI

Manual usuario sipon. Índice. Introdução. Características do Sistema. De Wiki Intranet. 1 Introdução 1.1 Características do Sistema

EXEMPLO DE COMO FAZER UMA MALA DIRETA

4 Segmentação Algoritmo proposto

Guia: como instalar o Ubuntu Linux

AULA 1 Iniciando o uso do TerraView

SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

Manual de Relação de Pontos por Indicação

UNIVERSIDADE GAMA FILHO Laboratório de Controle I - MATLAB

Capítulo 1. x > y ou x < y ou x = y

Laboratório - Uso da calculadora do Windows com endereços de rede

Manual Administrador - Mídia System

Programa de Instalação do Lince GPS

Programa de Atualização de Pontos do Lince GPS

Unidade 7: Panes no Excel

RESPOSTAS DAS QUESTÕES ANULADAS OU COM MUDANÇA DE GABARITO

Considerações sobre o Disaster Recovery

Transcrição:

Exercício 8 Busca de Músicas Diversos softwares têm sido projetados para realizar a busca de músicas a partir de um trecho de áudio. Por exemplo, atualmente há ferramentas para celulares ou Web em que o usuário grava um trecho de uma música, pois deseja descobrir qual é aquela música. Uma das abordagens mais comuns é por meio do cálculo do Espectrograma conforme segue abaixo: 1) Considere que as músicas serão entregues a seu programa no seguinte formato: Um arquivo binário em que cada 2 bytes (isto é, um short int) contém o valor da amplitude do áudio. A amplitude é a energia com que o som foi gravado. Por exemplo, um áudio gravado muito perto do microfone tem alta energia. 2) Abra o arquivo de música e recorte trechos de tamanho WINDOW 2.1) O que é um trecho? Resp: É um conjunto de WINDOW elementos short, em que cada short tem 2 bytes Por exemplo, se o áudio total contém 1000 valores (short ints), então considere, por exemplo, WINDOW = 100. Neste caso você teria 10 trechos, cada um desses trechos com 100 shorts. 2.2) Aplique a Transformada Discreta de Fourier 1 D sobre cada um dos trechos http://pt.wikipedia.org/wiki/transformada_de_fourier#transformada_discreta_de_fourier 2.3) Para cada um dos trechos, selecione os K coeficientes (em que K será dado como entrada para seu programa) de maior magnitude (ou seja, de maior amplitude) e faça o seguinte: 2.3.1) Sabe se, na música ocidental, que as notas são dividas em: C, C#, D, D#, E, F, F#, G, G#, A, A#, B em que: C Dó D Ré E Mi F Fá G Sol A Lá B Si # Sustenido (indica adição de frequência em relação ao tom anterior, por exemplo, C tem certa frequência e C# tem uma frequência adicional) 2.3.2) Na música ocidental, utilizamos esses 12 tons (ou, mais formalmente, intervalos). Por exemplo, a frequência 440 hz (hertz) representa uma nota Lá. O dobro dela também representa uma nota Lá, i.e., 880 hz. O dobro de 880 hz, i.e., 1760 hz, também representa outra nota Lá. Neste caso, considere as frequências abaixo:

A 440 hz (hertz é uma medida de frequência) Como encontrar a frequência da nota A# ou B ou outra qualquer??? Para isso utilize a seguinte equação: frequencia_da_nota = nota_base*(2^(1/12))^intervalo Por exemplo, para encontrar a frequência da nota que vem após Lá (A), ou seja, A#, temos como base a nota A: nota_base = Lá ou em notação musical A = 440 hz Utilizamos intervalo = 1, pois queremos recuperar a frequência do próximo intervalo após A, i.e., um intervalo à frente, assim temos: A# = 440*(2^(1/12))^1 = 466.16 E assim sucessivamente. Agora observe outro caso, como descobrimos o intervalo para a frequência 65.41? Basta substituir na fórmula: 65.41 = 440*(2^(1/12))^intervalo OBS: Como o resultado dessa fórmula é um intervalo na forma de um número real, faça arredondamento no intervalo obtido utilizando a função round() 2.3.4) Para cada trecho (janela), selecione os K coeficientes de maior magnitude. Cada um desses coeficientes terá uma frequência associada. Pegue cada uma dessas frequências e encontre seu respectivo intervalo SEMPRE considerando como frequência base 440 hz, i.e., a nota Lá (A). Para exemplificar, considere alguns possíveis intervalos para a frequência base 440 hz, cuja nota será referenciada como A 4 ou nota Lá na escala número 4 (conforme a escala aumenta, os sons ficam mais agudos): Nota Frequência Intervalo A 4 440.00 0 A # 4 /Bb 4 466.16 1 B 4 493.88 2 C 5 523.25 3 C # 5 /Db 5 554.37 4 D 5 587.33 5 D # 5 /Eb 5 622.25 6

E 5 659.26 7 F 5 698.46 8 F # 5 /Gb 5 739.99 9 G 5 783.99 10 G # 5 /Ab 5 830.61 11 A 5 880.00 12 A # 5 /Bb 5 932.33 13 B 5 987.77 14 C 6 1046.50 15 C # 6 /Db 6 1108.73 16 D 6 1174.66 17 D # 6 /Eb 6 1244.51 18 E 6 1318.51 19 F 6 1396.91 20 F # 6 /Gb 6 1479.98 21 G 6 1567.98 22 G # 6 /Ab 6 1661.22 23 A 6 1760.00 24 Por exemplo, considere o primeiro trecho da música e K = 3. Suponha, neste caso que os coeficientes com maior magnitude estão nas frequências 440 hz, 880 hz, 1567 hz. Aplicando a equação anteriormente dada, você chegará aos seguintes intervalos: 440 0 880 12 1567 22 Agora iremos descobrir quais são as notas para os intervalos do primeiro trecho analisado (0, 12, 22). Para isso podemos usar o resto da divisão por 12 na forma: 440 0 % 12 = 0 (Nota Lá ou A) 880 12 % 12 = 0 (Nota Lá ou A porém uma oitava acima da anterior) 1567 22 % 12 = 10 (Esta nota está 10 intervalos acima da nota Lá, logo será um Sol ou G) Temos assim quais foram as notas dominantes naquele intervalo. Agora iremos criar uma matriz que terá N linhas e 12 colunas, em que N representa o número total de trechos que iremos analisar da

música. Para cada trecho, ou linha da matriz, iremos contabilizar quais notas ocorreram (representadas pelas 12 colunas). Neste exemplo, iremos obter para o primeiro trecho a lista de valores abaixo: 0 1 2 3 4 5 6 7 8 9 10 11 2 0 0 0 0 0 0 0 0 0 1 0 Em que a primeira linha indica o número do intervalo (ou nota) e a segunda linha, de fato, indica quantas vezes cada um desses intervalos ocorreu no primeiro trecho da música (Sabe se que somente os K coeficientes mais importantes serão selecionados, i.e., somente as K frequências mais importantes ou dominantes serão consideradas para cada trecho analisado). Observe que após processar, por exemplo, 10 trechos da música, teremos algo como: Intervalos ou Notas Músicas Tocadas para cada Trecho da Música Trecho 0 1 2 3 4 5 6 7 8 9 10 11 1 2 0 0 0 0 0 0 0 0 0 1 0 2 0 3 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 1 0 1 0 1 0 0 4 2 0 0 0 0 0 0 0 0 0 1 0 5 0 3 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 1 0 1 0 1 0 0 7 2 0 0 0 0 0 0 0 0 0 1 0 8 0 3 0 0 0 0 0 0 0 0 0 0 9 0 0 0 0 0 1 0 1 0 1 0 0 10 2 0 0 0 0 0 0 0 0 0 1 0 Observação: Veja que os intervalos podem ser negativos em relação à frequência base 440 hz. Por exemplo, considere que ocorreu a frequência 415, cujo intervalo = 1. Neste caso a nota correra é G#, ou seja, você deveria preencher a contagem de ocorrência do intervalo 11 e não do intervalo 1. 2.4) Seu programa irá receber uma lista inicial com diversas músicas que deverá processar e obter matrizes como a anterior. Cada música dessa lista irá ser utilizada para produzir uma matriz que irá representar as características da música, montando um tipo de base de músicas. Em seguida, apresenta se uma música de consulta para seu programa. Você deverá, também, produzir uma matriz como a anterior para essa nova música e, em seguida, você deverá calcular qual das músicas da lista inicial que você extraiu anteriormente é a mais parecida com a música de consulta. O programa deverá imprimir apenas o ID (número) da música mais parecida, com base na

comparação entre as matrizes. Observe que a música de consulta pode ter mais ou menos trechos em relação às músicas da lista. Sendo assim, o número de trechos pode variar de música para música. Não daremos nenhuma técnica para você realizar tal comparação e encontrar a música mais próxima, a ideia é você explorar possibilidades de acordo com seus conhecimentos. Dica: Converta algumas de suas músicas MP3 ou WAV para o formato RAW (ou formato cru). Esse formato armazena 1 short (ou 2 bytes) para cada amplitude de áudio. Exemplo: sox musica.wav b 16 c 1 r 16k t raw musica.raw Neste caso convertemos musica.wav para musica.raw. Esse arquivo musica.raw contém apenas bytes em que cada 16 bits (opção b 16), i.e., 2 bytes (ou 1 short) contém valores de amplitude para o áudio. Os seguintes parâmetros significam: c 1 Indica que o áudio será gravado como mono (1 canal apenas) em musica.raw r 16k Indica que 16000 amplitudes serão gravadas por segundo, o que totalizam 16000*2 bytes = 32000 bytes por segundo de áudio t raw apenas indica que iremos produzir um arquivo de áudio cru como resultado Esse programa sox é disponível para Linux. Se deseja utilizar Windows, procure um aplicativo similar. Se desejar tocar o arquivo musica.raw você pode fazer: aplay r 16k t raw c 1 f S16_LE musica.raw Esse comando aplay está disponível para Linux. Suas opções são as mesmas do comando sox. Exceto a opção f S16_LE que é similar à b 16 para o sox. Exemplos de Entrada e Saída Entrada para seu programa: <TAMANHO_LISTA> <nome_arquivo_musica1.raw> <nome_arquivo_musica2.raw> <nome_arquivo_musica_tamanho_lista.raw> <nome_arquivo_musica_consulta.raw> Saída:

<Número da música na lista considerada mais próxima>\n Exemplo: 3 audio.raw teste.raw abc.raw consulta.raw Digamos que a música mais parecida seja a primeira da lista, i.e., audio.raw. Então seu programa será gerar como saída o inteiro 1, o qual indica o índice da música mais parecida (sempre iniciando em 1). Saída: 1\n