Skip to main content

Introduction

alphaTab is an SDK for rendering and playing interactive music notation. Use it in JavaScript for the browser and Node.js, in .NET for desktop or server, or in Kotlin for Android. Feed it a Guitar Pro, MusicXML, CapXML, or alphaTex file, wire it into your UI, and you get engraved sheet music that resizes, scrolls, and plays back.

An SDK, not a widgetโ€‹

alphaTab is not a ready-made component you drop onto a page. It gives you the pieces to build the score view your application needs โ€” the toolbar, the track selector, the transport controls, and the layout around the sheet are yours to design. If you want a pre-built player, you assemble it from what alphaTab exposes.

In exchange, you decide exactly how the score integrates with your product. No styling and no interaction model is imposed on you.

How it fits togetherโ€‹

alphaTab has four internal modules. Together they load, engrave, and play a score.

Data modelโ€‹

Every piece of information about a score โ€” title, artists, tracks, staves, bars, beats, notes, effects, dynamics โ€” lives in one strongly-typed model. Every other module reads from or writes to it.

Importersโ€‹

Parsers that fill the data model from a file. Currently supported:

  • Guitar Pro 3โ€“5 (.gp3, .gp4, .gp5) โ€” proprietary binary formats from Arobas Music
  • Guitar Pro 6 (.gpx) โ€” proprietary archive containing XML
  • Guitar Pro 7 and 8 (.gp) โ€” ZIP archive containing XML
  • MusicXML (.xml) โ€” open XML standard
  • CapXML (.cap) โ€” open XML standard from Capella Software
  • alphaTex โ€” a text format for writing music notation by hand

Render engineโ€‹

The render engine takes the data model and produces engraved music notation following the rules of traditional music engraving. It builds a visual tree of every symbol and relayouts dynamically when the container resizes. Symbols come from the SMuFL music font Bravura. Output goes to HTML Canvas or SVG in the browser, and to Skia or the platform-native canvas on .NET and Android.

Audio engineโ€‹

The audio engine converts the data model to MIDI, then plays the MIDI through an embedded synthesizer based on TinySoundFont and a SoundFont2 file. You get playback, a visual cursor tracking the current beat, and hooks to build your own transport UI.

Where it runsโ€‹

The three implementations share one source. TypeScript is authoritative; a toolchain compiles it to C# and Kotlin so every platform gets the same features on the same release cycle.

JavaScript / TypeScriptโ€‹

Distributed as the @coderline/alphatab npm package. Runs in any evergreen browser with ES2020 support and in Node.js. alphaTab has no runtime dependencies โ€” everything it needs to render and play is bundled.

Under the hood it uses Web Workers, Audio Worklets, the Web Audio API, and both Canvas and SVG rendering paths. In Node.js, headless rendering to images through alphaSkia is supported.

.NETโ€‹

Two NuGet packages, depending on where you need it:

  • AlphaTab targets .NET Standard 2.0 for console, server, and headless use.
  • AlphaTab.Windows targets .NET 8.0 and adds WPF and WinForms controls.

The .NET build has a small number of third-party dependencies for drawing (through alphaSkia) and audio (NAudio).

Kotlin for Androidโ€‹

Distributed on Maven Central as net.alphatab:alphaTab. It ships an AlphaTabView for classic Android layouts. A Jetpack Compose control is not included yet โ€” vote on the roadmap issue or wrap the classic view inside a Compose tree.

Next stepsโ€‹

Pick your platform:

Once installed, browse the Features catalog to see what alphaTab does grouped by capability, or explore alphaTex, the text format for authoring music notation.