Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

implement mainline tidal functions #31

Open
58 of 74 tasks
felixroos opened this issue Apr 9, 2022 · 12 comments
Open
58 of 74 tasks

implement mainline tidal functions #31

felixroos opened this issue Apr 9, 2022 · 12 comments
Labels
compatibility Mainline Tidal Compatibility
Milestone

Comments

@felixroos
Copy link
Collaborator

felixroos commented Apr 9, 2022

There are many functions from tidal that have not landed yet.

Basics

Needs longer term work/thought

  • naming patterns? block based evaluation? block based evaluation #34
  • once
  • panic
  • lindenmeyer
  • select, selectF, pickF (?) (need to decide on names)

Low priority or won't implement

  • wedge
  • flatpat
  • <> operator (overlay/stack)
  • steps
  • stripe, slowstripe
  • step / step'
  • spread / spreadf / fastspread

Concatenation

https://tidalcycles.org/docs/patternlib/tour/concatenation

  • cat: is synonym to fastcat in strudel, while in tidal, cat is slowcat
  • fastcat
  • timeCat: why is this camel case?
  • randcat
  • append: not implemented, as made redundant by cat append is redundant #89
  • fastAppend: ditto with fastcat
  • slowAppend: ditto with slowcat
  • brak

Accumulation

  • overlay => removed, as it's the same as stack see append is redundant #89
  • stack
  • superimpose
  • layer
  • iter
  • iter' = iterBack

Alteration

  • range, rangex
  • quantise
  • ply
  • stutter = echo
  • palindrome = every(2, rev)
  • trunc
  • linger
  • chunk, chunk'
  • shuffle
  • scramble
  • rot
  • spreadChoose / spreadr

conditions

  • every
  • every' - what's this?
  • whenmod - strange, but people do use it.. whenmod #618
  • sometimes, sometimesBy, someCycles, someCyclesBy
  • choose, chooseby, wchoose, wchooseby - wchooseBy named wchooseWith in strudel
  • struct
  • mask
  • sew
  • stitch
  • squeeze
  • euclid, euclidLegato
  • euclidInv, euclidFull
  • ifp - what's this?

Time

Harmony & Melody

Think these are just implemented differently in strudel?

  • scale
  • scaleList
  • getScale
  • toScale
  • chordList
  • arpeggiate
  • arp

Transitions

these need block-based eval

  • anticipate / anticipateIn
  • clutch / clutchIn
  • histpan
  • interpolate / interpolateIn
  • jump / jumpIn / jumpIn' / jumpMod
  • wait / waitT
  • wash / washIn
  • xfade / xfadeIn

Sampling

  • chop
  • striate
  • striateBy
  • loopAt
  • segment
  • discretise - old name for segment.. lets just stick with the new one
  • slice
  • splice
  • bite
  • chew

Randomness

  • rand / irand
  • perlin / perlinWith
  • perlin2 / perlin2With

Composition

  • ur
  • seqP
  • seqPLoop
@bpow
Copy link
Contributor

bpow commented Aug 6, 2022

randcat was implemented in 7fbd452

@felixroos felixroos pinned this issue Aug 6, 2022
@yaxu
Copy link
Member

yaxu commented Aug 8, 2022

I think 'inhabit' is

function inhabit(lookup, pat) {
	return pat.fmap(v => v in lookup ? lookup[v] : pure(silence))._squeezeJoin()
}
s(inhabit({a: "bd sd", b: "cp cp cp"}, "a b")).webdirt()

(I plan to do this while looking at #179)

@tedthetrumpet
Copy link

I know I asked about this already in another place and there is an answer of sorts, but: just to note that the Tidal function run is missing as well.

@tedthetrumpet
Copy link

slice is missing, and not listed as missing.

@yaxu
Copy link
Member

yaxu commented Feb 3, 2023

Added hurry and press/pressBy in #397

@yaxu
Copy link
Member

yaxu commented Feb 22, 2023

@tedthetrumpet looks like run, slice and splice are implemented now

@tedthetrumpet
Copy link

Great, thanks!

@jarmitage
Copy link
Contributor

@geikha
Copy link
Contributor

geikha commented Nov 16, 2023

note that rolled, rolledBy and rolledWith are missing

@yaxu yaxu added this to the 1.0 milestone Jan 11, 2024
@yaxu
Copy link
Member

yaxu commented Jan 11, 2024

Pruned list ready for 1.0

@felixroos
Copy link
Collaborator Author

pickF now here #924 @yaxu just noticed after merging that pickF is listed under "Needs longer term work/thought"...

@yaxu
Copy link
Member

yaxu commented Aug 22, 2024

Here is scramble:

const _rearrangeWith = (ipat, n, pat) => {
  const pats = [...Array(n).keys()].map((i) => pat.zoom(Fraction(i).div(n), Fraction(i+1).div(n)));
  return ipat.fmap(i => pats[i].repeatCycles(n)._fast(n)).innerJoin();
}

const scramble = register('scramble', (n,pat) => {
  return _rearrangeWith(_irand(n)._segment(n), n, pat);
})

shuffle also needed..

yaxu added a commit that referenced this issue Aug 23, 2024
yaxu added a commit that referenced this issue Sep 7, 2024
yaxu added a commit that referenced this issue Sep 7, 2024
yaxu added a commit that referenced this issue Sep 19, 2024
For patterning slices of patterns. ref #31.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
compatibility Mainline Tidal Compatibility
Projects
None yet
Development

No branches or pull requests

6 participants