more citations
This commit is contained in:
parent
829a794df7
commit
80bd3be0a1
3 changed files with 39 additions and 11 deletions
|
|
@ -144,6 +144,39 @@ Here is a short description of all the functions used:
|
|||
instrument
|
||||
- `pianoroll()`: visualize events as midi notes in a pianoroll
|
||||
|
||||
# Ways to make Sound
|
||||
|
||||
To generate sound, Strudel supports different outputs:
|
||||
|
||||
- Tone.js
|
||||
- Web Audio API
|
||||
- WebDirt, a js recreation of Tidal's *Dirt* sample engine
|
||||
- OSC via osc-js
|
||||
- MIDI via WebMIDI
|
||||
|
||||
Tone.js proved to be limited for the use case of Strudel, where each
|
||||
individual event could potentially have a completely different audio
|
||||
graph. While the Web Audio API takes a *fire-and-forget* approach,
|
||||
creating a lot of Tone.js instruments and effects causes performance
|
||||
issues quickly. For that reason, we chose to search for alternatives.
|
||||
|
||||
Strudel's Web Audio API output creates a new audio graph for each event.
|
||||
It currently supports basic oscillators, sample playback, envelopes,
|
||||
filters and an experimental support for soundfonts.
|
||||
|
||||
WebDirt [@ogbornDktr0WebDirt2022] was created as part of the Estuary
|
||||
Live Coding System [@ogbornEstuaryBrowserbasedCollaborative2017], and
|
||||
proved to be a solid choice for handling samples in Strudel as well.
|
||||
|
||||
Using OSC, it is possible to send messages to SuperDirt
|
||||
[@SuperDirt2022], which is what Tidal does to generate sound. The
|
||||
downside of using OSC is that it requires the user to install
|
||||
SuperCollider and its sc3plugins library, which can be difficult.
|
||||
|
||||
The MIDI output can be used to send MIDI messages to either external
|
||||
instruments or to other programs on the same device. Web MIDI is
|
||||
currently only supported on chromium-based browsers.
|
||||
|
||||
# Future Outlook
|
||||
|
||||
The project is still young, with many features on the horizon. As
|
||||
|
|
@ -153,17 +186,10 @@ general guiding principles, Strudel aims to be
|
|||
2. consistent with Tidal's approach to pattern
|
||||
3. modular and extensible
|
||||
|
||||
The main accessibility advantage over Tidal is the zero install browser
|
||||
environment. It should also now be accessible to screen reader users,
|
||||
with the recent integration of the CodeMirror 6 editor. While Strudel
|
||||
can control Tidal's SuperDirt audio system via OSC, that requires the
|
||||
user to install SuperCollider and its sc3plugins library, which can be
|
||||
difficult. Without SuperDirt, Strudel is able to output sound itself via
|
||||
Tone.js, however this is limited both in terms of available features and
|
||||
runtime performance. For the future, it is planned to integrate
|
||||
alternative sound engines such as glicol [@lanChaosprintGlicol2022] and
|
||||
faust [@FaustProgrammingLanguage2022]. To improve compatibility with
|
||||
Tidal, more Tidal functions are planned to be ported, as well as full
|
||||
For the future, it is planned to integrate alternative sound engines
|
||||
such as glicol [@lanChaosprintGlicol2022] and faust
|
||||
[@FaustProgrammingLanguage2022]. To improve compatibility with Tidal,
|
||||
more Tidal functions are planned to be ported, as well as full
|
||||
compatibility with SuperDirt. Besides sound, other ways to render events
|
||||
are being explored, such as graphical, and choreographic output. We are
|
||||
also looking into alternative ways of editing patterns, including
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue