Calliope User Guide (0.10.0)

Calliope is an application that allows you to create music by generating MIDI content for multiple MIDI tracks and instruments at once. The generation is controlled by a set of global controls and local / track-specific parameters.

Music is encoded in a symbolic format called MIDI, think of it like a computerized version of information from a music sheet. MIDI files are file containing symbolic representation of a piece of music. This information is used to construct datasets such as MetaMIDI, and trained deep learning algorithms on it. Calliope uses the MMM model which can generate MIDI music in a variety of music genres and by combining three different user inputs: bar in-filing, global parameters and track attributes.


In order to use Calliope, we first need to register an account. The account is only necessary in order to store generated music files for the various sessions you work on.

Login instructions: To login, go to the registration page, and enter a username, email and password. You should see a notification at the bottom of the window confirming your registration. After that, you can move to the login page and enter the same username and password to log in.

You should then see this default “empty” view of the Calliope interface.

Calliope’s Logged-In Interface

Getting Started

Compositional Workflow in Calliope


  •  n : This corresponds the step “n” highlighted in the “Compositional workflow in Calliope” diagram.
  • [x]: This matches the “number indicator” in the “Calliope’s Interface” image screenshot (see below)

Here are the following steps to use Calliope to generate music.

1-2 First, we create a session [4]. We do this by importing a MIDI file from our computer. We also offer a list of websites containing free MIDI resources. The uploaded MIDI file show up in the MIDI File Management section [13].

2.1 You can add more of your existing files into your Calliope session by using the “Upload” button [5].

 3   Then, we can load the MIDI file in the MIDI Viewer / Editor by clicking on the file. The MIDI note content for each track is displayed, in addition to the track information such as its channel number and assigned instrument [15]. You can change the playback instrument, add/remove notes or delete a MIDI track.

Note: Changes to a MIDI file are not persistent and solely for purpose of preparing the generation. In other words, if you try to reload the MIDI file, you will lose your changes! Additionally, notice that the new files generated will contain your changes.

4-6 To generate, we must select the bars in each MIDI channel we wish to update: this is called “bar in-filling” [16]. You can set global parameters [11] and track-specific music attributes [17] such as density, polyphony and note length. If you hover on any of these controls, a tooltip will appear with a detailed explanation what they are and how to use them.

Note: You can add any new track to your MIDI file through the “+” button in Calliope. However, there can only be one drum track! Currently, generation will silently fail if your file contains more than one MIDI drum track.

Note: When you create a new track, all bars are selected by default. If you want to select only a subset of the parts, you can do using the mouse and selecting/unselecting a number of bars. Otherwise, you can also used the “Select all” button to select/unselect all bars in the track at once.

7-8 After you are satisfied with your settings, you can choose how many new samples / files you want the system to generate [12] and press the Generate button [12]. The system will replace the MIDI content in the selected bars in a way that maintains its musical coherency with the neighboring bars and the other MIDI tracks in the file.

 9 The generated files are added to the top of the file list in the MIDI File Management section [13]. From there, you can repeat the process from step 1). The naming convention for generated files is as follow: RandomIDNumber_BatchID_generalparamsfirstletter_generalparamvalues_.mid

 9 You can download any MIDI file by clicking on the “Download”  ↓  button on the file. To download all files from your dataset (as a .zip file), click on the “Download”  ↓  button at the top of the file table [10]

This figure briefly summarizes the typical computer-assisted composition process the user will follow in Calliope.

Global Parameters

Global user settings for the generative algorithm

Temperature (0.8-1.2): Also called typicality, determines how much the structure of the generated MIDI content is closer (conservative) or farther (experimental) to what the MMM model is most likely to generate. Technically, it corresponds to the the temperature in the sampling of the neural network. This is the control you will want to use most to influence the output of the MMM model.

Polyphony Hard Limit (1-6): The global maximum number of simlutaneous notes the system can generate at any given moment. This overrides min/max polyphony controls set on specific channels.

Percentage (0-100): Controls how much of the existing MIDI content is preserved or replaced by the generation. This is done based on the number of tracks per step and bars per step.
For example, for tracks per step and bars per step each 4, and percentage at 25, the model will process only 4 out of 16 bars to be generated at each generation step.

Model Dimensions (1-8): Dimensions of the model in bars

Tracks per Step (1-8): Number of tracks being processed at each generation step

Bars per Step (1-8): Number of bars processed within each track at each generative step

Max Steps (0-100): Maximum number of generation steps. Can be used to avoid memory overload. When this value is set to zero, it is ignored by the system,

Tempo (0-240): The new tempo set for the generated MIDI output file


Calliope’s Interface
  • [1] Page Navigation Menu which includes: Home, Update Profile, Logout.
  • [3] Add/Delete session:
    • New: Create a new empty corpus with a name
    • Delete: Delete the selected corpus
  • [4] Select a session to work from. The selected session’s name is displayed. A session is first created for a given MIDI file.
  • [5] Add new MIDI files to the session
  • [7] Bar Selector / MIDI Viewer: to visualize selected MIDI file. The “+” adds a new MIDI track to the file and displays it visually.
  • [8] MIDI Player:
    • Player controls:
      • Song title,
      • Repeat when done,
      • Previous track in the table of MIDI files,
      • Play/stop,
      • Next track in the table of MIDI files,
      • Individual download button
    • MIDI Streaming port: Stream to a MIDI port. Calliope discovers and displays all available MIDI ports on your machine. By default, Calliope enables a port called “Calliope Bus 1” for use. This will stop and restart the track
    • Soundfont: select the MIDI sound source for playback
    • Tempo adjustment
    • Volume slider
  • [8] MIDI Player Keyboard Shortcuts:
    • Spacebar: Play/Stop
    • “V”: previous track
    • “B”: next track
  • [18] Explore the set of MIDI files using tick-by-tick or TSNE visualizations.


  • [11] Global AI Parameters: Use to configure the MMM’s generative behavior
  • [12] Generate Options:
    • Number of samples: This is the number of MIDI files you want to generate at once
    • Generate Button: This will effectively run the generation of MIDI files given the configured settings and controls
  • [13] Table of original and generated MIDI files for the selected session. MIDI files are listed here.
  • [13] Naming convention for generated files: “numberfrombatch_random.batch.id_generalparamsfirstletter_generalparamvalues_ 
  • [10] Download all MIDI files from the fileset (as a .zip file)
  • [15] MIDI track properties
    • MIDI Channel number for this track
    • Instrument: the MIDI GM Standard instrument assigned to this channel.
  • [16] Bar selection: This is achieved by a drag-selection action using your mouse. Selecting Bars for MIDI Generation.
  • [17] Channel-specific controls for generation