The GUIDO Language and Engine

Dominique Fober, Mike Solomon
Introduction

The Guido Notation Format is a general purpose formal language for representing score-level music in a platform-independent plain text and human readable way. It is based on a conceptually simple but powerful formalism; its design concentrates on general musical concepts as opposed to notational (i.e. graphical) features. A key feature of the Guido design is adequacy, meaning that simple musical concepts should be represented in a simple way and only complex notions should require complex representations.

The Guido Engine is a cross-platform library based on the Guido Notation Format. Its core, written in C++, has few dependencies and thus can be compiled for all main operating systems (Linux, Mac OS, Windows, Android, iOS) and embedded in languages like Java and Python. A Web API is also available, allowing to deploy the engine as a web service and a Javascript version of the library provides all these services, embeddable in a Web page.

Guido library

Efficiency is among the key features of the engine, allowing for just-in-time score computing and rendering. Automatic layout is also part of the engine specific features.

Another library, GuidoAR, is part of the Guido ecosystem. It provides an simple and homogeneous interface for Guido scores manipulations and includes a set of pre-defined score level composition operations.

All these components are open source software and binary distributions include a Guido editor as well as various tools, notably to convert Guido scores to various formats.


Content

The workshop is intended to give the participants a good knowledge of the Guido Notation format, including advanced features. It is also intended to Application Developers and / or Web Designers: the participants will learn how to deploy the library on various platforms, including Web browsers. The basics of the library API will be introduced and an overview of the GuidoAR library will be given. Lastly, Guido's strength as an embeddable music engine will be discussed. We will look at its advantages in embeddability and do some hands-on examples of compiling Guido to be embedded and embedding it in environments like the web, a smartphone and a Raspberry Pi.

Schedule

duration description
10mn Introduction An history of the Guido environment
30mn The Guido Format Basic and advanced features of the Guido Notation Format
15mn Documentation Presentation of the various documentation ressources
15mn break
30mn The Guido Engine The engine internal operations
The API overview
How to compile for different platforms
The Javascript library
15mn The GuidoAR libraryAn overview of a library for score manipulations
15mn break
40mn Embedding Guido An overview of how to embed Guido
Examples of where Guido is embedded
Creating a Guido screen renderer
When and when not to use Guido
10mn Questions and discussion

Organizers

Dominique Fober

Dominique Fober has both a scientific and musical background. He is doing computer music research at Grame - National Center for Music Creation based in Lyon, France - for over 20 years. His research is concerned mainly with software architecture for real-time musical systems, languages for musical composition, and music notation and representation systems. He has created, as author or joint author, many musical systems and programs. He's heading the development of the Guido language and libraries since 2002. His most recent work focuses on the extension of the music score, with the aim of covering the needs of the contemporary music creation as well as those of technology enhanced music pedagogy. His approach of the music notation has been turned into the INScore environment that he's developing since 2009.

Mike Solomon

Mike Solomon currently wears multiple hats as the director of the Paris-based Ensemble 101, the head audio engineer at Jongla and a RIM at the IRCAM. He has worked extensively with GUIDO as a contracter at the Grame, particularly on integration of Guido into web environments.


Participants

Attendees should feel comfortable with computers and should ideally have used a computer music notation program before. If possible, basic knowledge about computer scripting and/or programming is a plus.

Participants can use their own computer. It is recommended to download the Guido Qt applications before the workshop.

Linux users should make sure they have Qt version 5.5.0 or greater installed (see the Qt website).

For the Guido Engine part, the participants should get the source code from git (preferred):
git clone git://git.code.sf.net/p/guidolib/code guidolib-code
or from the source distribution.