Features

Export and print

Paper, PDF, and .gp for everyone you play with.

Print-quality PDF, or straight to paper

A4 or Letter, with margins, scale, which tracks to include, headers and page numbers — then write a PDF or hand the same settings to the system print dialog. The output is vector, from the same renderer that draws the screen.

The PDF export dialog, with page size, margins and which parts to include.

.gp that Guitar Pro opens

Tonograph writes .gp. Before it does, it tells you exactly what the format cannot carry from your score — so nothing goes missing quietly.

The .gp export dialog listing what the format cannot carry before the file is written.

Your own format

.tonograph is JSON: readable, diffable and yours. Auto-save and crash recovery use it.

{
  "format": "tonograph",
  "formatVersion": 1,
  "savedAt": "2026-07-28T00:00:00.000Z",
  "appVersion": "0.1.0",
  "model": {
    "title": "Amber Drift",
    "subtitle": "Tonograph sample score",
    "artist": "Noop",
    "music": "Noop",
    "copyright": "© 2026 Noop. Sample score — free to modify and use.",
    "tempoBpm": 96,
    "tempoLabel": "Moderato",
    "masterBars": [
      {
        "keySignature": {
          "accidentals": 1,
          "mode": "minor"
        },
        "section": {
          "text": "Intro"
        }
      }
    ],
    "tracks": [
      {
        "name": "Lead Guitar",
        "color": "#f0d264",
        "midiProgram": 29,
        "tuning": [40, 45, 50, 55, 59, 64],
        "volume": 14,
        "bars": [
          {
            "voices": [
              {
                "beats": [
                  {
                    "duration": "whole",
                    "isRest": true,
                    "notes": []
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "name": "Rhythm Guitar",
        "color": "#88aef2",
        "midiProgram": 29,
        "tuning": [40, 45, 50, 55, 59, 64],
        "volume": 11,
        "balance": 6,
        "bars": [
          {
            "voices": [
              {
                "beats": [
                  {
                    "duration": "eighth",
                    "notes": [
                      {
                        "string": 6,
                        "fret": 0,
                        "isLetRing": true
                      }
                    ],
                    "dynamics": "mp"
                  },
                  {
                    "duration": "eighth",
                    "notes": [
                      {
                        "string": 5,
                        "fret": 2,
                        "isLetRing": true
                      }
                    ],
                    "dynamics": "mp"
                  },
                  {
                    "duration": "eighth",
                    "notes": [
                      {
                        "string": 4,
                        "fret": 2,
                        "isLetRing": true
                      }
                    ],
                    "dynamics": "mp"
                  },
                  {
                    "duration": "eighth",
                    "notes": [
                      {
                        "string": 3,
                        "fret": 0,
                        "isLetRing": true
                      }
                    ],
                    "dynamics": "mp"
                  },
                  {
                    "duration": "eighth",
                    "notes": [
                      {
                        "string": 2,
                        "fret": 0,
                        "isLetRing": true
                      }
                    ],
                    "dynamics": "mp"
                  },
                  {
                    "duration": "eighth",
                    "notes": [
                      {
                        "string": 1,
                        "fret": 2,
                        "isLetRing": true
                      }
                    ],
                    "dynamics": "mp"
                  },
                  {
                    "duration": "eighth",
                    "notes": [
                      {
                        "string": 2,
                        "fret": 0,
                        "isLetRing": true
                      }
                    ],
                    "dynamics": "mp"
                  },
                  {
                    "duration": "eighth",
                    "notes": [
                      {
                        "string": 3,
                        "fret": 0,
                        "isLetRing": true
                      }
                    ],
                    "dynamics": "mp"
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  }
}
One bar of Amber Drift, exactly as the file stores it.

Start with the free version

Open your .gp files, play them through the Resonance Engine, and decide afterwards.

Get the free version