| title | playerFinished | ||||||
|---|---|---|---|---|---|---|---|
| sidebar_custom_props |
|
import { Tabs, TabItem, CodeBadge, SinceBadge, DynHeading, Link, Signature } from '@site/src/reference-commons'
This event is fired when the playback of the whole song finished. This event is finished regardless on whether looping is enabled or not.<Signature style="block" js={[["keyword","readonly"],["whitespace"," "],["identifier","playerFinished"],["token",":"],["whitespace"," "],["identifier","IEventEmitter","/docs/reference/types/ieventemitter"],["token",";"]]} csharp={[["identifier","IEventEmitter","/docs/reference/types/ieventemitter"],["whitespace"," "],["identifier","PlayerFinished"],["whitespace"," "],["token","{"],["whitespace"," "],["keyword","get"],["token",";"],["whitespace"," "],["token","}"]]} kotlin={[["keyword","val"],["whitespace"," "],["identifier","playerFinished"],["token",":"],["whitespace"," "],["identifier","IEventEmitter","/docs/reference/types/ieventemitter"]]} />
<Tabs defaultValue="javascript" values={[ { label: "JavaScript", value: "javascript"}, { label: "C#", value: "csharp"}, { label: "Android", value: "android"} ]}
```js const api = new alphaTab.AlphaTabApi(document.querySelector('#alphaTab')); api.playerFinished.on((args) => { // speed trainer api.playbackSpeed = Math.min(1.0, api.playbackSpeed + 0.1); }); api.isLooping = true; api.playbackSpeed = 0.5; api.play() ``` ```cs var api = new AlphaTabApi(...); api.PlayerFinished.On(() => { // speed trainer api.PlaybackSpeed = Math.Min(1.0, api.PlaybackSpeed + 0.1); }); api.IsLooping = true; api.PlaybackSpeed = 0.5; api.Play(); ``` ```kotlin val api = AlphaTabApi(...) api.playerFinished.on { // speed trainer api.playbackSpeed = min(1.0, api.playbackSpeed + 0.1); } api.isLooping = true api.playbackSpeed = 0.5 api.play() ```