Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 28 additions & 26 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,24 @@
# Guidelines for Contributing to alphaTab.
# Guidelines for contributing to alphaTab

I am happy that you are interested in alphaTab and want to contribute by entering bugs, feature requests, asking questions or even contribute code. Please play with the rules. It's not only about what you say, but also how you say it. Playing nice increases the chance of getting features/bugfixes faster :wink: Remember that everything you get here is for free and in the end it's about giving and taking.
I am happy that you are interested in alphaTab and want to contribute by entering bugs, feature requests, asking questions or even contribute code. Please play with the rules. It's not only about what you say, but also how you say it. Playing nice increases the chance of getting features/bugfixes faster :wink: Remember that everything you get here is for free and in the end it's about giving and taking.

## Discussions vs Issues

We consider the issues our concerete work backlog. That means any item there should be on a quality level that it allows working on a topic.
Discussions are more a playground for talking about ideas, features or problems before we actually derive a work item from it.
We consider the issues our concrete work backlog. That means any item there should be on a quality level that it allows working on a topic.
Discussions are more a playground for talking about ideas, features or problems before we actually derive a work item from it.

Here some guidance which might help you deciding whether to open a issue or a discussion post:
Here are some guidance which might help you deciding whether to open a issue or a discussion post:

Open a Discussion if:

Open a Discussion if:
* You have an idea about a new feature you know alphaTab does not have yet.
* You need support in using alphaTab.
* You are not sure if alphaTab can do something you need it to do.
* AlphaTab does not behave as you would maybe expect it to behave, but you aren't yet sure if alphaTab or your usage is the problem cause.
* AlphaTab does not behave as you would maybe expect it to behave, but you aren't yet sure if alphaTab or your usage is the problem cause.

Open an Issue if:
* You found a very obvious bug that something is not working. You can reproduce the issue and provide us the info how we can also reproduce it.

* You found a very obvious bug that something is not working. You can reproduce the issue and provide us the info how we can also reproduce it.
* You found that something is missing on an existing feature and you want to have it extended.

## When entering an issue
Expand All @@ -25,32 +27,32 @@ Open an Issue if:

**We will close issues not following the template or clean structure without further discussion.**

Beside that:

* Check if your topic has already been covered. Use the search function and respond to an existing issue instead of opening a new one if you find a match.
* Double check you are using the right template. We get a lot of feature requests or bug reports as via the question template. If something is not yet available or not working, it is very likely not a question but rather a missing feature or misbehavior.
Beside that:

* Check if your topic has already been covered. Use the search function and respond to an existing issue instead of opening a new one if you find a match.
* Double check you are using the right template. We get a lot of feature requests or bug reports as via the question template. If something is not yet available or not working, it is very likely not a question but rather a missing feature or misbehavior.

## Contributing Code

Code changes can be offered by opening pull requests. To do so, we recommend following workflow:
The [docs page for contributing](https://www.alphatab.net/docs/contributing) is a good thing to read for new contributors.

1. Start with [forking](https://docs.github.com/en/get-started/quickstart/fork-a-repo) this repository.
Code changes can be offered by opening pull requests. To do so, we recommend following workflow:

1. Start with [forking](https://docs.github.com/en/get-started/quickstart/fork-a-repo) this repository.
This way you get a copy of our repository in your account where you can work.
2. Create a new feature branch starting from `develop` on which you add your changes.
2. Create a new feature branch starting from `develop` on which you add your changes.
We recommend branch names like `feature/<feature-name>` (e.g. feature/alphatex-alternate-endings) or `feature/<issue-number>` (e.g. feature/issue-1234).
3. If you have your changes ready, [open a pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request) against the main repository.
This way you make your changes visible to us. Be sure to fill out the template.
4. When you think your pull request is not yet fully ready, mark it as a [draft pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests#draft-pull-requests).
5. As soon you think your changes are ready, clear the draft state. This way it should become visible on our side for review.
6. We will then review the code, and ensure that the CI system builds and runs your changes.
7. We might ask for changes to the code style or feature depending to fulfill our guidelines and needs.
8. If everything goes well, we will approve the change and merge it into the product.
This way you make your changes visible to us. Be sure to fill out the template.
4. When you think your pull request is not yet fully ready, mark it as a [draft pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests#draft-pull-requests).
5. As soon you think your changes are ready, clear the draft state. This way it should become visible on our side for review.
6. We will then review the code, and ensure that the CI system builds and runs your changes.
7. We might ask for changes to the code style or feature depending to fulfill our guidelines and needs.
8. If everything goes well, we will approve the change and merge it into the product.
9. Once we will release a new version, we will of course mention you als contributor of the particular bugfix or feature ;)

If you are new to contributing to Open Source Projects on GitHub you might read through some articles in the web. The principle is usually always very similar, projects just might have different rules to follow.

If you are new to contributing to Open Source Projects on GitHub you might read through some articles in the web. The principle is usually always very similar, projects just might have different rules to follow.

https://docs.github.com/en/get-started/quickstart/contributing-to-projects
https://opensource.com/article/19/7/create-pull-request-github
https://www.freecodecamp.org/news/how-to-make-your-first-pull-request-on-github-3/
<https://docs.github.com/en/get-started/quickstart/contributing-to-projects>
<https://opensource.com/article/19/7/create-pull-request-github>
<https://www.freecodecamp.org/news/how-to-make-your-first-pull-request-on-github-3/>
45 changes: 21 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,42 +1,39 @@
# AlphaTab
[![Official Site](https://img.shields.io/badge/site-alphatab.net-blue.svg)](https://alphatab.net)

[![Official Site](https://img.shields.io/badge/site-alphatab.net-blue.svg)](https://www.alphatab.net/)
[![Documentation](https://img.shields.io/badge/docs-alphatab.net-blue.svg)](https://www.alphatab.net/docs/introduction)
[![License MPL-2.0](https://img.shields.io/badge/license-MPL--2.0-green.svg)](https://www.mozilla.org/en-US/MPL/2.0/)
[![Twitter](https://img.shields.io/badge/twitter-alphaTabMusic-blue.svg)](https://twitter.com/alphaTabMusic)
[![Facebook](https://img.shields.io/badge/facebook-alphaTabMusic-blue.svg)](https://facebook.com/alphaTabMusic)
[![Build](https://github.com/CoderLine/alphaTab/workflows/Build/badge.svg?branch=develop)](https://github.com/CoderLine/alphaTab/actions/workflows/build.yml)

alphaTab is a cross platform music notation and guitar tablature rendering library. You can use alphaTab within your own website or application to load and display music sheets from data sources like Guitar Pro or the built in markup language named alphaTex.

![alphaTab](img/banner.png?raw=true "alphaTab")

# Getting Started

To get started follow our guides and tutorials at:
## Getting Started

* https://www.alphatab.net/docs/introduction
* https://www.alphatab.net/docs/tutorials
To get started follow our guides and tutorials at:

## Build Status
* <https://www.alphatab.net/docs/introduction>
* <https://www.alphatab.net/docs/tutorials>

&nbsp; | &nbsp;
--- | ---
**Build** | ![Build](https://github.com/CoderLine/alphaTab/workflows/Build/badge.svg?branch=develop)
**Documentation** | [![Documentation](https://img.shields.io/badge/docs-master-brightgreen.svg)](https://www.alphatab.net/)
## Features

# Features
alphaTab mostly focuses on web based platforms allowing music notation to be embedded into websites and browser based apps but is designed to be used also from various other platforms like .net and Android either as a platform native integration or through runtime specific JavaScript engines.
alphaTab mostly focuses on web based platforms allowing music notation to be embedded into websites and browser based apps but is also designed to be used on various other platforms like .net and Android either as a platform native integration or through runtime specific JavaScript engines.

alphaTab can load music notation from various sources like Guitar Pro 3-7, AlphaTex and MusicXML (experimental) and render them into beautiful music sheets right within your browser (or application). Using a built in midi synthesizer named alphaSynth the music sheets can also be played in your browser.

* load GuitarPro 3-5, GuitarPro 6, Guitar Pro 7, AlphaTex or MusicXML (experimental)
* render as SVG or Raster Graphics (raster graphics depends on platform: HTML5 canvas, GDI+, SkiaSharp, Android Canvas)...
* display single or multiple instruments as standard music notation and guitar tablatures consisting of song information, repeats, alternate endings, guitar tunints, clefs, key signatures, time signatures, notes, rests, accidentals, drum tabs, piano grand staff, tied notes, grace notes, dead notes, ghost notes, markers, tempos, lyrics, chords, vibratos, dynamics, tap/slap/pop, fade-in, let-ring, palm-mute, string bends, whammy bar, tremolo picking, strokes, slides, trills, pick strokes, tuplets, fingering, triplet feels,...
* adapt to your responsive design by dynamic resizing
* play the music sheet via built-in Midi+SoundFont2 Synthesizer (output depends on platform: HTML5 Web Audio, NAudio, Android AudioTrack)
* Load GuitarPro 3-5, GuitarPro 6, Guitar Pro 7, AlphaTex or MusicXML (experimental)
* Render as SVG or Raster Graphics (raster graphics depends on platform: HTML5 canvas, GDI+, SkiaSharp, Android Canvas)...
* Display single or multiple instruments as standard music notation and guitar tablatures consisting of song information, repeats, alternate endings, guitar tunints, clefs, key signatures, time signatures, notes, rests, accidentals, drum tabs, piano grand staff, tied notes, grace notes, dead notes, ghost notes, markers, tempos, lyrics, chords, vibratos, dynamics, tap/slap/pop, fade-in, let-ring, palm-mute, string bends, whammy bar, tremolo picking, strokes, slides, trills, pick strokes, tuplets, fingering, triplet feels,...
* Adapt to your responsive design by dynamic resizing
* Play the music sheet via built-in Midi+SoundFont2 Synthesizer (output depends on platform: HTML5 Web Audio, NAudio, Android AudioTrack)

# Officially Supported Platforms
## Officially Supported Platforms

Platform | Support | Availability |
----------|---------|-------|
Platform | Support | Availability
----------|---------|--------------
Browsers using `script` includes (UMD) | Full experience including low level APIs, Background Workers, Audio Playback, SVG and HTML5 rendering. UI level integration for user interaction and automatic resizing. | 1.0-latest
Node.js using `require` (UMD) | Access to all low level APIs and SVG rendering | 1.0-latest
.net standard 2.0 | Access to all low level APIs and multiple render engines (SVG, GDI+, SkiaSharp) | 1.0-latest
Expand All @@ -48,7 +45,7 @@ Node.js using `import` (ESM) | Access to all low level APIs and SVG rendering |
.net6.0-windows (WinForms) | Full experience including low level APIs, Background Workers, Audio Playback (through NAudio), SVG and HTML5 rendering. UI level integration for user interaction and automatic resizing. Reduced UI level integration related to transparency and animations. | 1.3 (pre-release :warning:)
Android (Kotlin) | Full experience including low level APIs, Background Workers, Audio Playback, Android Canvas and SVG rendering. UI level integration for user interaction and automatic resizing. Reduced UI level integration related to transparency and animations. | 1.3 (pre-release :warning:)

# Thanks to...
## Thanks to...

... our friends of BrowserStack for a free plan. This allows me to test alphaTab on all browsers on all operating systems. Only with this I can ensure that alphaTab is shown to all your visitors as expected.

Expand All @@ -63,6 +60,6 @@ Android (Kotlin) | Full experience including low level APIs, Background Workers,
Copyright © 2000-2022 JetBrains s.r.o. JetBrains and the JetBrains logo are registered trademarks of JetBrains s.r.o.
</p>

... to [Bernhard Schelling](https://github.com/schellingb/TinySoundFont) the author of TinySoundFont and [Steve Folta](https://github.com/stevefolta/SFZero) the author of SFZero for providing the core of the synthesis engine.
... [Bernhard Schelling](https://github.com/schellingb/TinySoundFont) the author of TinySoundFont and [Steve Folta](https://github.com/stevefolta/SFZero) the author of SFZero for providing the core of the synthesis engine.

... to all you people using alphaTab providing new feature ideas and bug reports.
... all you people using alphaTab providing new feature ideas and bug reports.