Musikla: music and keyboard language

Detalhes bibliográficos
Autor(a) principal: Silva, Pedro Miguel Oliveira da
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