Musikla: music and keyboard language
Autor(a) principal: | |
---|---|
Data de Publicação: | 2020 |
Tipo de documento: | Dissertação |
Idioma: | por |
Título da fonte: | Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
Texto Completo: | https://hdl.handle.net/1822/82139 |
Resumo: | Dissertação de mestrado em Engenharia Informática |
id |
RCAP_7fb8d3cb103cc4d8f18e018adb186887 |
---|---|
oai_identifier_str |
oai:repositorium.sdum.uminho.pt:1822/82139 |
network_acronym_str |
RCAP |
network_name_str |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
repository_id_str |
7160 |
spelling |
Musikla: music and keyboard languageMusikla: linguagem para música e tecladosInterpretadorLinguagem de domínio específicoNotação musicalProcessamento de linguagensDomain specific languageInterpreterLanguage processingMusic notationCiências Naturais::Ciências da Computação e da InformaçãoDissertação de mestrado em Engenharia InformáticaNesta dissertação iremos estudar uma abordagem para a análise, criação e descrição de música através de uma Domain Specific Language (DSL). Trata-se de uma linguagem dinâmica, com todas as funcionalidades a que estamos habituados, tais como variáveis, funções, ciclos, condicionais. Para além disso, os dois fatores de diferenciação passam pela sintaxes especializadas para declaração de acom panhamentos musicais e de teclados virtuais. Esta linguagem deve depois poder ser avaliada e os seus resultados convertidos para diversos formatos, desde ficheiros de som, MIDI, ou reproduzir diretamente as notas para as colunas do computador. Com este intuito vamos analisar as linguagens já existentes neste espaço, bem como quais as funci onalidades que já implementam, e aquelas que consideramos estarem em falta. Como esses aspetos em mente, de seguida propomos uma linguagem que tente aproveitar as boas ideias daquilo que já existe, mais as nossas soluções para os novos desafios que encontramos. Introdu zimos também vários casos de estudo para demonstrarem as vantagens que acreditamos existirem na nossa abordagem. Finalmente descrevemos também o processo de desenvolvimento da linguagem, dividido em três fases principais: 1. O desenho da sintaxe, da sua gramática, e do parser. 2. A implementação do interpretador. 3. O desenvolvimento de uma biblioteca standard para ser incluída com a linguagem. A nível da sintaxe e da gramática, descrevemos sucintamente toda a linguagem. Damos particular atenção às expressões de declarações de acompanhamentos musicais e de teclados. Em termos grama ticais, são apenas expressões, ou seja, as suas sintaxes devem integrar-se homogeneamente no resto da linguagem. E como tal, podemos utilizá-las em qualquer sítio que onde podemos introduzir uma expressão, seja ela um número, uma string ou o que quer que for. Esta integração sem separação significa que todos os aspetos da linguagem têm de ser pensados de forma a coexistir sem problemas. Iremos por isso analisar quais os desafios encontrados pela introdução destas novas classes de expressões na gramática, e quais as soluções que foram tomadas para contornar essas situações. A nível do interpretador, discutimos várias das opções que poderiam ser escolhidas (interpretadores tree walk, máquinas bytecode, compilação JIT) bem como justificamos a nossa escolha de utilizar um interpretador tree-walk. A nível da biblioteca standard, descrevemos os vários formatos suportados, quer de input, quer de output, bem como os mecanismos providenciados para a utilização de teclados, como grelhas e buffers. No final, descrevemos como correr scripts escritos na nossa linguagem: através de uma aplicação de linha de comandos desenvolvida em Python, chamada musikla, publicada no Python Package Index (PyPI) 1, e cujo código é disponibilizado livremente no GitHub2.In this dissertation we’ll study an approach to the analysis, creation and description of music through a Domain Specific Language (DSL). It is a dynamic language with all the features we are used to, such as variables, functions, loops and conditionals. Furthermore, the two diferrentiating factors about this language are the specialized sintax for declaration of musical arrangements and virtual keyboards. Once evaluated, the results of this language whould be able to be converted into multiple formats, ranging from sound files, MIDI files, our even sounds played directly by the computer’s speakers. To accomplish that, we’ll analyze existent languages in this space, as well as what functionalities they already implement, and which ones we consider missing from them. With those aspects in mind, we’ll start by proposing a language that tries to reuse the good ideas that are already in use by other projects, plus our own solutions to the challanges we find. We’ll also list several case studies that demonstrate what we believe are the main advantages in our approach. Finaly we’ll describe as well the process of developing said language, divided in three main phases: 1. The design of the syntax, its grammar and parser. 2. The interpreter’s implementation. 3. The development of a standard library to be included in the language. With regards to the syntax and the grammar, we’ll briefly describe the entire language, giving particular attention to the musical arrangements and keyboards’ declaration expressions. Gramattically, those are regular expressions, and so their syntaxes must integrate seamlessly in the rest of the langfuage. This means being able to use them anywhere we could use an expression, be it a number, a string our anything else. This integration without any specific separation means that all the aspects of the language must be thought of in a way to coexist without issues. Because of that, we’ll discuss the challanges we faces by introducing these new classes of expressions in our grammar, and what solutions we found to go around those situations. In terms of the interpreter, we discuss several options that could be chosen (tree-walk interpreters, bytecode machines, JIT compilation), as well as the justification for our ultimate choice of building a tree walk interpreter. In terms of the standard library, we describe the multiple formats supported, both for input and output, as well as the provided facilities to the use of our virtual keyboards, such as grids and buffers. In the end, we describe briefly how to run scripts written in our language: through a command line application developed in Python, called musikla, published in Python Package Index (PyPI)3, and whosesource code is freely available on GitHub4.Almeida, J. J.Universidade do MinhoSilva, Pedro Miguel Oliveira da2020-11-132020-11-13T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttps://hdl.handle.net/1822/82139por203084993info:eu-repo/semantics/openAccessreponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãoinstacron:RCAAP2023-07-21T12:51:45Zoai:repositorium.sdum.uminho.pt:1822/82139Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireopendoar:71602024-03-19T19:50:43.988188Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãofalse |
dc.title.none.fl_str_mv |
Musikla: music and keyboard language Musikla: linguagem para música e teclados |
title |
Musikla: music and keyboard language |
spellingShingle |
Musikla: music and keyboard language Silva, Pedro Miguel Oliveira da Interpretador Linguagem de domínio específico Notação musical Processamento de linguagens Domain specific language Interpreter Language processing Music notation Ciências Naturais::Ciências da Computação e da Informação |
title_short |
Musikla: music and keyboard language |
title_full |
Musikla: music and keyboard language |
title_fullStr |
Musikla: music and keyboard language |
title_full_unstemmed |
Musikla: music and keyboard language |
title_sort |
Musikla: music and keyboard language |
author |
Silva, Pedro Miguel Oliveira da |
author_facet |
Silva, Pedro Miguel Oliveira da |
author_role |
author |
dc.contributor.none.fl_str_mv |
Almeida, J. J. Universidade do Minho |
dc.contributor.author.fl_str_mv |
Silva, Pedro Miguel Oliveira da |
dc.subject.por.fl_str_mv |
Interpretador Linguagem de domínio específico Notação musical Processamento de linguagens Domain specific language Interpreter Language processing Music notation Ciências Naturais::Ciências da Computação e da Informação |
topic |
Interpretador Linguagem de domínio específico Notação musical Processamento de linguagens Domain specific language Interpreter Language processing Music notation Ciências Naturais::Ciências da Computação e da Informação |
description |
Dissertação de mestrado em Engenharia Informática |
publishDate |
2020 |
dc.date.none.fl_str_mv |
2020-11-13 2020-11-13T00:00:00Z |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/masterThesis |
format |
masterThesis |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
https://hdl.handle.net/1822/82139 |
url |
https://hdl.handle.net/1822/82139 |
dc.language.iso.fl_str_mv |
por |
language |
por |
dc.relation.none.fl_str_mv |
203084993 |
dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
dc.format.none.fl_str_mv |
application/pdf |
dc.source.none.fl_str_mv |
reponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação instacron:RCAAP |
instname_str |
Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação |
instacron_str |
RCAAP |
institution |
RCAAP |
reponame_str |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
collection |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
repository.name.fl_str_mv |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação |
repository.mail.fl_str_mv |
|
_version_ |
1799133093018206208 |