Técnicas de aprimoramento de um sistema de acompanhamento musical

Documentos relacionados
Algoritmos de acompanhamento musical para performances polifônicas

Acompanhamento Computacional Parte II. Mariana Zaparolli Martins Computação Musical IME USP

Sistema de Acompanhamento Musical Automatizado

VISÃO COMPUTACIONAL. Marcelo Henrique dos Santos

Redes de Computadores

6 Aplicações Detalhes da Implementação

Técnicas determinísticas para acompanhamento musical automatizado. Roberto Piassi Passos Bodo

Análise de algoritmos

> Princípios de Contagem e Enumeração Computacional 1/13

Departamento de Electrónica, Telecomunicações e Informática. 1 Entrega do Trabalho e avaliação. 2 Sintetizador. Processamento Digital de Sinal

Redes de Computadores

CIC 110 Análise e Projeto de Algoritmos I

Árvores. SCC-214 Projeto de Algoritmos. Thiago A. S. Pardo. Um nó após o outro, adjacentes Sem relações hierárquicas entre os nós, em geral

Algoritmo da IFT 2 / 16. Algoritmo da IFT Estrutura da fila de prioridade Resolvendo empates. Algoritmo 1 Algoritmo geral da IFT

CRONOMETRO PROFISSIONAL COM MEMÓRIA PARA 100 VOLTAS.

Algoritmos Combinatórios: Introdução

TP 318 Introdução às Redes Multimídia

Por: Marcio Magalhães

Figuras Musicais Principais figuras musicais

7 Dicas de Como Ler e Aprender Partituras. Facilmente!

Analógico vs Digital

SISTEMAS DISTRIBUÍDOS

Física I. Aula 02: Movimento Retilíneo. Tópico 02: Velocidade; Movimento Retilíneo Uniforme

Modelos Fundamentais de um SD. Modelo de Interação ou Sincronismo

TCP - formato do segmento. Formato do segmento TCP (fonte: Kurose)

Prof. MSc. David Roza José 1/37

Sincronização. Tempo e Relógios. Sincronização de Relógios - Algoritmo de Cristian - Algoritmo de Berkeley - Network Time Protocol

Circuitos sequenciais Adaptado dos transparentes das autoras do livro The Essentials of Computer Organization and Architecture

Algoritmos de Aprendizado

Prova de Aferição de Educação Musical Prova 54 5.º Ano de Escolaridade 2018

Princípio da Multiplicação Gerando todas as palavras de um alfabeto. > Princípios de Contagem e Enumeração Computacional 0/18

Python 3.x Estrutura de Repetição while

Linguagem de Maquina II. Visão Geral

Capítulo 3. A camada de enlace de dados

Introdução às Medidas em Física a Aula

Apresentação da Disciplina

5 Classificadores e Condicionadores de Tráfego

Redes de Computadores

MANUAL DE INSTALAÇÃO E USO

Fundamentos de Teste de Software

MATRIZES - PARTE Definição e Manipulação de Matrizes AULA 21

MÚSICA. Transcreva o trecho musical I, por completo e sem rasura, para o pentagrama correspondente na folha de respostas, no espaço

Camada de Enlace de Dados

Tablaturas. O que são tablaturas? Como ler tablaturas?

Protocolo de transporte em tempo-real (Real- Time Transport Protocol) Definido na RFC 3350 Normalmente usado sobre o UDP Serviços

CEDERJ - CENTRO DE EDUCAÇÃO SUPERIOR A DISTÂNCIA DO ESTADO DO RIO DE JANEIRO

Arquitetura e Organização de Computadores

SIFT - Scale Invariant Feature Transform

Prova Didática Grafos: Árvores Geradoras e Caminhos Mínimos, Análise de Complexidade

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

PROVA ESPECÍFICA MODELO. Duração da prova: 120 minutos

VESTIBULAR MÚSICA

ALGORITMOS AVANÇADOS UNIDADE I Análise de Algoritmo - Notação O. Luiz Leão

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar

Matemática Divertida. Triângulos Mágicos

Transformada Imagem-Floresta (IFT)

3º Workshop de Modos Gregos Para Iniciantes PDF #2

Sistemas Distribuídos Aula 15

Inteligência Artificial. Prof. Tiago A. E. Ferreira Aula 4 Tipos de Agentes Inteligentes Racionais e Ambientes

Máquinas de Estados Finitos. Aula 19 Prof. Abel Guilhermino

