1 Ritornello Um Framework para Representação de Conhecimento Musical ORIENTANDO - Sylvio Pessoa...

Preview:

Citation preview

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

28

Obrigado !Obrigado !

Contato: sylviop@uol.com.brContato: sylviop@uol.com.br

Fim

Recommended