Skip to content
Thales Menato edited this page Nov 4, 2015 · 2 revisions

Simple Sonora logo

Simple Sonora

##Beginning This musical programming language was created as the final project for Compiler Design class with Professor Daniel Lucrédio at the Universidade Federal de São Carlos - Brazil. Our motivation was to build a compiler where we could use a simple but efficient language that would allow a musician (and hopefully any person) to write a song, transposing or composing it's own, in a fast and simplified way without wasting time with obnoxious interfaces that sometimes make this process harder.

##Inspiration We started with lots of ideas about what the language should be but we also researched musical programming languages that were similar to what we wanted to create. We learned about a lot of projects about music and programming that helped shape the development of our language:

  • ChucK : "...a programming language for real-time sound synthesis and music creation." - from their homepage.
  • Extempore : "...a systems programming language designed to support the programming of real-time systems in real-time. Extempore promotes human orchestration as a meta model of real-time man-machine interaction in an increasingly distributed and environmentally aware computing context. " - from readme file on GitHub page.

We drew a lot of inspiration from the language Alda, which according to their GitHub "...aims to be a powerful and flexible programming language for the musician who wants to easily compose and generate music on the fly, using naught but a text editor." We tried their language with multiple songs and took notes on what worked well. We used what we learned as a base for Simple Sonora.

Language

Our purpose is to define a simple syntax for a intuitive and fast learning of the language. You will find more information about the language and examples here.

Output

The output of Simple Sonora is a MIDI file that can be played using any synthesizer of your preference. We strongly recommend the use of any software that allow the use of VST instruments for a better playback experience.

Tools

We used ANTRL v4.5 for our past Compiler Design projects. However, for this project our professor suggested that we use XText which runs on top of ANTRL. XText is an Eclipse plugin which runs another instance of Eclipse with itself on it. This allows us to focus on the Grammar and Code Generation and use the Eclipse interface with the final product.

To be more specific, we are currently using:

  • Eclipse Mars.1 Release (4.5.1)
  • XText 2.8.0

For MIDI generation we are using Java library JFugue 5.0

Clone this wiki locally