GitHub - generative-music/pieces-alex-bainter: A collection of generative music...
source link: https://github.com/generative-music/pieces-alex-bainter
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
pieces-alex-bainter
A collection of generative music pieces for generative.fm.
Installation
Each piece is available via npm under the @generative-music
scope.
For example, the piece "Observable Streams" can be installed like so:
npm i @generative-music/piece-observable-streams
Usage
IMPORTANT: The pieces use audio files hosted on samples.generative.fm, which does not support requests from unrecognized origins.
The default export of every piece is a function which takes an object parameter and returns a promise which resolves with a cleanup function once the piece is ready.
The object parameter passed to the exported function of a piece should have three properties:
audioContext
: An instantiated implementation of the Web Audio APIAudioContext
interface.destination
: AnAudioNode
to which the piece's own nodes will be connected.preferredFormat
: A string containing the audio format to use for any audio files. Currently accepted values areogg
andmp3
.
Currently, all pieces use Tone.js which is required to control a piece.
import Tone from 'tone'; import makePiece from '@generative-music/piece-observable-streams'; // Detect ogg support, otherwise use mp3 const preferredFormat = document.createElement('audio').canPlayType('audio/ogg') !== '' ? 'ogg' : 'mp3'; makePiece({ audioContext: Tone.context, destination: Tone.Master, preferredFormat }).then(cleanUp => { // Starting the piece // Make sure you follow the Chrome Autoplay policy: https://developers.google.com/web/updates/2017/09/autoplay-policy-changes#webaudio Tone.Transport.start(); // Stopping the piece Tone.Transport.stop(); // stop Transport events Tone.Transport.cancel(); // remove all Transport events cleanUp(); // dispose of audio nodes created by the piece })
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK