Erik Ramsgaard Wognsen

Thoughts & technology

Yousician “No tempo definitions found”

This summer my girlfriend and I started practicing piano with Yousician, which is a kind of gamified music tutor, that listens to your playing and gives instant feedback. It contains songs of gradually increasing difficulty, plus you can upload your own songs in the MusicXML format.

“Adding songs is very easy”, claims the documentation, but at our first attempt we were met with this error message: “No tempo definitions found. Please specify tempo in the file.” Googling the error message gave no results at all, so hopefully this post will change that.

MusicXML is an interchange format with files typically generated or exported from scorewriter programs. But us being programmers, we looked to the XML itself to fix the problem. To find a minimal working example, we tried the MusicXML “Hello World” example. Uploaded to Yousician, it gave the same error message about the tempo missing.

Solution

If you control the scorewriter generating the MusicXML file and it allows including tempo when you export, that should be the simple solution. Otherwise, in the first <measure> element, add <sound tempo="120"/> with your desired tempo in BPM:

1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE score-partwise PUBLIC
    "-//Recordare//DTD MusicXML 3.1 Partwise//EN"
    "http://www.musicxml.org/dtds/partwise.dtd">
<score-partwise version="3.1">
  <part-list> ... </part-list>
  <part id="P1">
    <measure number="1">
      <sound tempo="120"/>  <!-- ADD THIS ELEMENT -->
      <attributes> ... </attributes>
      <note> ... </note>
      ...

Details

I don’t think Yousician complies completely with the MusicXML standard. Two things from the documentation of the sound element:

  • The sound element […] can stand alone within a part/measure […]
  • If [the tempo is] 0, the sound-generating program should prompt the user at the time of compiling a sound (MIDI) file.

Yousician doesn’t recognize a sound element in a part, only in a measure. Second, if we see Yousician as a “sound-generating program” (it can play the uploaded piece as a practice help, as well as play accompaniments), then it doesn’t satisfy the second part either. Tempo 0 will result in the message “Unfortunately something went wrong with file import.” It would be better if it prompted the user for a tempo, in case of both 0 and missing tempo.

However, tempo 1 was blindly accepted, resulting in a song slower than molasses in January!

Comments