continue organising documentation files

This commit is contained in:
2023-11-18 00:57:02 +01:00
parent f27b20bbb1
commit 741513ddf0
6 changed files with 109 additions and 109 deletions

View File

@ -9,9 +9,9 @@ import { synchronisation } from "./documentation/synchronisation";
import { samples } from "./documentation/samples"; import { samples } from "./documentation/samples";
import { chaining } from "./documentation/chaining"; import { chaining } from "./documentation/chaining";
import { interaction } from "./documentation/interaction"; import { interaction } from "./documentation/interaction";
import { time } from "./documentation/time"; import { time } from "./documentation/time/time";
import { linear_time } from "./documentation/linear_time"; import { linear_time } from "./documentation/time/linear_time";
import { cyclical_time } from "./documentation/cyclical_time"; import { cyclical_time } from "./documentation/time/cyclical_time";
import { long_forms } from "./documentation/long_forms"; import { long_forms } from "./documentation/long_forms";
import { midi } from "./documentation/midi"; import { midi } from "./documentation/midi";
import { about } from "./documentation/about"; import { about } from "./documentation/about";

View File

@ -1,5 +1,5 @@
import { type Editor } from "../main"; import { type Editor } from "../../main";
import { makeExampleFactory } from "../Documentation"; import { makeExampleFactory } from "../../Documentation";
export const cyclical_time = (app: Editor): string => { export const cyclical_time = (app: Editor): string => {
// @ts-ignore // @ts-ignore
@ -22,7 +22,7 @@ ${makeExample(
beat([1,1/2,1/4,1/8].beat(2)) :: sound('hat').n(0).out() beat([1,1/2,1/4,1/8].beat(2)) :: sound('hat').n(0).out()
`, `,
true true
)} )}
${makeExample( ${makeExample(
"Some sort of ringtone", "Some sort of ringtone",
@ -42,7 +42,7 @@ flip(3) :: beat(1/6) :: blip(800).pan(r(0,1)).out();
beat([1,0.75].beat(2)) :: blip([50, 100].beat(2)).pan(r(0,1)).out(); beat([1,0.75].beat(2)) :: blip([50, 100].beat(2)).pan(r(0,1)).out();
`, `,
false false
)} )}
${makeExample( ${makeExample(
"Beat can match multiple values", "Beat can match multiple values",
@ -50,7 +50,7 @@ ${makeExample(
beat([.5, 1.25])::sound('hat').out() beat([.5, 1.25])::sound('hat').out()
`, `,
false false
)} )}
- <ic>pulse(n: number | number[] = 1, offset: number = 1)</ic>: return true every _n_ pulses. A pulse is the tiniest possible rhythmic value. - <ic>pulse(n: number | number[] = 1, offset: number = 1)</ic>: return true every _n_ pulses. A pulse is the tiniest possible rhythmic value.
- <ic>number</ic>: if <ic>number = 1</ic>, the function will return <ic>true</ic> every pulse. Lists can be used too. - <ic>number</ic>: if <ic>number = 1</ic>, the function will return <ic>true</ic> every pulse. Lists can be used too.
@ -64,7 +64,7 @@ pulse([24, 16])::sound('hat').ad(0, .02).out()
pulse([48, [36,24].dur(4, 1)])::sound('fhardkick').ad(0, .1).out() pulse([48, [36,24].dur(4, 1)])::sound('fhardkick').ad(0, .1).out()
`, `,
true true
)} )}
${makeExample( ${makeExample(
"pulse is the OG rhythmic function in Topos", "pulse is the OG rhythmic function in Topos",
` `
@ -72,7 +72,7 @@ pulse([48, 24, 16].beat(4)) :: sound('linnhats').out()
beat(1)::snd(['bd', '808oh'].beat(1)).out() beat(1)::snd(['bd', '808oh'].beat(1)).out()
`, `,
false false
)} )}
- <ic>bar(n: number | number[] = 1, offset: number = 1)</ic>: return true every _n_ bars. - <ic>bar(n: number | number[] = 1, offset: number = 1)</ic>: return true every _n_ bars.
@ -86,7 +86,7 @@ bar(1)::sound('kick').out()
beat(1)::sound('hat').speed(2).out() beat(1)::sound('hat').speed(2).out()
`, `,
true true
)} )}
${makeExample( ${makeExample(
@ -98,7 +98,7 @@ beat(1, 0.5)::sound('hat').speed(4).out()
bar(1, 0.5)::sound('sn').out() bar(1, 0.5)::sound('sn').out()
`, `,
false false
)} )}
- <ic>onbeat(...n: number[])</ic>: The <ic>onbeat</ic> function allows you to lock on to a specific beat from the clock to execute code. It can accept multiple arguments. It's usage is very straightforward and not hard to understand. You can pass either integers or floating point numbers. By default, topos is using a <ic>4/4</ic> bar meaning that you can target any of these beats (or in-between) with this function. - <ic>onbeat(...n: number[])</ic>: The <ic>onbeat</ic> function allows you to lock on to a specific beat from the clock to execute code. It can accept multiple arguments. It's usage is very straightforward and not hard to understand. You can pass either integers or floating point numbers. By default, topos is using a <ic>4/4</ic> bar meaning that you can target any of these beats (or in-between) with this function.
@ -110,7 +110,7 @@ onbeat(2,4)::snd('snare').n([8,4].beat(4)).out() // Snare on acccentuated beats
onbeat(1.5,2.5,3.5, 3.75)::snd('hat').gain(r(0.9,1.1)).out() // Cool high-hats onbeat(1.5,2.5,3.5, 3.75)::snd('hat').gain(r(0.9,1.1)).out() // Cool high-hats
`, `,
true true
)} )}
## XOX Style sequencers ## XOX Style sequencers
@ -126,7 +126,7 @@ seq('ooxo')::sound('fsoftsnare').out()
seq('xoxo', 0.25)::sound('fhh').out() seq('xoxo', 0.25)::sound('fhh').out()
`, `,
true true
)} )}
${makeExample( ${makeExample(
"Another sequence using more complex parameters", "Another sequence using more complex parameters",
@ -136,7 +136,7 @@ seq('ooxo', [1, 2].bar())::sound('fsoftsnare').speed(0.5).out()
seq(['xoxoxoxx', 'xxoo'].bar())::sound('fhh').out() seq(['xoxoxoxx', 'xxoo'].bar())::sound('fhh').out()
`, `,
true true
)} )}
- <ic>fullseq(expr: string, duration: number = 0.5): boolean</ic> : a variant. Will return <ic>true</ic> or <ic>false</ic> for a whole period, depending on the symbol. Useful for long structure patterns. - <ic>fullseq(expr: string, duration: number = 0.5): boolean</ic> : a variant. Will return <ic>true</ic> or <ic>false</ic> for a whole period, depending on the symbol. Useful for long structure patterns.
- <ic>expr: string</ic>: any string composed of <ic>x</ic> or <ic>o</ic> like so: <ic>"xooxoxxoxoo"</ic>. - <ic>expr: string</ic>: any string composed of <ic>x</ic> or <ic>o</ic> like so: <ic>"xooxoxxoxoo"</ic>.
@ -160,7 +160,7 @@ function complexPat() {
fullseq('xooxooxx', 4) ? simplePat() : complexPat() fullseq('xooxooxx', 4) ? simplePat() : complexPat()
`, `,
true true
)} )}
@ -182,7 +182,7 @@ rhythm(.5, 7, 8)::sound('sine')
rhythm(.5, 3, 8)::sound('sine').freq(500).ad(0, .5).out() rhythm(.5, 3, 8)::sound('sine').freq(500).ad(0, .5).out()
`, `,
true true
)} )}
- <ic>oneuclid(pulses: number, length: number, rotate: number): boolean</ic>: generates <ic>true</ic> or <ic>false</ic> values from an euclidian rhythm sequence. This is another version of <ic>euclid</ic> that does not take an iterator. - <ic>oneuclid(pulses: number, length: number, rotate: number): boolean</ic>: generates <ic>true</ic> or <ic>false</ic> values from an euclidian rhythm sequence. This is another version of <ic>euclid</ic> that does not take an iterator.
@ -195,7 +195,7 @@ ${makeExample(
oneuclid(7,16) :: snd('east').end(0.5).n(irand(3,5)).out() oneuclid(7,16) :: snd('east').end(0.5).n(irand(3,5)).out()
`, `,
true true
)} )}
- <ic>bin(iterator: number, n: number): boolean</ic>: a binary rhythm generator. It transforms the given number into its binary representation (_e.g_ <ic>34</ic> becomes <ic>100010</ic>). It then returns a boolean value based on the iterator in order to generate a rhythm. - <ic>bin(iterator: number, n: number): boolean</ic>: a binary rhythm generator. It transforms the given number into its binary representation (_e.g_ <ic>34</ic> becomes <ic>100010</ic>). It then returns a boolean value based on the iterator in order to generate a rhythm.
- <ic>binrhythm(divisor: number, n: number): boolean: boolean</ic>: iterator-less version of the binary rhythm generator. - <ic>binrhythm(divisor: number, n: number): boolean: boolean</ic>: iterator-less version of the binary rhythm generator.
@ -208,7 +208,7 @@ beat(.5) && bin($(1), 12) && snd('kick').n([4,9].beat(1.5)).out()
beat(.5) && bin($(2), 34) && snd('snare').n([3,5].beat(1)).out() beat(.5) && bin($(2), 34) && snd('snare').n([3,5].beat(1)).out()
`, `,
true true
)} )}
${makeExample( ${makeExample(
"binrhythm for fast cool binary rhythms!", "binrhythm for fast cool binary rhythms!",
@ -222,7 +222,7 @@ binrhythm([.5, .25].beat(1), 30) && snd('wt_granular').n(a)
.room(1).size(1).out() .room(1).size(1).out()
`, `,
true true
)} )}
${makeExample( ${makeExample(
"Submarine jungle music", "Submarine jungle music",
@ -234,7 +234,7 @@ beat(.5) && bin($(1), 911) && snd('ST69').n([2,3,4].beat())
beat(.5) && sound('amencutup').n(irand(2,7)).shape(0.3).out() beat(.5) && sound('amencutup').n(irand(2,7)).shape(0.3).out()
`, `,
false false
)} )}
If you don't find it spicy enough, you can add some more probabilities to your rhythms by taking advantage of the probability functions. See the functions documentation page to learn more about them. If you don't find it spicy enough, you can add some more probabilities to your rhythms by taking advantage of the probability functions. See the functions documentation page to learn more about them.
@ -248,7 +248,7 @@ prob(60)::beat(.5) && euclid($(2), 3, 8) && snd('mash')
prob(80)::beat(.5) && sound(['hh', 'hat'].pick()).out() prob(80)::beat(.5) && sound(['hh', 'hat'].pick()).out()
`, `,
true true
)} )}