Análise de Complexidade. Algoritmos e Estruturas de Dados Flavio Figueiredo (

Compressão de Textos. Introdução. Introdução. Introdução. O volume de informação textual disponível on-line é imenso:

Implementação de uma rotina para seguir um segmento de reta (FollowLine)

MIDI. conceitos básicos. Prof. Evandro Manara Miletto IFRS Campus Porto Alegre

Prova de Aferição de Educação Musical Prova 54 5.º Ano de Escolaridade 2018

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca

cadeia de caracteres (string) INF Programação I Prof. Roberto Azevedo

Projecto Final SINTETIZADOR MIDI POR RS232

5 Resultados Experimentais

4 Detecção de Silhueta

Introdução à Ciência da Computação II

Protocolo de transporte em tempo-real (Real- Time Transport Protocol) Definido na RFC 3350 Normalmente usado sobre o UDP Serviços

5. Invólucros Convexos no Plano

Cálculo Numérico Noções básicas sobre erros

Durante a evolução das arquiteturas de computadores e principalmente dos Sistemas Operacionais, muitas tecnologias tiveram que ser aprimoradas para

Códigos de Detecção de Erros 2ª. parte. Prof. Ricardo de O. Duarte DECOM - UFOP

Estatística e Modelos Probabilísticos - COE241

Lançamento Oblí quo - RA

Análise e Técnicas de Algoritmos

Medida do Tempo de Execução de um Programa. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CAPÍTULO 5. Cristina Boeres

Noções de Simulação. Ciências Contábeis - FEA - Noturno. 2 o Semestre MAE0219 (IME-USP) Noções de Simulação 2 o Semestre / 23

Algoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo

Rallyde Regularidade. Princípios Básicos de Navegação.

Análise de algoritmos. Parte I

VERIFICAÇÃO & VALIDAÇÃO

01 Análise de Algoritmos (parte 2) SCC201/501 - Introdução à Ciência de Computação II

CCM0128 Computação II

> Princípios de Contagem e Enumeração Computacional 0/19

Algoritmos para resolução de problemas de minimização irrestrita

Recursividade, Tentativa e Erro

HydroExpert. Manual de criação de tendências em planilhas. HydroByte Software

Caracteres e Cadeias de Caracteres

Multiplexação por Divisão de Tempo UNIP. Renê Furtado Felix.

Seleção de Problemas:

Árvores Binárias. Disciplina de Algoritmos e Estrutura de Dados III. Prof. Marcos Antonio Schreiner 17/03/2015

Bit (Binary Digit) é a menor unidade de armazenamento de informação dentro do computador; Byte é a união de 8 bits capaz de representar 256

Listas - Outras. Listas Circulares Nós Cabeça Listas Duplamente Ligadas/Encadeadas Aplicações

SeVEM - Separador de Vozes em Execuções Musicais Polifônicas

Métodos Numéricos - Notas de Aula

Transcrição:

Técnicas de aprimoramento de um sistema de acompanhamento musical Roberto Piassi Passos Bodo Instituto de Matemática e Estatística Universidade de São Paulo 12 de Novembro de 2013

Acompanhamento musical rppbodo@ime.usp.br (IME-USP) Novembro 2013 2 / 34

Acompanhamento musical escutar a performance de um músico; rppbodo@ime.usp.br (IME-USP) Novembro 2013 2 / 34

Acompanhamento musical escutar a performance de um músico; comparar os eventos da entrada com os eventos de uma partitura; rppbodo@ime.usp.br (IME-USP) Novembro 2013 2 / 34

Acompanhamento musical escutar a performance de um músico; comparar os eventos da entrada com os eventos de uma partitura; inferir um andamento; rppbodo@ime.usp.br (IME-USP) Novembro 2013 2 / 34

Acompanhamento musical escutar a performance de um músico; comparar os eventos da entrada com os eventos de uma partitura; inferir um andamento; tocar o acompanhamento apropriado. rppbodo@ime.usp.br (IME-USP) Novembro 2013 2 / 34

Sistema de acompanhamento musical rppbodo@ime.usp.br (IME-USP) Novembro 2013 3 / 34

Casamento monofônico Características dos eventos: rppbodo@ime.usp.br (IME-USP) Novembro 2013 4 / 34

Casamento monofônico Características dos eventos: são trivialmente comparados; rppbodo@ime.usp.br (IME-USP) Novembro 2013 4 / 34

Casamento monofônico Características dos eventos: são trivialmente comparados; são totalmente ordenados. rppbodo@ime.usp.br (IME-USP) Novembro 2013 4 / 34

Casamento monofônico Características dos eventos: são trivialmente comparados; são totalmente ordenados. rppbodo@ime.usp.br (IME-USP) Novembro 2013 4 / 34

Casamento polifônico Características dos eventos: rppbodo@ime.usp.br (IME-USP) Novembro 2013 5 / 34

Casamento polifônico Características dos eventos: são mais difíceis de comparar; rppbodo@ime.usp.br (IME-USP) Novembro 2013 5 / 34

Casamento polifônico Características dos eventos: são mais difíceis de comparar; são parcialmente ordenados. rppbodo@ime.usp.br (IME-USP) Novembro 2013 5 / 34

Casamento polifônico Características dos eventos: são mais difíceis de comparar; são parcialmente ordenados. rppbodo@ime.usp.br (IME-USP) Novembro 2013 5 / 34

Eventos compostos Para cada nota recebida da performance: rppbodo@ime.usp.br (IME-USP) Novembro 2013 6 / 34

Eventos compostos Para cada nota recebida da performance: se o intervalo de tempo em relação à nota anterior for menor do que epsilon (100ms, por exemplo), adicionamos no mesmo evento composto; rppbodo@ime.usp.br (IME-USP) Novembro 2013 6 / 34

Eventos compostos Para cada nota recebida da performance: se o intervalo de tempo em relação à nota anterior for menor do que epsilon (100ms, por exemplo), adicionamos no mesmo evento composto; caso contrário, criamos um novo evento composto. rppbodo@ime.usp.br (IME-USP) Novembro 2013 6 / 34

Eventos compostos Para cada nota recebida da performance: se o intervalo de tempo em relação à nota anterior for menor do que epsilon (100ms, por exemplo), adicionamos no mesmo evento composto; caso contrário, criamos um novo evento composto. Com isso, reduzimos o problema do acompanhamento polifônico para o monofônico. rppbodo@ime.usp.br (IME-USP) Novembro 2013 6 / 34

1. Ornamentos Em um cenário ideal, temos uma bijeção entre a performance e a partitura. rppbodo@ime.usp.br (IME-USP) Novembro 2013 7 / 34

1. Ornamentos Em um cenário ideal, temos uma bijeção entre a performance e a partitura. rppbodo@ime.usp.br (IME-USP) Novembro 2013 7 / 34

1. Ornamentos Em um cenário ideal, temos uma bijeção entre a performance e a partitura. Porém, com alguns ornamentos nem sempre conseguimos fazer esse mapeamento. rppbodo@ime.usp.br (IME-USP) Novembro 2013 7 / 34

1. Ornamentos Problema: Em um trinado, por exemplo, não sabemos quantas notas o músico irá tocar. rppbodo@ime.usp.br (IME-USP) Novembro 2013 8 / 34

1. Ornamentos Problema: Em um trinado, por exemplo, não sabemos quantas notas o músico irá tocar. rppbodo@ime.usp.br (IME-USP) Novembro 2013 8 / 34

1. Ornamentos Solução sugerida: rppbodo@ime.usp.br (IME-USP) Novembro 2013 9 / 34

1. Ornamentos Solução sugerida: Input Preprocessor será agora um autômato finito com dois estados; rppbodo@ime.usp.br (IME-USP) Novembro 2013 9 / 34

1. Ornamentos Solução sugerida: Input Preprocessor será agora um autômato finito com dois estados; o primeiro (inicial) terá o comportamento padrão; rppbodo@ime.usp.br (IME-USP) Novembro 2013 9 / 34

1. Ornamentos Solução sugerida: Input Preprocessor será agora um autômato finito com dois estados; o primeiro (inicial) terá o comportamento padrão; o segundo irá lidar ornamentos. rppbodo@ime.usp.br (IME-USP) Novembro 2013 9 / 34

1. Ornamentos Solução sugerida: Input Preprocessor será agora um autômato finito com dois estados; o primeiro (inicial) terá o comportamento padrão; o segundo irá lidar ornamentos. o Matcher relata um ornamento na partitura para o Input Preprocessor; rppbodo@ime.usp.br (IME-USP) Novembro 2013 9 / 34

1. Ornamentos Solução sugerida: Input Preprocessor será agora um autômato finito com dois estados; o primeiro (inicial) terá o comportamento padrão; o segundo irá lidar ornamentos. o Matcher relata um ornamento na partitura para o Input Preprocessor; o Input Preprocessor sai do estado inicial e só volta quando: rppbodo@ime.usp.br (IME-USP) Novembro 2013 9 / 34

1. Ornamentos Solução sugerida: Input Preprocessor será agora um autômato finito com dois estados; o primeiro (inicial) terá o comportamento padrão; o segundo irá lidar ornamentos. o Matcher relata um ornamento na partitura para o Input Preprocessor; o Input Preprocessor sai do estado inicial e só volta quando: detecta uma nota mais longa; rppbodo@ime.usp.br (IME-USP) Novembro 2013 9 / 34

1. Ornamentos Solução sugerida: Input Preprocessor será agora um autômato finito com dois estados; o primeiro (inicial) terá o comportamento padrão; o segundo irá lidar ornamentos. o Matcher relata um ornamento na partitura para o Input Preprocessor; o Input Preprocessor sai do estado inicial e só volta quando: detecta uma nota mais longa; recebe a nota esperada da partitura após o ornamento; rppbodo@ime.usp.br (IME-USP) Novembro 2013 9 / 34

1. Ornamentos Solução sugerida: Input Preprocessor será agora um autômato finito com dois estados; o primeiro (inicial) terá o comportamento padrão; o segundo irá lidar ornamentos. o Matcher relata um ornamento na partitura para o Input Preprocessor; o Input Preprocessor sai do estado inicial e só volta quando: detecta uma nota mais longa; recebe a nota esperada da partitura após o ornamento; ultrapassa um tempo limite. rppbodo@ime.usp.br (IME-USP) Novembro 2013 9 / 34

1. Ornamentos rppbodo@ime.usp.br (IME-USP) Novembro 2013 10 / 34

2. Equivalência de oitavas Motivação: rppbodo@ime.usp.br (IME-USP) Novembro 2013 11 / 34

2. Equivalência de oitavas Motivação: o solista precisa tocar as notas da partitura de forma mais regrada para uma boa evolução do acompanhamento; rppbodo@ime.usp.br (IME-USP) Novembro 2013 11 / 34

2. Equivalência de oitavas Motivação: o solista precisa tocar as notas da partitura de forma mais regrada para uma boa evolução do acompanhamento; algum músico pode desejar tocar de forma mais livre em seu instrumento; rppbodo@ime.usp.br (IME-USP) Novembro 2013 11 / 34

2. Equivalência de oitavas Motivação: o solista precisa tocar as notas da partitura de forma mais regrada para uma boa evolução do acompanhamento; algum músico pode desejar tocar de forma mais livre em seu instrumento; também pode querer fazer acordes abertos quando não especificados. rppbodo@ime.usp.br (IME-USP) Novembro 2013 11 / 34

2. Equivalência de oitavas Solução sugerida: rppbodo@ime.usp.br (IME-USP) Novembro 2013 12 / 34

2. Equivalência de oitavas Solução sugerida: utilizar um vetor de bits para representar um evento composto; rppbodo@ime.usp.br (IME-USP) Novembro 2013 12 / 34

2. Equivalência de oitavas Solução sugerida: utilizar um vetor de bits para representar um evento composto; o bit menos significativo corresponde a C, o próximo bit corresponde a C# e assim por diante; rppbodo@ime.usp.br (IME-USP) Novembro 2013 12 / 34

2. Equivalência de oitavas Solução sugerida: utilizar um vetor de bits para representar um evento composto; o bit menos significativo corresponde a C, o próximo bit corresponde a C# e assim por diante; pitch class = midi number % 12. rppbodo@ime.usp.br (IME-USP) Novembro 2013 12 / 34

2. Equivalência de oitavas Solução sugerida: utilizar um vetor de bits para representar um evento composto; o bit menos significativo corresponde a C, o próximo bit corresponde a C# e assim por diante; pitch class = midi number % 12. Vantagens extras: rppbodo@ime.usp.br (IME-USP) Novembro 2013 12 / 34

2. Equivalência de oitavas Solução sugerida: utilizar um vetor de bits para representar um evento composto; o bit menos significativo corresponde a C, o próximo bit corresponde a C# e assim por diante; pitch class = midi number % 12. Vantagens extras: menor consumo de memória (eventos de 16 para 2 bytes); rppbodo@ime.usp.br (IME-USP) Novembro 2013 12 / 34

2. Equivalência de oitavas Solução sugerida: utilizar um vetor de bits para representar um evento composto; o bit menos significativo corresponde a C, o próximo bit corresponde a C# e assim por diante; pitch class = midi number % 12. Vantagens extras: menor consumo de memória (eventos de 16 para 2 bytes); melhor performance (operações bitwise). rppbodo@ime.usp.br (IME-USP) Novembro 2013 12 / 34

2. Equivalência de oitavas rppbodo@ime.usp.br (IME-USP) Novembro 2013 13 / 34

3. Paralelismo no Matcher O Matcher considera apenas um subconjunto da partitura. rppbodo@ime.usp.br (IME-USP) Novembro 2013 14 / 34

3. Paralelismo no Matcher O Matcher considera apenas um subconjunto da partitura. Problemas: rppbodo@ime.usp.br (IME-USP) Novembro 2013 14 / 34

3. Paralelismo no Matcher O Matcher considera apenas um subconjunto da partitura. Problemas: o músico pode avançar para fora da janela. rppbodo@ime.usp.br (IME-USP) Novembro 2013 14 / 34

3. Paralelismo no Matcher O Matcher considera apenas um subconjunto da partitura. Problemas: o músico pode avançar para fora da janela. ele pulou uma parte da partitura? rppbodo@ime.usp.br (IME-USP) Novembro 2013 14 / 34

3. Paralelismo no Matcher O Matcher considera apenas um subconjunto da partitura. Problemas: o músico pode avançar para fora da janela. ele pulou uma parte da partitura? temos um casamento errado devido a uma nota extra? rppbodo@ime.usp.br (IME-USP) Novembro 2013 14 / 34

3. Paralelismo no Matcher O Matcher considera apenas um subconjunto da partitura. Problemas: o músico pode avançar para fora da janela. ele pulou uma parte da partitura? temos um casamento errado devido a uma nota extra? devemos aumentar o tamanho da janela? rppbodo@ime.usp.br (IME-USP) Novembro 2013 14 / 34

3. Paralelismo no Matcher O Matcher considera apenas um subconjunto da partitura. Problemas: o músico pode avançar para fora da janela. ele pulou uma parte da partitura? temos um casamento errado devido a uma nota extra? devemos aumentar o tamanho da janela? o músico pode parar de tocar; rppbodo@ime.usp.br (IME-USP) Novembro 2013 14 / 34

3. Paralelismo no Matcher O Matcher considera apenas um subconjunto da partitura. Problemas: o músico pode avançar para fora da janela. ele pulou uma parte da partitura? temos um casamento errado devido a uma nota extra? devemos aumentar o tamanho da janela? o músico pode parar de tocar; ele vai voltar no ponto de onde parou? rppbodo@ime.usp.br (IME-USP) Novembro 2013 14 / 34

3. Paralelismo no Matcher O Matcher considera apenas um subconjunto da partitura. Problemas: o músico pode avançar para fora da janela. ele pulou uma parte da partitura? temos um casamento errado devido a uma nota extra? devemos aumentar o tamanho da janela? o músico pode parar de tocar; ele vai voltar no ponto de onde parou? ele vai voltar no ponto onde o Accompanist chegou? rppbodo@ime.usp.br (IME-USP) Novembro 2013 14 / 34

3. Paralelismo no Matcher Solução sugerida: rppbodo@ime.usp.br (IME-USP) Novembro 2013 15 / 34

3. Paralelismo no Matcher Solução sugerida: transformar o Matcher em um objeto; rppbodo@ime.usp.br (IME-USP) Novembro 2013 15 / 34

3. Paralelismo no Matcher Solução sugerida: transformar o Matcher em um objeto; criar uma nova instância quando tivermos dúvidas de onde o músico está; rppbodo@ime.usp.br (IME-USP) Novembro 2013 15 / 34

3. Paralelismo no Matcher Solução sugerida: transformar o Matcher em um objeto; criar uma nova instância quando tivermos dúvidas de onde o músico está; centralizamos cada janela nas posições alternativas; rppbodo@ime.usp.br (IME-USP) Novembro 2013 15 / 34

3. Paralelismo no Matcher Solução sugerida: transformar o Matcher em um objeto; criar uma nova instância quando tivermos dúvidas de onde o músico está; centralizamos cada janela nas posições alternativas; descartamos um dos Matchers quando o outro encontra um casamento confiável. rppbodo@ime.usp.br (IME-USP) Novembro 2013 15 / 34

3. Paralelismo no Matcher rppbodo@ime.usp.br (IME-USP) Novembro 2013 16 / 34

4. Accompanist Nas implementações anteriores: rppbodo@ime.usp.br (IME-USP) Novembro 2013 17 / 34

4. Accompanist Nas implementações anteriores: a partitura é uma sequência de eventos note-on/note-off; rppbodo@ime.usp.br (IME-USP) Novembro 2013 17 / 34

4. Accompanist Nas implementações anteriores: a partitura é uma sequência de eventos note-on/note-off; na ausência de casamentos o Accompanist toca cada evento quando seu tempo for alcançado; rppbodo@ime.usp.br (IME-USP) Novembro 2013 17 / 34

4. Accompanist Nas implementações anteriores: a partitura é uma sequência de eventos note-on/note-off; na ausência de casamentos o Accompanist toca cada evento quando seu tempo for alcançado; mantemos um ponteiro na partitura para saber até onde foi tocada; rppbodo@ime.usp.br (IME-USP) Novembro 2013 17 / 34

4. Accompanist Possibilidades: rppbodo@ime.usp.br (IME-USP) Novembro 2013 18 / 34

4. Accompanist Possibilidades: o Accompanist sabe onde o músico está na partitura; rppbodo@ime.usp.br (IME-USP) Novembro 2013 18 / 34

4. Accompanist Possibilidades: o Accompanist sabe onde o músico está na partitura; ele está adiantado em relação ao músico? rppbodo@ime.usp.br (IME-USP) Novembro 2013 18 / 34

4. Accompanist Possibilidades: o Accompanist sabe onde o músico está na partitura; ele está adiantado em relação ao músico? ele está atrasado em relação ao músico? rppbodo@ime.usp.br (IME-USP) Novembro 2013 18 / 34

4. Accompanist Possibilidades: o Accompanist sabe onde o músico está na partitura; ele está adiantado em relação ao músico? ele está atrasado em relação ao músico? o Accompanist descobre que a posição do solista estava errada. rppbodo@ime.usp.br (IME-USP) Novembro 2013 18 / 34

4. Accompanist Possibilidades: o Accompanist sabe onde o músico está na partitura; ele está adiantado em relação ao músico? ele está atrasado em relação ao músico? o Accompanist descobre que a posição do solista estava errada. ele deve pular na partitura para o ponto correto? rppbodo@ime.usp.br (IME-USP) Novembro 2013 18 / 34

4. Accompanist Possibilidades: o Accompanist sabe onde o músico está na partitura; ele está adiantado em relação ao músico? ele está atrasado em relação ao músico? o Accompanist descobre que a posição do solista estava errada. ele deve pular na partitura para o ponto correto? o que fazer com notas que já estavam soando? rppbodo@ime.usp.br (IME-USP) Novembro 2013 18 / 34

4. Accompanist Possibilidades: o Accompanist sabe onde o músico está na partitura; ele está adiantado em relação ao músico? ele está atrasado em relação ao músico? o Accompanist descobre que a posição do solista estava errada. ele deve pular na partitura para o ponto correto? o que fazer com notas que já estavam soando? o que fazer com notas que deveriam estar soando? rppbodo@ime.usp.br (IME-USP) Novembro 2013 18 / 34

4. Accompanist Algoritmo mais robusto: rppbodo@ime.usp.br (IME-USP) Novembro 2013 19 / 34

4. Accompanist Algoritmo mais robusto: o Accompanist recebe 3 informações do Matcher. rppbodo@ime.usp.br (IME-USP) Novembro 2013 19 / 34

4. Accompanist Algoritmo mais robusto: o Accompanist recebe 3 informações do Matcher. o tempo virtual do evento casado; rppbodo@ime.usp.br (IME-USP) Novembro 2013 19 / 34

4. Accompanist Algoritmo mais robusto: o Accompanist recebe 3 informações do Matcher. o tempo virtual do evento casado; uma indicação se o evento passado foi o próximo da sequência em relação ao último casado; rppbodo@ime.usp.br (IME-USP) Novembro 2013 19 / 34

4. Accompanist Algoritmo mais robusto: o Accompanist recebe 3 informações do Matcher. o tempo virtual do evento casado; uma indicação se o evento passado foi o próximo da sequência em relação ao último casado; o tempo virtual do próximo evento da partitura. rppbodo@ime.usp.br (IME-USP) Novembro 2013 19 / 34

4. Accompanist Algoritmo mais robusto: A cada relato de casamento, o Accompanist chama duas funções: rppbodo@ime.usp.br (IME-USP) Novembro 2013 20 / 34

4. Accompanist Algoritmo mais robusto: A cada relato de casamento, o Accompanist chama duas funções: change virtual time(); calcula o próximo valor do relógio virtual e muda as notas que estão soando rppbodo@ime.usp.br (IME-USP) Novembro 2013 20 / 34

4. Accompanist Algoritmo mais robusto: A cada relato de casamento, o Accompanist chama duas funções: change virtual time(); calcula o próximo valor do relógio virtual e muda as notas que estão soando adjust clock speed(). muda o andamento do acompanhamento para refletir o da performance solo rppbodo@ime.usp.br (IME-USP) Novembro 2013 20 / 34

4. Accompanist: change virtual time() Primeira decisão: rppbodo@ime.usp.br (IME-USP) Novembro 2013 21 / 34

4. Accompanist: change virtual time() Primeira decisão: if (delta virtual time < min delta){ // 100ms, por exemplo // a mudança no relógio virtual é descartada. } rppbodo@ime.usp.br (IME-USP) Novembro 2013 21 / 34

4. Accompanist: change virtual time() Primeira decisão: if (delta virtual time < min delta){ // 100ms, por exemplo // a mudança no relógio virtual é descartada. } Observações: rppbodo@ime.usp.br (IME-USP) Novembro 2013 21 / 34

4. Accompanist: change virtual time() Primeira decisão: if (delta virtual time < min delta){ // 100ms, por exemplo // a mudança no relógio virtual é descartada. } Observações: resulta em uma leitura mais suave do acompanhamento; rppbodo@ime.usp.br (IME-USP) Novembro 2013 21 / 34

4. Accompanist: change virtual time() Primeira decisão: if (delta virtual time < min delta){ // 100ms, por exemplo // a mudança no relógio virtual é descartada. } Observações: resulta em uma leitura mais suave do acompanhamento; se o solista quiser realmente mudar de andamento a magnitude será muito maior. rppbodo@ime.usp.br (IME-USP) Novembro 2013 21 / 34

4. Accompanist: change virtual time() Quando a mudança de tempo solicitada é realmente processada temos 2 possibilidades: rppbodo@ime.usp.br (IME-USP) Novembro 2013 22 / 34

4. Accompanist: change virtual time() Quando a mudança de tempo solicitada é realmente processada temos 2 possibilidades: 1 o casamento está na sequência; rppbodo@ime.usp.br (IME-USP) Novembro 2013 22 / 34

4. Accompanist: change virtual time() Quando a mudança de tempo solicitada é realmente processada temos 2 possibilidades: 1 o casamento está na sequência; o Accompanist adquire mais confiança em relação à posição do músico na partitura rppbodo@ime.usp.br (IME-USP) Novembro 2013 22 / 34

4. Accompanist: change virtual time() Quando a mudança de tempo solicitada é realmente processada temos 2 possibilidades: 1 o casamento está na sequência; o Accompanist adquire mais confiança em relação à posição do músico na partitura 2 o casamento não está na sequência. rppbodo@ime.usp.br (IME-USP) Novembro 2013 22 / 34

4. Accompanist: change virtual time() Quando a mudança de tempo solicitada é realmente processada temos 2 possibilidades: 1 o casamento está na sequência; o Accompanist adquire mais confiança em relação à posição do músico na partitura 2 o casamento não está na sequência. a noção que o Accompanist tinha da posição do solista pode estar errada rppbodo@ime.usp.br (IME-USP) Novembro 2013 22 / 34

4. Accompanist: change virtual time() Quando o casamento está na sequência temos 2 casos: rppbodo@ime.usp.br (IME-USP) Novembro 2013 23 / 34

4. Accompanist: change virtual time() Quando o casamento está na sequência temos 2 casos: 1 o Accompanist está atrasado; rppbodo@ime.usp.br (IME-USP) Novembro 2013 23 / 34

4. Accompanist: change virtual time() Quando o casamento está na sequência temos 2 casos: 1 o Accompanist está atrasado; rapidamente toca os eventos pendentes para alcançar o músico rppbodo@ime.usp.br (IME-USP) Novembro 2013 23 / 34

4. Accompanist: change virtual time() Quando o casamento está na sequência temos 2 casos: 1 o Accompanist está atrasado; rapidamente toca os eventos pendentes para alcançar o músico 2 o Accompanist está adiantado. rppbodo@ime.usp.br (IME-USP) Novembro 2013 23 / 34

4. Accompanist: change virtual time() Quando o casamento está na sequência temos 2 casos: 1 o Accompanist está atrasado; rapidamente toca os eventos pendentes para alcançar o músico 2 o Accompanist está adiantado. continua a tocar as notas que já começou (respeitando as durações) e espera o solista alcançar o acompanhamento naquele ponto rppbodo@ime.usp.br (IME-USP) Novembro 2013 23 / 34

4. Accompanist: change virtual time() A heurística na sequência apresenta um problema quando o músico faz uma mudança drástica no tempo. rppbodo@ime.usp.br (IME-USP) Novembro 2013 24 / 34

4. Accompanist: change virtual time() A heurística na sequência apresenta um problema quando o músico faz uma mudança drástica no tempo. Verificação extra: if (delta virtual time > max delta){ // 2s, por exemplo // Accompanist pula diretamente para o novo ponto } rppbodo@ime.usp.br (IME-USP) Novembro 2013 24 / 34

4. Accompanist: change virtual time() Quando o casamento não está na sequência: rppbodo@ime.usp.br (IME-USP) Novembro 2013 25 / 34

4. Accompanist: change virtual time() Quando o casamento não está na sequência: sincronizamos com o músico imediatamente; rppbodo@ime.usp.br (IME-USP) Novembro 2013 25 / 34

4. Accompanist: change virtual time() Quando o casamento não está na sequência: sincronizamos com o músico imediatamente; tocamos as notas que deveriam estar soando naquele ponto da partitura; rppbodo@ime.usp.br (IME-USP) Novembro 2013 25 / 34

4. Accompanist: change virtual time() Quando o casamento não está na sequência: sincronizamos com o músico imediatamente; tocamos as notas que deveriam estar soando naquele ponto da partitura; pré-processar a partitura para calcular quantas notas deveriam estar soando para cada evento da partitura; rppbodo@ime.usp.br (IME-USP) Novembro 2013 25 / 34

4. Accompanist: change virtual time() Quando o casamento não está na sequência: sincronizamos com o músico imediatamente; tocamos as notas que deveriam estar soando naquele ponto da partitura; pré-processar a partitura para calcular quantas notas deveriam estar soando para cada evento da partitura; ler a partitura de trás para frente a partir do tempo virtual atual e interpretar n eventos note-on. rppbodo@ime.usp.br (IME-USP) Novembro 2013 25 / 34

4. Accompanist: change virtual time() Quando o casamento não está na sequência: sincronizamos com o músico imediatamente; tocamos as notas que deveriam estar soando naquele ponto da partitura; pré-processar a partitura para calcular quantas notas deveriam estar soando para cada evento da partitura; ler a partitura de trás para frente a partir do tempo virtual atual e interpretar n eventos note-on. ajustar o ponteiro de evolução do acompanhamento. rppbodo@ime.usp.br (IME-USP) Novembro 2013 25 / 34

4. Accompanist: adjust clock speed() Tarefa: manter o valor da velocidade do relógio virtual. rppbodo@ime.usp.br (IME-USP) Novembro 2013 26 / 34

4. Accompanist: adjust clock speed() Tarefa: manter o valor da velocidade do relógio virtual. v = velocidade na qual o acompanhamento está sendo tocado (em relação ao que está definido na partitura) rppbodo@ime.usp.br (IME-USP) Novembro 2013 26 / 34

4. Accompanist: adjust clock speed() Tarefa: manter o valor da velocidade do relógio virtual. v = velocidade na qual o acompanhamento está sendo tocado (em relação ao que está definido na partitura) v = velocidade na qual o solo está sendo tocado (em relação ao que está definido na partitura) rppbodo@ime.usp.br (IME-USP) Novembro 2013 26 / 34

4. Accompanist: adjust clock speed() Tarefa: manter o valor da velocidade do relógio virtual. v = velocidade na qual o acompanhamento está sendo tocado (em relação ao que está definido na partitura) v = velocidade na qual o solo está sendo tocado (em relação ao que está definido na partitura) A cada novo relato do Matcher temos um novo ponto no gráfico de tempo real vs. virtual. rppbodo@ime.usp.br (IME-USP) Novembro 2013 26 / 34

4. Accompanist: adjust clock speed() Primeira abordagem: v = deta tempo virtual deta tempo real Resultado: respostas instantâneas na execução do andamento. Problema: performances reais possuem variações locais de velocidade que não indicam variações no andamento. rppbodo@ime.usp.br (IME-USP) Novembro 2013 27 / 34

4. Accompanist: adjust clock speed() Segunda abordagem: interpolação dos últimos n pontos. Resultado: execução mais suave do acompanhamento. Problema (insignificante): custo computacional. rppbodo@ime.usp.br (IME-USP) Novembro 2013 28 / 34

4. Accompanist: adjust clock speed() Heurística 1: rppbodo@ime.usp.br (IME-USP) Novembro 2013 29 / 34

4. Accompanist: adjust clock speed() Heurística 1: Quando ocorre um match fora de sequência, precisamos descartar a tabela atual. rppbodo@ime.usp.br (IME-USP) Novembro 2013 29 / 34

4. Accompanist: adjust clock speed() Heurística 1: Quando ocorre um match fora de sequência, precisamos descartar a tabela atual. Problema: rppbodo@ime.usp.br (IME-USP) Novembro 2013 29 / 34

4. Accompanist: adjust clock speed() Heurística 1: Quando ocorre um match fora de sequência, precisamos descartar a tabela atual. Problema: a velocidade não é ajustada enquanto a tabela não está cheia; rppbodo@ime.usp.br (IME-USP) Novembro 2013 29 / 34

4. Accompanist: adjust clock speed() Heurística 1: Quando ocorre um match fora de sequência, precisamos descartar a tabela atual. Problema: a velocidade não é ajustada enquanto a tabela não está cheia; a tabela pode demorar muito para ser preenchida; rppbodo@ime.usp.br (IME-USP) Novembro 2013 29 / 34

4. Accompanist: adjust clock speed() Heurística 1: Quando ocorre um match fora de sequência, precisamos descartar a tabela atual. Problema: a velocidade não é ajustada enquanto a tabela não está cheia; a tabela pode demorar muito para ser preenchida; o acompanhamento pode ultrapassar o músico. rppbodo@ime.usp.br (IME-USP) Novembro 2013 29 / 34

4. Accompanist: adjust clock speed() Heurística 1: Quando ocorre um match fora de sequência, precisamos descartar a tabela atual. Problema: a velocidade não é ajustada enquanto a tabela não está cheia; a tabela pode demorar muito para ser preenchida; o acompanhamento pode ultrapassar o músico. Solução: iremos atualizar a velocidade se a diferença entre o primeiro e o último ponto for maior que um limite (1s, por exemplo). rppbodo@ime.usp.br (IME-USP) Novembro 2013 29 / 34

4. Accompanist: adjust clock speed() Heurística 2: rppbodo@ime.usp.br (IME-USP) Novembro 2013 30 / 34

4. Accompanist: adjust clock speed() Heurística 2: Quando o músico toca muito rápido, as notas desse trecho não são boas indicadoras de andamento. rppbodo@ime.usp.br (IME-USP) Novembro 2013 30 / 34

4. Accompanist: adjust clock speed() Heurística 2: Quando o músico toca muito rápido, as notas desse trecho não são boas indicadoras de andamento. Solução: não inserimos um valor novo se a diferença entre ele e o último ponto for menor do que um limite (200ms, por exemplo). rppbodo@ime.usp.br (IME-USP) Novembro 2013 30 / 34

4. Accompanist: adjust clock speed() Heurística 2: Quando o músico toca muito rápido, as notas desse trecho não são boas indicadoras de andamento. Solução: não inserimos um valor novo se a diferença entre ele e o último ponto for menor do que um limite (200ms, por exemplo). Heurística 3: rppbodo@ime.usp.br (IME-USP) Novembro 2013 30 / 34

4. Accompanist: adjust clock speed() Heurística 2: Quando o músico toca muito rápido, as notas desse trecho não são boas indicadoras de andamento. Solução: não inserimos um valor novo se a diferença entre ele e o último ponto for menor do que um limite (200ms, por exemplo). Heurística 3: Se o Macther não relatar mais nenhum casamento o Accompanist pode terminar o acompanhamento sozinho. rppbodo@ime.usp.br (IME-USP) Novembro 2013 30 / 34

4. Accompanist: adjust clock speed() Heurística 2: Quando o músico toca muito rápido, as notas desse trecho não são boas indicadoras de andamento. Solução: não inserimos um valor novo se a diferença entre ele e o último ponto for menor do que um limite (200ms, por exemplo). Heurística 3: Se o Macther não relatar mais nenhum casamento o Accompanist pode terminar o acompanhamento sozinho. Solução ( detecção de fuga ): o Accompanist para de tocar depois de um período (2s, por exemplo) após o tempo do próximo evento esperado. rppbodo@ime.usp.br (IME-USP) Novembro 2013 30 / 34

5. Atrasos nos relatos do Matcher rppbodo@ime.usp.br (IME-USP) Novembro 2013 31 / 34

5. Atrasos nos relatos do Matcher o Accompanist tem alta confiança no Matcher; rppbodo@ime.usp.br (IME-USP) Novembro 2013 31 / 34

5. Atrasos nos relatos do Matcher o Accompanist tem alta confiança no Matcher; o Matcher relata um casamento toda vez que um novo evento gera um melhor casamento geral; rppbodo@ime.usp.br (IME-USP) Novembro 2013 31 / 34

5. Atrasos nos relatos do Matcher o Accompanist tem alta confiança no Matcher; o Matcher relata um casamento toda vez que um novo evento gera um melhor casamento geral; Problema: o Input Preprocessor pode deixar passar alguns ornamentos gerando casamentos errados. rppbodo@ime.usp.br (IME-USP) Novembro 2013 31 / 34

5. Atrasos nos relatos do Matcher Solução sugerida: rppbodo@ime.usp.br (IME-USP) Novembro 2013 32 / 34

5. Atrasos nos relatos do Matcher Solução sugerida: o Matcher deve atrasar relatos de notas não consecutivas; rppbodo@ime.usp.br (IME-USP) Novembro 2013 32 / 34

5. Atrasos nos relatos do Matcher Solução sugerida: o Matcher deve atrasar relatos de notas não consecutivas; se a nota esperada aparecer (dentro de um tempo máximo permitido de atraso), o relato anterior é cancelado; rppbodo@ime.usp.br (IME-USP) Novembro 2013 32 / 34

5. Atrasos nos relatos do Matcher Solução sugerida: o Matcher deve atrasar relatos de notas não consecutivas; se a nota esperada aparecer (dentro de um tempo máximo permitido de atraso), o relato anterior é cancelado; caso contrário, ele é enviado para o Accompanist. rppbodo@ime.usp.br (IME-USP) Novembro 2013 32 / 34

5. Atrasos nos relatos do Matcher Compensação no tempo virtual: rppbodo@ime.usp.br (IME-USP) Novembro 2013 33 / 34

That s all folks! The End! =) rppbodo@ime.usp.br (IME-USP) Novembro 2013 34 / 34