<commit_before># multitrack-audio-element
A JavaScript (and HTML5) audio object that supports synchronized multitrack playback and streaming.

Feel free to edit this README freely!


## Research

#### `MediaController` and `mediaGroup`

Several older articles and Q&A threads, as well as MDN, mention a `MediaController` object found at [`HTMLMediaElement.prototype.controller`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement) that could be used to control different media sources with the same `mediaGroup` attribute.

Firefox hasn't implement [any of them](https://bugzilla.mozilla.org/show_bug.cgi?id=847377), and Chromium has [unshipped it](https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/MVcoNSPs1UQ).

#### `AudioTrackList` and `AudioTrack`

https://html.spec.whatwg.org/multipage/embedded-content.html#audiotracklist-and-videotracklist-objects

> An AudioTrackList object represents a dynamic list of zero or more audio tracks, of which zero or more can be enabled at a time. Each audio track is represented by an AudioTrack object.

Only implemented by Safari and IE (!). It allows for zero or more simultaneously activated tracks. The list of track `kind`s does not include a `"partial"`, `"instrument"` or anything similar:

* `"alternative"`
* `"captions"`
* `"descriptions"`
* `"main"`
* `"main-desc"`
* `"sign"`
* `"subtitles"`
* `"translation"`
* `"commentary"`
* `""`

#### `AudioStreamTrack`

https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack

Part of the MediaStream API.


## Ideas and notes

* Could you accomplish the core functionality by just sharing an event system?
* Shimming `MediaController` and `mediaGroup` is one alternative
<commit_msg>Possible extensions<commit_after># multitrack-audio-element
A JavaScript (and HTML5) audio object that supports synchronized multitrack playback and streaming.

Feel free to edit this README freely!


## Research

#### `MediaController` and `mediaGroup`

Several older articles and Q&A threads, as well as MDN, mention a `MediaController` object found at [`HTMLMediaElement.prototype.controller`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement) that could be used to control different media sources with the same `mediaGroup` attribute.

Firefox hasn't implement [any of them](https://bugzilla.mozilla.org/show_bug.cgi?id=847377), and Chromium has [unshipped it](https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/MVcoNSPs1UQ).

-----

#### `AudioTrackList` and `AudioTrack`

https://html.spec.whatwg.org/multipage/embedded-content.html#audiotracklist-and-videotracklist-objects

> An AudioTrackList object represents a dynamic list of zero or more audio tracks, of which zero or more can be enabled at a time. Each audio track is represented by an AudioTrack object.

Only implemented by Safari and IE (!). It allows for zero or more simultaneously activated tracks. The list of track `kind`s does not include a `"partial"`, `"instrument"` or anything similar:

* `"alternative"`
* `"captions"`
* `"descriptions"`
* `"main"`
* `"main-desc"`
* `"sign"`
* `"subtitles"`
* `"translation"`
* `"commentary"`
* `""`

-----

#### `AudioStreamTrack`

https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack

Part of the MediaStream API.


## Ideas and notes

* Could we accomplish the core functionality by just sharing an event system?
* Shimming `MediaController` and `mediaGroup` is one alternative

#### Possible extensions

* howler.js

{'fraction_non_alphanumeric': 0.12070938215102975, 'fraction_numerical': 0.004576659038901602, 'mean_word_length': 5.15669014084507, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 10, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5946857', 'n_tokens_mistral': 1081, 'n_tokens_neox': 1020, 'n_words': 348}