1 Ritornello Um Framework para Representação de Conhecimento Musical ORIENTANDO - Sylvio Pessoa...
Transcript of 1 Ritornello Um Framework para Representação de Conhecimento Musical ORIENTANDO - Sylvio Pessoa...
1
RitornelloUm Framework para Representação de Conhecimento Musical
ORIENTANDO - Sylvio Pessoa
ORIENTADOR - Geber Ramalho
Pós-Graduação em Ciência da ComputaçãoPós-Graduação em Ciência da Computação
Programa de MestradoPrograma de Mestrado
2
Roteiro
O Problema
Padrões, APIs e Frameworks Musicais
Características do Ritornello
O projeto
Trabalhos Futuros
Sugestões de Exercícios
3
Roteiro
O Problema
Padrões, APIs e Frameworks Musicais
Características do Ritornello
O projeto
Trabalhos Futuros
Sugestões de Exercícios
4
O Problema
5
O Problema
Modelagem ad hoc de elementos musicais no desenvolvimento de aplicações musicais Complexidade e relevância de elementos da teoria musical
Poucos esforços em efetiva reutilização de conhecimento musical
6
Roteiro
O Problema
Padrões, APIs e Frameworks Musicais
Características do Ritornello
O projeto
Trabalhos Futuros
Sugestões de Exercícios
7
Padrões Musicais
MIDI / XMF+ Fácil manipulação dos dados
+ Pequeno espaço ocupado pelo arquivo
- Pouco expressivo para representação do conhecimento musical
- Dificuldade de conversão para partitura eletrônica
MusicXML+ Modelagem alto nível de elementos musicais
+ Facilidade para conversão para partitura eletrônica
+ XML
- Não é operacional
Padrão/Protocolo Musical
API Manipulação Musical
Framework
Aplicação
8
MusicXML (cont.)
Padrões Musicais
Padrão/Protocolo Musical
API Manipulação Musical
Framework
Aplicação
Principais elementos do MusicXML
9
APIs de Manipulação Musical
Java Sound Java
+ MIDI
- Representação dos elementos musicais é muito simples e não reflete as particularidades da teoria musical
API Manipulação Musical
Framework
Aplicação
Padrão/Protocolo Musical
10
MusES Longo projeto Modelagem orientada a objetos complexa de elementos
musicais de base Implementação em Smalltalk
+ Vários aspectos da complexidade da harmonia tonal foram tratados
- Rara utilização de metodologias de modelagem e documentação orientadas a objetos
- Incompatibilidade com padrões musicais modernos
Framework
Aplicação
Padrão/Protocolo Musical
API Manipulação Musical
Frameworks de Conhecimento Musical
11
Roteiro
O Problema
Padrões, APIs e Frameworks Musicais
Características do Ritornello
O projeto
Trabalhos Futuros
Sugestões de Exercícios
12
Características do Ritornello
Características Modelagem dos conceitos fundamentais da teoria
musical Aplicações de análise, composição e execução
musical Compatível com os padrões mais modernos de
representação musical MusicXML, MIDI, etc.
Abstração da linguagem de implementação Cursos x projetos de pesquisa
Independência da API de manipulaçãoIndependência da API de manipulação
13
Camadas...
Padrão/Protocolo musical MIDI, XMF, MusicXML
API Manipulação Musical
Framework
Aplicação
Java Sound, MidiShare
Ritornello
D’Accord Violão, ChordFinder, JSS, PET
14
Abordagem
MusES como referência funcional
Benefícios da maturidade e da agilidade da modelagem do MusicXML
Reutilização
15
Roteiro
O Problema
Padrões, APIs e Frameworks Musicais
Características do Ritornello
O projeto
Trabalhos Futuros
Sugestões de Exercícios
16
Pacotes
Diagrama de interação de pacotes
17
Visão Geral das Classes
Diagrama de classes do Ritornello
Interval(from conceitual) PlayableElement
(from playable)
Chord(from conceitual)...)
Scale(from conceitual)
Note(from conceitual)
-root-third
-fifth-seventh
-root
PitchName(from conceitual)
-pitchName
PlayableNote(from playable)
PlayableChord(from playable)
Lapse(from playable)
-lapse -lapseKeySignature(from performance)
TimeSignature(from performance)
Rollable
(from conceitual)
Runnable
(from performance)
Serializable
(from performance)
Collection
(from core)
Clef(from performance)
Score(from performance)...)
Staff(from performance)...)-clef
Measure(from performance)...)
-startMeasure
-keySignature
-timeSignature -measures
-staff
-staves
-score
18
A Nota Musical
Detalhe das classes de representação de nota musical
Fá#
1)
2)
3)
19
A Nota Musical
Detalhe das classes de representação de nota musical
PitchName
value : int
getValue()setValue()getName()getNext()getBack()goTo()
(f rom core)
Note
accident : int
getChords()getScales()getAccident()setAccident()getAccidentName()getPitchName()equals()setPitchName()getName()
(f rom core)
0..*
1
0..*
1
PlayableNote
octave : int
setLapse()getLapse()getOctave()setOctave()equals()
(f rom core)
PlayableElement
setLapse()getLapse()
(f rom core)
PlayableChord
setLapse()getLapse()
(f rom core)
Rollable
getNext()getBack()
goTo()
(f rom core)
20
O Tempo Musical
A representação de tempo no Ritornello
Res: 96
21
O Tempo Musical
A representação de tempo no Ritornello
Measure
number : intdivisions : int
getTimeSignature()getKeySignature()getNumber()getStaff()setNumber()removeAllElements()removeElement()setStaff()addElement()getElements()importFrom()exportTo()setTimeSignature()setKeySignature()
(f rom core)
PlayableElement
setLapse()getLapse()
(f rom core)PlayableChord
setLapse()getLapse()
(f rom core)
Lapse
startBeat : longstartTick : longdurationTicks : long
getDurationTicks()setDurationTicks()getStartBeat()setStartBeat()getStartMeasure()setStartMeasure()getStartTick()setStartTick()
(f rom core)
0..*
1
0..*
1
0..*
0..1
0..*
0..1
PlayableNote
octave : int
setLapse()getLapse()getOctave()setOctave()equals()
(f rom core)
0..*
0..1
0..*
0..1
22
O Pacote Conceitual
Diagrama das classes mais complexas do Ritornello
Scale
getChromatic()getMinorHarmonic()getMajor()getMinorMelodic()getIntervalList()getRoot()setRoot()getName()removeElement()removeAllElements()getValue()addElement()getElements()getNoteByDegree()getTriadByDegree()
(f rom core)
Chord
getName()getMajor()getMinor()setRoot()getRoot()addElement()removeElement()removeAllElements()getElements()getThirdType()getFifthType()getSeventhType()getThird()getFifth()getSeventh()
(f rom core)
Interval
semitones : int
getName()setSemitones()getSemitones()calculateShortestNoteInterval()calculateLongestNoteInterval()calculateNoteFowardInterval()calculateNoteBackwardInterval()calculateNoteInterval()calculatePlayableNoteInterval()calculatePlayableNoteInterval()isEnharmonic()getEnharmonicsList()
(f rom core)
23
O Projeto
ConclusõesConclusões Hierarquia enxuta e estruturada
Facilita muito a reutilização e extensão dos componentes Classes de execução refletem elementos do MusicXML Modelagem da nota musical
Simples e poderosa Representação de tempo musical
Elimina deficiências do formato do MusES Agrupamento de funcionalidades comuns em interfaces
24
Roteiro
O Problema
Padrões, APIs e Frameworks Musicais
Características do Ritornello
O projeto
Trabalhos Futuros
Sugestões de Exercícios
25
Trabalhos Futuros
Expansão do Ritornello Editores musicais de partitura, tablatura e correlatos Classes para análise em harmonia funcional Ambiente interativo: interface visual + repositório de
objetos (MusicXML)
Implementação em C++ (D’Accord)
26
Roteiro
O Problema
Padrões, APIs e Frameworks Musicais
Características do Ritornello
O projeto
Trabalhos Futuros
Sugestões de Exercícios
27
Sugestões de Exercícios
Criação de uma mini-peça musical para execuçãoCriação de uma mini-peça musical para execução
Substituição de notas musicais da mini-peça por enarmônicas. O Substituição de notas musicais da mini-peça por enarmônicas. O som muda ?som muda ?
Identificação de intervalos musicais entre as notas da mini-peçaIdentificação de intervalos musicais entre as notas da mini-peça
Formação da escala Mi menor harmônica, e identificação do 7º Formação da escala Mi menor harmônica, e identificação do 7º grau desta escalagrau desta escala
Formação do acorde de Fá Maior, e identificação das suas notasFormação do acorde de Fá Maior, e identificação das suas notas
Identificação de acordes através de suas notas musicaisIdentificação de acordes através de suas notas musicais