mirror of
https://github.com/eliasstepanik/strudel-docker.git
synced 2026-01-25 20:48:27 +00:00
update web readme + add more html examples
This commit is contained in:
parent
1de784b817
commit
087f574355
@ -4,30 +4,47 @@ This package provides an easy to use bundle of multiple strudel packages for the
|
|||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
Minimal example:
|
Save this code as a `.html` file and double click it:
|
||||||
|
|
||||||
```js
|
```html
|
||||||
import '@strudel/web';
|
<!DOCTYPE html>
|
||||||
|
<button id="play">play</button>
|
||||||
|
<button id="stop">stop</button>
|
||||||
|
<script type="module">
|
||||||
|
import { initStrudel } from 'https://cdn.skypack.dev/@strudel/web@0.8.2';
|
||||||
|
|
||||||
document.getElementById('play').addEventListener('click',
|
initStrudel();
|
||||||
() => note("c a f e").play()
|
document.getElementById('play').addEventListener('click', () => note('<c a f e>(3,8)').play());
|
||||||
)
|
document.getElementById('stop').addEventListener('click', () => hush());
|
||||||
|
</script>
|
||||||
```
|
```
|
||||||
|
|
||||||
As soon as you `import '@strudel/web'`, all strudel functions will be available in the global scope.
|
With the help of [skypack](https://www.skypack.dev/), you don't need a bundler nor a server.
|
||||||
In this case, we are using `note` to create a pattern.
|
|
||||||
|
As soon as you call `initStrudel()`, all strudel functions are made available.
|
||||||
|
In this case, we are using the `note` function to create a pattern.
|
||||||
To actually play the pattern, you have to append `.play()` to the end.
|
To actually play the pattern, you have to append `.play()` to the end.
|
||||||
|
|
||||||
Note: Due to the [Autoplay policy](https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API/Best_practices#autoplay_policy), you can only play audio in a browser after a click event.
|
Note: Due to the [Autoplay policy](https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API/Best_practices#autoplay_policy), you can only play audio in a browser after a click event.
|
||||||
|
|
||||||
|
### Via npm
|
||||||
|
|
||||||
|
If you're using a bundler, you can install the package via `npm i @strudel/web`, then just import it like:
|
||||||
|
|
||||||
|
```js
|
||||||
|
import { initStrudel } from '@strudel/web';
|
||||||
|
```
|
||||||
|
|
||||||
|
The rest of the code should be the same. Check out [vite](https://vitejs.dev/) for a good bundler / dev server.
|
||||||
|
|
||||||
### Loading samples
|
### Loading samples
|
||||||
|
|
||||||
By default, no external samples are loaded, but you can add them like this:
|
By default, no external samples are loaded, but you can add them like this:
|
||||||
|
|
||||||
```js
|
```js
|
||||||
import { prebake } from '@strudel/web';
|
initStrudel({
|
||||||
|
prebake: () => samples('github:tidalcycles/Dirt-Samples/master'),
|
||||||
prebake(() => samples('github:tidalcycles/Dirt-Samples/master'))
|
});
|
||||||
|
|
||||||
document.getElementById('play').addEventListener('click',
|
document.getElementById('play').addEventListener('click',
|
||||||
() => s("bd sd").play()
|
() => s("bd sd").play()
|
||||||
@ -44,9 +61,22 @@ This is called evaluation: Taking a piece of code and executing it on the fly.
|
|||||||
To do that, you can use the `evaluate` function:
|
To do that, you can use the `evaluate` function:
|
||||||
|
|
||||||
```js
|
```js
|
||||||
import '@strudel/web';
|
initStrudel();
|
||||||
|
|
||||||
document.getElementById('play').addEventListener('click',
|
document.getElementById('play').addEventListener('click',
|
||||||
() => evaluate('note("c a f e").jux(rev)')
|
() => evaluate('note("c a f e").jux(rev)')
|
||||||
);
|
);
|
||||||
|
document.getElementById('play').addEventListener('stop',
|
||||||
|
() => hush()
|
||||||
|
);
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Double vs Single Quotes
|
||||||
|
|
||||||
|
There is a tiny difference between the [Strudel REPL](https://strudel.tidalcycles.org/) and `@strudel/web`.
|
||||||
|
In the REPL you can use 'single quotes' for regular JS strings and "double quotes" for mini notation patterns.
|
||||||
|
In `@strudel/web`, it does not matter which types of quotes you're using.
|
||||||
|
There will probably be an escapte hatch for that in the future.
|
||||||
|
|
||||||
|
## More Examples
|
||||||
|
|
||||||
|
Check out the examples folder for more examples, both using plain html and vite!
|
||||||
10
packages/web/examples/evaluate.html
Normal file
10
packages/web/examples/evaluate.html
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<button id="play">play</button>
|
||||||
|
<button id="stop">stop</button>
|
||||||
|
<script type="module">
|
||||||
|
import { initStrudel } from 'https://cdn.skypack.dev/@strudel/web@0.8.2';
|
||||||
|
|
||||||
|
initStrudel();
|
||||||
|
document.getElementById('play').addEventListener('click', () => evaluate('note("c a f e").jux(rev)'));
|
||||||
|
document.getElementById('play').addEventListener('stop', () => hush());
|
||||||
|
</script>
|
||||||
10
packages/web/examples/minimal.html
Normal file
10
packages/web/examples/minimal.html
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<button id="play">play</button>
|
||||||
|
<button id="stop">stop</button>
|
||||||
|
<script type="module">
|
||||||
|
import { initStrudel } from 'https://cdn.skypack.dev/@strudel/web@0.8.2';
|
||||||
|
|
||||||
|
initStrudel();
|
||||||
|
document.getElementById('play').addEventListener('click', () => note('<c a f e>(3,8)').play());
|
||||||
|
document.getElementById('stop').addEventListener('click', () => hush());
|
||||||
|
</script>
|
||||||
12
packages/web/examples/samples.html
Normal file
12
packages/web/examples/samples.html
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<button id="play">play</button>
|
||||||
|
<button id="stop">stop</button>
|
||||||
|
<script type="module">
|
||||||
|
import { initStrudel } from 'https://cdn.skypack.dev/@strudel/web@0.8.2';
|
||||||
|
|
||||||
|
initStrudel({
|
||||||
|
prebake: () => samples('github:tidalcycles/Dirt-Samples/master'),
|
||||||
|
});
|
||||||
|
document.getElementById('play').addEventListener('click', () => s('[bd sd](3,8)').play());
|
||||||
|
document.getElementById('stop').addEventListener('click', () => hush());
|
||||||
|
</script>
|
||||||
3
pnpm-lock.yaml
generated
3
pnpm-lock.yaml
generated
@ -479,9 +479,6 @@ importers:
|
|||||||
'@strudel.cycles/mini':
|
'@strudel.cycles/mini':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../mini
|
version: link:../mini
|
||||||
'@strudel.cycles/soundfonts':
|
|
||||||
specifier: workspace:*
|
|
||||||
version: link:../soundfonts
|
|
||||||
'@strudel.cycles/tonal':
|
'@strudel.cycles/tonal':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../tonal
|
version: link:../tonal
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user