AlphaTab Versions Save

alphaTab is a cross platform music notation and guitar tablature rendering library.

v1.3.0

3 days ago

Finally a new release of alphaTab. The highlight feature of this release is native Android support allowing you to use alphaTab directly in your Android Views applications as a Kotlin library.

A big "Thank You" to all people contributing to alphaTab through reporting bugs, bringing in feature ideas and contributing code changes to alphaTab!

Due to a merge mistake in the previous releases creating a reliably diff between the previous and this release was a bit cumbersome. I hope I didn't miss any features or changes worth mentioning in these release notes.

New Features 💡

Support for Native Android Apps

This is the highlight feature of this release. We added a "Kotlin for Android" target to our compilation pipeline and ship now a native Android (Views) control to be used in Android apps. the feature range is similar to what we support already in .net WPF with rendering, interactivity, player, playback cursors etc. all built-in.

We rely on your feedback to improve the platform support in terms of stability, features and performance.

Bundler and Frontend Framework Support

Add Full WebPack Support in https://github.com/CoderLine/alphaTab/pull/1386 by @Danielku15 Add Vite Plugin in in https://github.com/CoderLine/alphaTab/pull/1386 by @Danielku15

With this release we finally achieved compatibility with modern bundlers like WebPack and Vite used in frontend Frameworks like Angular, React and Vue.

For this we created bundler plugins which take care of the right configuration and bundling aspects so that all features like Web Workers and Audio Worklets work quasi out-of-the-box. Look at our guides and samples to learn about how to integrate alphaTab in your frontend app.

System Layout Customization

Add Support for system layout customization. in https://github.com/CoderLine/alphaTab/pull/1197 by @Danielku15

With this new option you can tell alphaTab to use the layout information which is embedded in the data model and might be read from formats like Guitar Pro. This information might include information like how many bars are in a system (single row with multiple staves) and a relative scaling of these bars within the system. #

See https://alphatab.net/docs/reference/settings/display/systemslayoutmode for more details

Allow justification of last system

Add option to allow justification of last system in https://github.com/CoderLine/alphaTab/pull/1240 @Danielku15

With this new option you can choose that the last system is also justified to the page width. Normaly bars are only justified in a system when it is considered full and we have a line wrap. But this option allows you to also justify this last system which might still have space.

See https://next.alphatab.net/docs/reference/settings/display/justifylastsystem#description for more details

alphaSkia as render engine

Integrate alphaSkia in https://github.com/CoderLine/alphaTab/pull/1292 by @Danielku15

With alphaSkia we created our own cross platform drawing library to achieve a consistent renedring experience across all platforms of alphaTab. This engine wraps Skia, the popular 2D Graphics library developed by Google, used in many products like Google Chrome, Android and Mozilla Firefox.

This engine is available for:

  • .net (where it replaces SkiaSharp)
  • Java/Kotlin (where it replaces Skija)
  • Node.js (where it replaces libraries like node-canvas).

alphaSkia currently has an alphaTab focus but depending on the interest it might evolve to a full HTML5 canvas alike library for many platforms.

Improvements 🚀

Reworked Midi Tick Lookup

Rework Tick Lookup mechanism for cursor placement and highlighting. in https://github.com/CoderLine/alphaTab/pull/1328 by @Danielku15 Additional cases for new tick lookup in https://github.com/CoderLine/alphaTab/pull/1334 by @Danielku15 fix: Start and end times have to be relative to the masterbar not absolute in https://github.com/CoderLine/alphaTab/pull/1393 by @Danielku15

A key improvement and change in this release is the reworked "Midi Tick Lookup". This component is responsible to translate efficiently a given midi tick position during playpack, into the bar and beat being played. This component is key part to place the cursors during playback and highlight any currently played elements.

With this improvement you should not experience any misplaced cursors, skipped items or not highlighted notes anymore.

alphaTex extensions

Special thanks to @jonaro00 who contributed various improvements around alphaTex adding improvements around error reporting and some extension around supported elements.

Improved Grace Note Positioning

We also had to fight again our old rival, the grace notes. With their special needs in positioning and time handling they are a regular cause of problems in the positioning of notes. We tackled again some positioning related problems around grace notes.

MusicXML extensions

Our MusicXML support also got some improvements with new features or adjustments around existing features. Beside the display of chord diagrams there were some improvements on handling ties.

SMF1.0 compliant MIDI file export

Add SMF1.0 compliant MIDI file export in https://github.com/CoderLine/alphaTab/pull/1239 by @Danielku15

alphaTab internally uses a MIDI standard aligned structure to handle the playback of the song. To handle all playbacks correctly we also use some events and structures from Midi 2.0 (per note pitch bends). But unfortunately this caused incompatibility with Standard Midi File Format 1.0. The SMF2.0 file standard was still not ready after many years and there is no real support for these events in the market.

To restore compatibility with applications only supporting SMF 1.0 we added a dedicated export feature for SMF 1.0.

In future if needed, we will also add support for the new Midi 2.0 file formats.

Chord unification

Remove duplicate chords in https://github.com/CoderLine/alphaTab/pull/1216 by @AdamSEY

With this improvement we detect now same chords based on their definition and ensure they are only displayed one in the chord diagrams. This should reduce the noise in the chord diagrams where duplicates can happen from the file format design.

Dynamic change of transposition pitches

Allow dynamic change of transposition pitches. in https://github.com/CoderLine/alphaTab/pull/1309 by @Danielku15

With this improvement transposition pitch changes are respected. Before this improvement the separately provided pitches were only applied once on score load. This prevented devs to develop features where a user would dynamically change the transposition to their preference. Now with this improvement pitches are handled in a more dynamic fashion when needed.

Others

Bug Fixes 🕷️

Maintenance 👷‍♂️

Improved GitHub Actions workflows

We made various improvements around our build system and kept it up to date regarding any dependencies and new practices.

Targeting .net 8.0

chore: Target net8.0 #1465

As .net 6.0 is now out of support we target the new LTS version .net 8.0 for our .net Windows Libraries (WPF/WinForms). The core library still targets .netstandard 2.0.

Other

v1.2.3

1 year ago

Even though this is "only" a patch release, there is plenty of stuff to discover.🥳🎉

This release aims to ship all improvements and bugfixes done as part of 1.3 already in 1.2 to keep the 1.3 theme of official Android and iOS Native support.

A big "Thank You" to all people contributing to alphaTab through reporting bugs, bringing in feature ideas and contributing code changes to alphaTab!

Highlights of this release

New Features 💡

  • [General] ES6 module flavor build of alphaTab. (Issue: #666, PR: #678)

  • [General] New Event whenever the playback range changes. (Issue: #732, PR: #782)

  • [General] New Event for obtaining the currently played beats across all tracks and voices. (Issue: #722, PR: #878)

  • [File Formats] Unicode Characters support in alphaTex. (Issue: #579, PR: #580)

  • [File Formats] Alternate Endings support in alphaTex. (Issue: #671, PR: #791) Thanks @jonaro00 for this contribution.

  • [File Formats] Minor Key Signature support in alphaTex. (Issue: #875, PR: #880) Thanks @jonaro00 for this contribution.

  • [File Formats] Brush Stroke and arpeggio support to alphaTex. (Issue: #505, PR: #799) Thanks @jonaro00 for this contribution.

  • [Rendering] New Options for disabling cursor animations and element highlighting (Issue: #558, PR: #644)

  • [Rendering] Allow the use of multiple font families with fallbacks. (Issue: #546, PR: #953)

  • [Audio] Use AudioWorklets for audio playback when available. (Issue: #480, PR: #642)

  • [Audio] Expose MidiTickLookup for manual lookup of elements by a given midi position. (Discussion: #732, Commit: e8b58506190f776b6987cdcddd5d0a48ab7e2ae8)

Improvements 🚀

  • [General] Improved WebPack support. We are not yet at 100% to support everything properly (mainly due to missing features in WebPack like AudioWorklets) but things are getting better. We plan to ship some extended examples over at https://github.com/CoderLine/alphaTabSamplesWeb soon.

  • [General] Improved Node.js support. (Issue: #542, PR: #544)

  • [General] Improved module exports to have better TypeScript compatibility. (Issue: #682, PR: #684)

  • [General] Allow dynamic changing of the display of cursors and the cursor colors. (Issue: #876, PR: #899)

  • [General] More exposed low-level APIs. (Issue: #897, PR: #956)

  • [General] Allow dynamic change of the transposition pitches. (Issue: #896, PR: #957)

  • [Rendering] Render half-note rhythm notation stems different (Issue: #602, PR: #605, Discussion: #601)

  • [Rendering] Avoid grace notes sticking fully to the previous note (Issue: #604, PR: #606)

  • [Rendering] Use of native browser smooth scrolling (Issue: #558, PR: #644)

  • [Rendering] Improved element positioning to reduce browser CPU load (Issue: #558, PR: #644)

  • [Rendering] Reduced CPU load on cursor placement (Issue: #558, PR: #645)

  • [Rendering] Added Virtualized Display of Rendered Partials (Issue: #532, PR: #689)

  • [Audio] Avoid delayed audio settings due to buffering (Issue: #657, PR: #686)

  • [Audio] Configurable audio buffer size (Issue: #736, PR: #788)

  • [Audio] Improved WebAudio context suspend/resume handling (Issue: #760, PR: #768)


Bug Fixes 🕷️

  • [General] Fixed wrong decoding of Colors (Issue: #387, PR: 543) Thanks @kyledecot for this contribution.

  • [General] Fixed wrong Score model when not sending it through serializer (Issue: #551, PR: #610)

  • [General] Fixed bad detection of note positions (Issue: #744, PR: #746) Thanks @gallegretti for this contribution.

  • [General] Allow loading of alphaTab/Skia in Avalonia (Issue: #774, PR: #789)

  • [General] Fix beat removeNote function keeping stringLookup reference (Issue #932, PR: #933) Thanks @gallegretti for this contribution.

  • [File Formats] Allow Sections to start with a rest in alphaTex (Issue: #683, PR: #685)

  • [File Formats] Errornous Slur handling and improved repeat group calculation (Issue: #865, PR: #898)

  • [File Formats] Tempo changes on first bar not handled correctly (Issue: #988, PR: #994)

  • [File Formats] Ensure Correct Vibrato audio for GP5 files (Issue: #1011, PR: #1014)

  • [Rendering] Prevent double printing dialogs/events (Issue: #844, PR: #846)

  • [Rendering] Corrected wrong placement of key signatures (Issue: #872, PR: #881)

  • [Rendering] Corrected wrong placement of brush strokes (Issue: #935, PR: #955)

  • [Rendering] Inability to place the cursor on some beats upon clicking (Issue: #959, PR: #960)

  • [Audio] Prevent invalid playback ranges when selecting reverse (Issue: #733, PR: #783)

  • [Audio] Corrected timesignature generation causing metronome behavior (Issue: #567, PR: #574)

  • [Audio] Ensure Player is fully destroyed with the rest of alphaTab (Issue: #594, PR: #595)

  • [Audio] Reworked playback of count-in and individual notes and beats (Issue: #758, PR: #787)

  • [Audio] Cursor Snaps/Jumps to Next Bar (Issue: #976, PR: #888)

Maintenance 👷‍♂️

  • [General] TypeScript upgrade, use override
  • [General] Update of Dev and Runtime Dependencies to latest versions.
  • [File Formats] AlphaTexImporter corrections and simplifications (PR: #852) Thanks @jonaro00 for this contribution.
  • [Rendering] Update Visual Test Suite to use Free Fonts (Issue: #559, PR: #560)

All Changes

Issues: v1.2.3

Full Changelog: https://github.com/CoderLine/alphaTab/compare/v1.2.2...v1.2.3

v1.2.2

2 years ago

There was an unintentional breaking change introduced in 1.2.x related to the Settings.fillFromJson. This PR restores API compatibility with 1.1.0

Bug Fixes 🕷️

  • [General] Restore API compatibility for Settings.fillFromJson (Issue: #674 , PR: #676) Thanks to @goodgame365 for reporting this

v1.2.1

3 years ago

There were two findings since the 1.2.0 release which made me release an 1.2.1 containing the related fixes:

Bug Fixes 🕷️

  • [Rendering]For iOS devices, tab numbers are not vertically centered to the lines (Issue: #556, PR: #570)
  • [Rendering] Ensure Notation and Chord Diagrams are properly rendered when using a scale different than 1.0 (#564)

v1.2.0

3 years ago

The next release of alphaTab is done. The theme of this release was:

Main focus will be improving the visual display by avoiding collisions and improving some visual elements.

We tried to avoid any breaking changes on the API level and upgrades should be possible without any code changes. But there are various behavior changes where you might want to adopt new settings, values etc.

This release brings you:

In alphaTab 1.2 we dropped support for Internet Explorer ❗

One of the biggest changes/decisions we took in version 1.2 is to drop support for Internet Explorer. This allowed us to make various improvements in regards to performance and more modern code. We made a poll whether dropping IE support is generally accepted, but in case you missed it and have need for Internet Explorer support, reach out to us via Discussions and we will see what we can do.

New Features 💡

  • [General] JSON Serialization for the .net platform (Issue: #461, PR: #466, Docs)

  • [File Formats] Guitar Pro 7 Exporter (Issue: #443, PR: #447, Docs)

  • [File Formats] Detect Lyrics from beat text for Guitar Pro 3-5 files (Issue: #402, PR: #506, Docs)

Improvements 🚀

  • [General] Respect original settings when printing and allow additional print settings (Issue: #469, PR: #486, Docs)

  • [General] Compilation of alphaTab to ES6 code for smaller footprint and more modern code (Issue: #508, PR: #512)

  • [General] Smaller copyright watermark (PR: #512)

  • [General] Removed various polyfills, usage of oudated APIs, better SVG generation (Issue: #509, PR: #514)

  • [File Formats] Respect track volume in Guitar Pro 7 files (Issue: #446, PR: #445 thanks to @jordanske for the contribution)

  • [File Formats] Respect track volume and balance in MusicXML files (Issue: #451, PR: #454 thanks to @jordanske for the contribution)

  • [File Formats] Auto detection of instruments and tunings in alphaTex (Issue: #484, PR: #449)

  • [File Formats] Add support for full bar rests in Capella and MusicXML (Issue: #495, PR: #503)

  • [Rendering] New Note Beaming algorithm which avoids collisions on rests (Issue: #296, PR: #491)

  • [Rendering] Render multiple tunings in multi-track rendering cases (Issue: #463, PR: #492)

  • [Rendering] New Grace Positioning Logic (Issues: #227, #335, PR: #493)

  • [Rendering] Render HighDPI images for HTML5 Canvas (Issue: #496, PR: #497)

  • [Rendering] Displace Rests in multi-voice scenarios (Issue: #355, PR: #502)

  • [Rendering] Fixed various alignment issues of notes, tuplets and beams (PR: #502)

  • [Rendering] Use of IntersectionObserver for faster lazy loading (Issue: #510, PR: #515)

  • [Rendering] Use of ResizeObserver for faster/more-reliable resize detection (Issue: #511, PR: #516)

  • [Audio] Removed max volume limitation (Issue: #453, PR: #487)

  • [Audio] More data on the midiLoaded event for synchronization with external audio sources (Discussion: #520, PR: #522)

  • [Audio] New event fors for obtaining midi events like metronome (Issue: #450, PR: #523, Docs)

Bug Fixes 🕷️

  • [Rendering] Correct display of accidentals on tied notes across bars (Issue: #472, PR: #485)

  • [Rendering] Various zoom related issues (Issue: #452, PR: #483)

  • [Rendering] Added new property for WinForms control page background (replaces Foreground) (Issue: #503) If you had custom colors before, be sure to set the new NotationBackColor property.

  • [Audio] Fixed wrong bend generations on tied bends (Issue: #470, PR: #488)

Maintenance

  • [General] Automatic generation of JSON serialization code (Issue: #461, PR: #466)

v1.1.0

3 years ago

The next release of alphaTab is done. The theme of this release was:

Main focus is some small features requested from various people which are straight forward to achieve.

This release brings you:

New Features 💡

  • [File Formats] Add basic support for Capella file format (Issue: #392, PR: #375)

  • [Rendering] Add support for percussion instruments with 1,2 or 3 staff lines (Issue: #94, PR: #382)

  • [Rendering] Add support for percussion instruments with 1,2 or 3 staff lines (Issue: #94, PR: #382)

  • [Audio] Add support for loading multiple soundfonts (Issue: #302, PR: #380)

  • [Audio] Added API for playing a single beat or note (Issue: #187, PR: #428)

  • [Audio] Added new count-in option to play one bar with metronome before actual playback starts (Issue: #242, PR: #432)

Improvements 🚀

  • [General] Updated development dependencies and upgraded to TypeScript 4 (Issue: #424, #423, PR: #431, #426, thanks to @wassertim for the contribution)

  • [File Formats] Respect accidentals as noted in Guitar Pro 6 and 7 files (Issue: #365, PR: #381)

  • [File Formats] Respect parsed lyrics information in Guitar Pro 6 and 7 files (Issue: #220, PR: #429)

  • [Rendering] Improvements on the spacing algorithm (Issue: #394, PR: #397)

  • [Rendering] Ensure cursor selection is updated visually when the playbackRange is set via API (Issue: #412, PR: #419)

  • [Audio] Allow playback of songs without soundfont loaded (Issue: #403, PR: #404)

  • [Audio] Improved looping logic to make it more seamless (Issue: #410, PR: #420)

Bug Fixes 🕷️

  • [File Formats] Proper support of harmonics in Guitar Pro 3 (Issue: #388, PR: #389)

  • [File Formats] Fixed issue on tempo automations of files by Guitar Pro 7.5 for MacOS (Issue: #391)

  • [File Formats] Fixed issue Guitar Pro files having the lyrics start bar beyond the last bar (PR: #439, thanks to @thoun for the contribution)

  • [Rendering] Bend Slur was rendered as filled triangle instead of edged line (Issue: #405, PR: #418)

  • [Audio] Setting of the master volume did not work (Issue: #399)

  • [Audio] Wrong metronome calculation on tempo changes (Issues: #408, #400, PR: #414)

  • [Audio] Ensure metronome plays when some tracks are set to solo (Issue: #434, PR: #440)

v1.0.1

3 years ago

It is time! 🎉🎵

After almost exactly 10 years alphaTab has really reached the maturity to ship a stable release 1.0.0. Contains all the good things of alphaTab that riped over the last 10 years.

This means:

  • [File Formats] Support for Guitar Pro 3-5 Files (Binary Format)

  • [File Formats] Support for Guitar Pro 6 Files (Proprietary Container)

  • [File Formats] Support for Guitar Pro 7 Files (Zip)

  • [File Formats] Support for alphaTex an own text based format for writing music notation

  • [File Formats] Basic Support of MusicXML

  • [Data Model] A huge bunch of effects and annotations that can be applied to notes and beats.

  • [Rendering] Rendering of Standard Music Notation

  • [Rendering] Rendering of Guitar Tablatures

  • [Rendering] Rendering of Drum Tabs

  • [Rendering] Rendering of multiple staves (Grand Staff)

  • [Rendering] Rendering of multiple Voices

  • [Rendering] Rendering of multiple Tracks at the same time

  • [Rendering] Responsive rendering when resizing

  • [Audio] Audio playback via a built-in SoundFont2 Synthesizer

  • [Audio] Live Cursor display durign playback

  • [SDK] A developer friendly API to interact with alphaTab

  • [JS] Live Note Highlighting during Playback

  • [JS] HTML5 Rendering Backend

  • [JS] SVG Rendering Backend

  • [C#] GDI+ Rendering Backend

  • [C#] SkiaSharp Rendering Backend

  • [C#] WPF Control

  • [C#] WinForms Control