Utilize este identificador para referenciar este registo: https://hdl.handle.net/1822/82139

Registo completo
Campo DCValorIdioma
dc.contributor.advisorAlmeida, J. J.por
dc.contributor.authorSilva, Pedro Miguel Oliveira dapor
dc.date.accessioned2023-01-24T11:17:54Z-
dc.date.available2023-01-24T11:17:54Z-
dc.date.issued2020-11-13-
dc.date.submitted2020-08-
dc.identifier.urihttps://hdl.handle.net/1822/82139-
dc.descriptionDissertação de mestrado em Engenharia Informáticapor
dc.description.abstractNesta 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.por
dc.description.abstractIn 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.por
dc.language.isoporpor
dc.rightsopenAccesspor
dc.rights.urihttp://creativecommons.org/licenses/by-nc-sa/4.0/por
dc.subjectInterpretadorpor
dc.subjectLinguagem de domínio específicopor
dc.subjectNotação musicalpor
dc.subjectProcessamento de linguagenspor
dc.subjectDomain specific languagepor
dc.subjectInterpreterpor
dc.subjectLanguage processingpor
dc.subjectMusic notationpor
dc.titleMusikla: music and keyboard languagepor
dc.title.alternativeMusikla: linguagem para música e tecladospor
dc.typemasterThesiseng
dc.identifier.tid203084993por
thesis.degree.grantorUniversidade do Minhopor
sdum.degree.grade19 valorespor
sdum.uoeiEscola de Engenhariapor
dc.subject.fosCiências Naturais::Ciências da Computação e da Informaçãopor
Aparece nas coleções:BUM - Dissertações de Mestrado
DI - Dissertações de Mestrado

Ficheiros deste registo:
Ficheiro Descrição TamanhoFormato 
Pedro Miguel Oliveira da Silva.pdf2,76 MBAdobe PDFVer/Abrir

Este trabalho está licenciado sob uma Licença Creative Commons Creative Commons

Partilhe no FacebookPartilhe no TwitterPartilhe no DeliciousPartilhe no LinkedInPartilhe no DiggAdicionar ao Google BookmarksPartilhe no MySpacePartilhe no Orkut
Exporte no formato BibTex mendeley Exporte no formato Endnote Adicione ao seu ORCID