View File

@ -1,5 +1,5 @@
import { type Editor } from "../main"; import { type Editor } from "../../main";
import { makeExampleFactory } from "../Documentation"; import { makeExampleFactory } from "../../Documentation";
import pulses from "./pulses.svg"; import pulses from "./pulses.svg";
export const linear_time = (app: Editor): string => { export const linear_time = (app: Editor): string => {
@ -27,7 +27,7 @@ ${makeExample(
log(\`\$\{cbar()}\, \$\{cbeat()\}, \$\{cpulse()\}\`) log(\`\$\{cbar()}\, \$\{cbeat()\}, \$\{cpulse()\}\`)
`, `,
true true
)} )}
### BPM and PPQN ### BPM and PPQN
@ -84,7 +84,7 @@ if((cbar() % 4) > 1) {
beat([.5, .5, 1, .25].beat(0.5)) :: sound('shaker').out() beat([.5, .5, 1, .25].beat(0.5)) :: sound('shaker').out()
`, `,
true true
)} )}
## Time Warping ## Time Warping
@ -109,7 +109,7 @@ flip(3) :: beat([.25,.5].beat(.5)) :: sound('dr')
beat(.25) :: warp([12, 48, 24, 1, 120, 30].pick()) beat(.25) :: warp([12, 48, 24, 1, 120, 30].pick())
`, `,
true true
)} )}
- <ic>beat_warp(beat: number)</ic>: this function jumps to the _n_ beat of the clock. The first beat is <ic>1</ic>. - <ic>beat_warp(beat: number)</ic>: this function jumps to the _n_ beat of the clock. The first beat is <ic>1</ic>.
@ -131,7 +131,7 @@ beat(.5) :: snd('arpy').note(
beat(1) :: beat_warp([2,4,5,10,11].pick()) beat(1) :: beat_warp([2,4,5,10,11].pick())
`, `,
true true
)} )}
## Transport-based rhythm generators ## Transport-based rhythm generators
@ -145,7 +145,7 @@ onbeat(2,4)::snd('snare').n([8,4].beat(4)).out() // Snare on acccentuated beats
onbeat(1.5,2.5,3.5, 3.75)::snd('hat').gain(r(0.9,1.1)).out() // Cool high-hats onbeat(1.5,2.5,3.5, 3.75)::snd('hat').gain(r(0.9,1.1)).out() // Cool high-hats
`, `,
true true
)} )}
${makeExample( ${makeExample(
"Let's do something more complex", "Let's do something more complex",
@ -157,7 +157,7 @@ beat([.25, 1/8].beat(1.5))::snd('hat').n(2)
.pan(usine()).out() .pan(usine()).out()
`, `,
false false
)} )}
- <ic>oncount(beats: number[], meter: number)</ic>: This function is similar to <ic>onbeat</ic> but it allows you to specify a custom number of beats as the last argument. - <ic>oncount(beats: number[], meter: number)</ic>: This function is similar to <ic>onbeat</ic> but it allows you to specify a custom number of beats as the last argument.
@ -172,7 +172,7 @@ onbeat(1,1.5,2,3,4) :: sound('bd').gain(2.0).out()
oncount([1,3,5.5,7,7.5,8],8) :: sound('hh').gain(irand(1.0,4.0)).out() oncount([1,3,5.5,7,7.5,8],8) :: sound('hh').gain(irand(1.0,4.0)).out()
`, `,
true true
)} )}
${makeExample( ${makeExample(
"Using oncount to create rhythms with a custom meter", "Using oncount to create rhythms with a custom meter",
@ -184,7 +184,7 @@ oncount([2, 3, 3.5, 6, 7, 10, 15],16) :: sound('hh').n(8).gain(0.8).out()
oncount([1, 4, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16],16) :: sound('hh').out() oncount([1, 4, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16],16) :: sound('hh').out()
`, `,
true true
)} )}

View File

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

View File

@ -1,5 +1,5 @@
import { makeExampleFactory } from "../Documentation"; import { makeExampleFactory } from "../../Documentation";
import { type Editor } from "../main"; import { type Editor } from "../../main";
import times from "./times.svg"; import times from "./times.svg";
export const time = (application: Editor): string => { export const time = (application: Editor): string => {

View File

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB