Skip to content

Commit

Permalink
metadata: improve doc
Browse files Browse the repository at this point in the history
  • Loading branch information
roipoussiere committed Jun 6, 2023
1 parent bd7f4dd commit 96ac054
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 10 deletions.
2 changes: 1 addition & 1 deletion website/src/pages/learn/code.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ Try uncommenting this line by deleting `//` and refreshing the pattern.
You can also use the keyboard shortcut `cmd-/` to toggle comments on and off.

You might noticed that some comments in the REPL samples include some words starting with a "@", like `@title` or `@license`.
Those are just a convention to define some information about the music. We will talk about it in the _metadata_ section.
Those are just a convention to define some information about the music. We will talk about it in the [Music metadata](/learn/metadata) section.

# Strings

Expand Down
75 changes: 66 additions & 9 deletions website/src/pages/learn/metadata.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,81 @@ import { JsDoc } from '../../docs/JsDoc';

# Music metadata

You can optionally add some music metadata in your Strudel code, by using tags in code comments like this:
You can optionally add some music metadata in your Strudel code, by using tags in code comments:

```
// @license: CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// @author: Felix Roos
// @details: Inspired by Friendship - Let's not talk about it (1979) :)
```js
// @title Hey Hoo
// @by Sam Tagada
// @license CC BY-NC-SA
```

Like other comments, those are ignored by Strudel, but it can be used by other tools to retrieve some information about the music.

It is for instance used by the [swatch tool](https://github.com/tidalcycles/strudel/tree/main/my-patterns) to display pattern titles in the [examples page](https://strudel.tidalcycles.org/examples/).

## Alternative syntax

You can also use comment blocks:

```js
/*
@title Hey Hoo
@by Sam Tagada
@license CC BY-NC-SA
*/
```

Or define multiple tags in one line:

```js
// @title Hey Hoo @by Sam Tagada @license CC BY-NC-SA
```

## Tags list

Available tags are:

- `@title`: music title
- `@by`: music author(s), separated with comma, eventually followed with a link in `<>` (ex: `@author john doe <https://example.com>`)
- `@license`: music license
- `@by`: music author(s), separated by comma, eventually followed with a link in `<>` (ex: `@by John Doe <https://example.com>`)
- `@license`: music license(s)
- `@details`: some additional information about the music
- `@url`: web page related to the music (git repo, soundcloud link, etc.)
- `@genre`: music genre (pop, jazz, etc)
- `@url`: web page(s) related to the music (git repo, soundcloud link, etc.)
- `@genre`: music genre(s) (pop, jazz, etc)
- `@album`: music album name

## Multiple values

Some of them accepts several values, using the comma or new line separator, or duplicating the tag:

```js
/*
@by Sam Tagada
Jimmy
@genre pop, jazz
@url https://example.com
@url https://example.org
*/
```

You can also add optinal prefixes and use tags where you want:

```js
/*
song @by Sam Tagada
samples @by Jimmy
*/
...
note("a3 c#4 e4 a4") // @by Sandy
```

## Multiline

If a tag doesn't accept a list, it can take multi-line values:

```js
/*
@details I wrote this song in February 19th, 2023.
It was around midnight and I was lying on
the sofa in the living room.
*/
```

0 comments on commit 96ac054

Please sign in to comment.