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

Pianoroll Object Support #142

Merged
merged 3 commits into from
Jun 22, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 1 addition & 2 deletions packages/tone/draw.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,7 @@ Pattern.prototype.draw = function (callback, { from, to, onQuery }) {
const begin = currentCycle + from;
const end = currentCycle + to;
setTimeout(() => {
events = this._asNumber(true) // true = silent error
.query(new State(new TimeSpan(begin, end)))
events = this.query(new State(new TimeSpan(begin, end)))
.filter(Boolean)
.filter((event) => event.part.begin.equals(event.whole.begin));
onQuery?.(events);
Expand Down
12 changes: 9 additions & 3 deletions packages/tone/pianoroll.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@ This program is free software: you can redistribute it and/or modify it under th
import { Pattern } from '@strudel.cycles/core';

const scale = (normalized, min, max) => normalized * (max - min) + min;
const getValue = (e) => {
let value = typeof e.value === 'object' ? e.value.n : e.value;
if (typeof value === 'string') {
value = toMidi(value);
}
return value;
};

Pattern.prototype.pianoroll = function ({
cycles = 4,
Expand Down Expand Up @@ -75,9 +82,9 @@ Pattern.prototype.pianoroll = function ({
ctx.stroke();
const timePx = scale((event.whole.begin - (flipTime ? to : from)) / timeExtent, ...timeRange);
let durationPx = scale(event.duration / timeExtent, 0, timeAxis);

const value = getValue(event);
const valuePx = scale(
fold ? foldValues.indexOf(event.value) / foldValues.length : (Number(event.value) - minMidi) / valueExtent,
fold ? foldValues.indexOf(value) / foldValues.length : (Number(value) - minMidi) / valueExtent,
...valueRange,
);
let margin = 0;
Expand Down Expand Up @@ -105,7 +112,6 @@ Pattern.prototype.pianoroll = function ({
from: from - overscan,
to: to + overscan,
onQuery: (events) => {
const getValue = (e) => Number(e.value);
const { min, max, values } = events.reduce(
({ min, max, values }, e) => {
const v = getValue(e);
Expand Down
27 changes: 27 additions & 0 deletions repl/src/tunes.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -967,3 +967,30 @@ export const swimmingWithSoundfonts = `stack(
).s('Acoustic Bass: Bass')
).slow(51)
.out()`;

export const outroMusic = `samples({
bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],
sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],
hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],
perc: ['perc/002_perc2.wav'],
}, 'github:tidalcycles/Dirt-Samples/master/');

"C^7 Am7 Dm7 G7".slow(2).voicings()
.stack("0@6 [<1 2> <2 0> 1]@2".scale('C5 major'))
.n().slow(4)
.s('0040_FluidR3_GM_sf2_file')
.color('steelblue')
.stack(
"<-7 ~@2 [~@2 -7] -9 ~@2 [~@2 -9] -10!2 ~ [~@2 -10] -5 ~ [-3 -2 -10]@2>*2".scale('C3 major')
.n().s('sawtooth').color('brown')
)
.attack(0.05).decay(.1).sustain(.7)
.cutoff(perlin.range(800,2000))
.gain(.3)
.stack(
s("<bd!3 [bd ~ bd]> sd,hh*3,~@5 <perc perc*3>")
.speed(perlin.range(.9,1.1))
.n(3).color('gray')
).slow(3/2)
//.pianoroll({autorange:1,vertical:1,fold:0})
.out()`;
1 change: 1 addition & 0 deletions repl/src/tunes.snapshot.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ export const giantStepsReggae = ["0/1 -> 25/32: F#5","25/32 -> 25/16: D5","25/64
export const jemblung = ["0/1 -> 3/20: 0","0/1 -> 3/20: 3","3/4 -> 9/10: 1","3/4 -> 9/10: 4","0/1 -> 3/10: -8","3/8 -> 27/40: -8","3/4 -> 21/20: -7","0/1 -> 3/200: 12","3/4 -> 153/200: 11","0/1 -> 3/20: c2","747/1000 -> 1497/1000: c1","0/1 -> 3/8: c2","3/8 -> 3/4: c2","3/4 -> 9/8: c2","3/2 -> 33/20: 4","3/2 -> 33/20: 7","3/4 -> 21/20: -7","9/8 -> 57/40: -7","3/2 -> 9/5: -4","15/8 -> 87/40: -4","1/1 -> 203/200: 11","5/4 -> 253/200: 11","3/2 -> 303/200: 12","3/2 -> 33/20: c2","747/1000 -> 1497/1000: c1","3/4 -> 9/8: c2","9/8 -> 3/2: c2","3/2 -> 15/8: c2","15/8 -> 9/4: c2","9/4 -> 231/100: 3","9/4 -> 231/100: 6","5/2 -> 64/25: 3","5/2 -> 64/25: 6","11/4 -> 281/100: 5","11/4 -> 281/100: 8","15/8 -> 87/40: -4","9/4 -> 51/20: -5","9/4 -> 51/20: -5","21/8 -> 117/40: -5","21/8 -> 117/40: -3","3/2 -> 33/20: c2","2247/1000 -> 2997/1000: c1","15/8 -> 9/4: c2","9/4 -> 21/8: c2","21/8 -> 3/1: c2","3/1 -> 63/20: 1","3/1 -> 63/20: 4","15/4 -> 39/10: 2","15/4 -> 39/10: 5","3/1 -> 33/10: -7","27/8 -> 147/40: -7","15/4 -> 81/20: -6","3/1 -> 603/200: 13","15/4 -> 753/200: 12","3/1 -> 63/20: c2","3747/1000 -> 4497/1000: c1","3/1 -> 27/8: c2","27/8 -> 15/4: c2","15/4 -> 33/8: c2","9/2 -> 93/20: 5","9/2 -> 93/20: 8","15/4 -> 81/20: -6","33/8 -> 177/40: -6","9/2 -> 24/5: -3","39/8 -> 207/40: -3","4/1 -> 803/200: 12","17/4 -> 853/200: 12","9/2 -> 903/200: 13","9/2 -> 93/20: c2","3747/1000 -> 4497/1000: c1","15/4 -> 33/8: c2","33/8 -> 9/2: c2","9/2 -> 39/8: c2","39/8 -> 21/4: c2","21/4 -> 531/100: 4","21/4 -> 531/100: 7","11/2 -> 139/25: 4","11/2 -> 139/25: 7","23/4 -> 581/100: 6","23/4 -> 581/100: 9","39/8 -> 207/40: -3","21/4 -> 111/20: -4","21/4 -> 111/20: -4","45/8 -> 237/40: -4","45/8 -> 237/40: -2","9/2 -> 93/20: c2","5247/1000 -> 5997/1000: c1","39/8 -> 21/4: c2","21/4 -> 45/8: c2","45/8 -> 6/1: c2","6/1 -> 123/20: 0","6/1 -> 123/20: 3","27/4 -> 69/10: 1","27/4 -> 69/10: 4","6/1 -> 63/10: -8","51/8 -> 267/40: -8","27/4 -> 141/20: -7","6/1 -> 1203/200: 12","27/4 -> 1353/200: 11","6/1 -> 123/20: c2","6747/1000 -> 7497/1000: c1","6/1 -> 51/8: c2","51/8 -> 27/4: c2","27/4 -> 57/8: c2","15/2 -> 153/20: 4","15/2 -> 153/20: 7","27/4 -> 141/20: -7","57/8 -> 297/40: -7","15/2 -> 39/5: -4","63/8 -> 327/40: -4","7/1 -> 1403/200: 11","29/4 -> 1453/200: 11","15/2 -> 1503/200: 12","15/2 -> 153/20: c2","6747/1000 -> 7497/1000: c1","27/4 -> 57/8: c2","57/8 -> 15/2: c2","15/2 -> 63/8: c2","63/8 -> 33/4: c2","33/4 -> 831/100: 3","33/4 -> 831/100: 6","17/2 -> 214/25: 3","17/2 -> 214/25: 6","35/4 -> 881/100: 5","35/4 -> 881/100: 8","63/8 -> 327/40: -4","33/4 -> 171/20: -5","33/4 -> 171/20: -5","69/8 -> 357/40: -5","69/8 -> 357/40: -3","15/2 -> 153/20: c2","8247/1000 -> 8997/1000: c1","63/8 -> 33/4: c2","33/4 -> 69/8: c2","69/8 -> 9/1: c2","9/1 -> 183/20: 1","9/1 -> 183/20: 4","39/4 -> 99/10: 2","39/4 -> 99/10: 5","9/1 -> 93/10: -7","75/8 -> 387/40: -7","39/4 -> 201/20: -6","9/1 -> 1803/200: 13","39/4 -> 1953/200: 12","9/1 -> 183/20: c2","9747/1000 -> 10497/1000: c1","9/1 -> 75/8: c2","75/8 -> 39/4: c2","39/4 -> 81/8: c2","21/2 -> 213/20: 5","21/2 -> 213/20: 8","39/4 -> 201/20: -6","81/8 -> 417/40: -6","21/2 -> 54/5: -3","87/8 -> 447/40: -3","10/1 -> 2003/200: 12","41/4 -> 2053/200: 12","21/2 -> 2103/200: 13","21/2 -> 213/20: c2","9747/1000 -> 10497/1000: c1","39/4 -> 81/8: c2","81/8 -> 21/2: c2","21/2 -> 87/8: c2","87/8 -> 45/4: c2","45/4 -> 1131/100: 4","45/4 -> 1131/100: 7","23/2 -> 289/25: 4","23/2 -> 289/25: 7","47/4 -> 1181/100: 6","47/4 -> 1181/100: 9","87/8 -> 447/40: -3","45/4 -> 231/20: -4","45/4 -> 231/20: -4","93/8 -> 477/40: -4","93/8 -> 477/40: -2","21/2 -> 213/20: c2","11247/1000 -> 11997/1000: c1","87/8 -> 45/4: c2","45/4 -> 93/8: c2","93/8 -> 12/1: c2"]
export const magicSofa = ["0/1 -> 1/4: B3","0/1 -> 1/4: D4","0/1 -> 1/4: E4","0/1 -> 1/4: G4","1/4 -> 1/2: C4","1/4 -> 1/2: E4","1/4 -> 1/2: F4","1/4 -> 1/2: A4","1/2 -> 3/4: A3","1/2 -> 3/4: C4","1/2 -> 3/4: E4","1/2 -> 3/4: G4","3/4 -> 1/1: B3","3/4 -> 1/1: E4","3/4 -> 1/1: F4","3/4 -> 1/1: A4","0/1 -> 1/2: C2","1/2 -> 1/1: D2","1/1 -> 3/2: B3","1/1 -> 3/2: D4","1/1 -> 3/2: F#4","1/1 -> 3/2: A4","3/2 -> 2/1: C#4","3/2 -> 2/1: F#4","3/2 -> 2/1: G4","3/2 -> 2/1: B4","1/1 -> 3/2: G2","3/2 -> 2/1: A2","2/1 -> 9/4: C4","2/1 -> 9/4: Eb4","2/1 -> 9/4: G4","2/1 -> 9/4: Bb4","9/4 -> 5/2: Eb4","9/4 -> 5/2: G4","9/4 -> 5/2: Ab4","9/4 -> 5/2: C5","11/4 -> 3/1: D4","11/4 -> 3/1: G4","11/4 -> 3/1: Ab4","11/4 -> 3/1: C5","2/1 -> 5/2: Bb2","5/2 -> 3/1: C3","3/1 -> 7/2: D#4","3/1 -> 7/2: F#4","3/1 -> 7/2: G#4","3/1 -> 7/2: B4","3/1 -> 7/2: E2","7/2 -> 4/1: G#2","17/4 -> 9/2: C4","17/4 -> 9/2: E4","17/4 -> 9/2: F4","17/4 -> 9/2: A4","9/2 -> 19/4: B3","9/2 -> 19/4: D4","9/2 -> 19/4: E4","9/2 -> 19/4: G4","19/4 -> 5/1: B3","19/4 -> 5/1: E4","19/4 -> 5/1: F4","19/4 -> 5/1: A4","4/1 -> 9/2: F2","9/2 -> 5/1: D2","11/2 -> 6/1: C#4","11/2 -> 6/1: F#4","11/2 -> 6/1: G4","11/2 -> 6/1: B4","5/1 -> 11/2: A2","11/2 -> 6/1: A2","6/1 -> 25/4: D4","6/1 -> 25/4: F4","6/1 -> 25/4: G4","6/1 -> 25/4: Bb4","25/4 -> 13/2: Eb4","25/4 -> 13/2: G4","25/4 -> 13/2: Ab4","25/4 -> 13/2: C5","13/2 -> 27/4: C4","13/2 -> 27/4: Eb4","13/2 -> 27/4: G4","13/2 -> 27/4: Bb4","27/4 -> 7/1: D4","27/4 -> 7/1: G4","27/4 -> 7/1: Ab4","27/4 -> 7/1: C5","6/1 -> 13/2: Eb2","13/2 -> 7/1: C3","7/1 -> 15/2: C#4","7/1 -> 15/2: E4","7/1 -> 15/2: G#4","7/1 -> 15/2: B4","7/1 -> 15/2: A2","15/2 -> 8/1: G#2"]
export const meltingsubmarine = ["0/1 -> 3/2: {\"s\":\"bd\",\"speed\":0.7519542165100574}","3/4 -> 3/2: {\"s\":\"sd\",\"speed\":0.7931522866332671}","3/8 -> 3/4: {\"s\":\"hh\",\"speed\":0.7285963821098448}","3/4 -> 9/8: {\"s\":\"hh\",\"speed\":0.77531205091027}","0/1 -> 3/2: {\"n\":33.129885541275144,\"decay\":0.15,\"sustain\":0,\"s\":\"sawtooth\",\"gain\":0.4,\"cutoff\":3669.6267869262615}","0/1 -> 3/2: {\"n\":33.17988554127514,\"decay\":0.15,\"sustain\":0,\"s\":\"sawtooth\",\"gain\":0.4,\"cutoff\":3669.6267869262615}","0/1 -> 3/2: {\"n\":55.129885541275144,\"s\":\"sawtooth\",\"gain\":0.16,\"cutoff\":500,\"attack\":1}","0/1 -> 3/2: {\"n\":59.129885541275144,\"s\":\"sawtooth\",\"gain\":0.16,\"cutoff\":500,\"attack\":1}","0/1 -> 3/2: {\"n\":60.129885541275144,\"s\":\"sawtooth\",\"gain\":0.16,\"cutoff\":500,\"attack\":1}","0/1 -> 3/2: {\"n\":64.12988554127514,\"s\":\"sawtooth\",\"gain\":0.16,\"cutoff\":500,\"attack\":1}","0/1 -> 3/2: {\"n\":55.16988554127514,\"s\":\"sawtooth\",\"gain\":0.16,\"cutoff\":500,\"attack\":1}","0/1 -> 3/2: {\"n\":59.16988554127514,\"s\":\"sawtooth\",\"gain\":0.16,\"cutoff\":500,\"attack\":1}","0/1 -> 3/2: {\"n\":60.16988554127514,\"s\":\"sawtooth\",\"gain\":0.16,\"cutoff\":500,\"attack\":1}","0/1 -> 3/2: {\"n\":64.16988554127515,\"s\":\"sawtooth\",\"gain\":0.16,\"cutoff\":500,\"attack\":1}","3/16 -> 3/8: {\"n\":69.01266877519555,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.15}","3/8 -> 9/16: {\"n\":69.04676036055696,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.15}","3/8 -> 9/16: {\"n\":72.04676036055696,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.15}","3/4 -> 15/16: {\"n\":72.16001184806132,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.15}","15/16 -> 9/8: {\"n\":72.21301072199333,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.15}","3/16 -> 3/8: {\"n\":69.05266877519557,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.15}","3/8 -> 9/16: {\"n\":69.08676036055695,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.15}","3/8 -> 9/16: {\"n\":72.08676036055695,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.15}","3/4 -> 15/16: {\"n\":72.20001184806131,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.15}","15/16 -> 9/8: {\"n\":72.25301072199335,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.15}","0/1 -> 3/16: {\"n\":93.00057728554401,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.075}","0/1 -> 3/16: {\"n\":93.04057728554402,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.075}","3/8 -> 9/16: {\"n\":69.01266877519555,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.075}","9/16 -> 3/4: {\"n\":69.04676036055696,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.075}","9/16 -> 3/4: {\"n\":72.04676036055696,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.075}","15/16 -> 9/8: {\"n\":72.16001184806132,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.075}","3/8 -> 9/16: {\"n\":69.05266877519557,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.075}","9/16 -> 3/4: {\"n\":69.08676036055695,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.075}","9/16 -> 3/4: {\"n\":72.08676036055695,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.075}","15/16 -> 9/8: {\"n\":72.20001184806131,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.075}","3/16 -> 3/8: {\"n\":93.00057728554401,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.049999999999999996}","3/16 -> 3/8: {\"n\":93.04057728554402,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.049999999999999996}","9/16 -> 3/4: {\"n\":69.01266877519555,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.049999999999999996}","3/4 -> 15/16: {\"n\":69.04676036055696,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.049999999999999996}","3/4 -> 15/16: {\"n\":72.04676036055696,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.049999999999999996}","9/16 -> 3/4: {\"n\":69.05266877519557,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.049999999999999996}","3/4 -> 15/16: {\"n\":69.08676036055695,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.049999999999999996}","3/4 -> 15/16: {\"n\":72.08676036055695,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.049999999999999996}","0/1 -> 3/16: {\"n\":72.0468455057745,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.0375}","0/1 -> 3/16: {\"n\":93.0468455057745,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.0375}","3/8 -> 9/16: {\"n\":93.00057728554401,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.0375}","0/1 -> 3/16: {\"n\":72.0868455057745,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.0375}","0/1 -> 3/16: {\"n\":93.0868455057745,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.0375}","3/8 -> 9/16: {\"n\":93.04057728554402,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.0375}","3/4 -> 15/16: {\"n\":69.01266877519555,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.0375}","15/16 -> 9/8: {\"n\":69.04676036055696,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.0375}","3/4 -> 15/16: {\"n\":69.05266877519557,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.0375}","15/16 -> 9/8: {\"n\":69.08676036055695,\"decay\":0.1,\"sustain\":0,\"s\":\"triangle\",\"gain\":0.0375}"]
export const outroMusic = ["0/1 -> 3/1: {\"n\":\"B3\",\"s\":\"0040_FluidR3_GM_sf2_file\",\"attack\":0.05,\"decay\":0.1,\"sustain\":0.7,\"cutoff\":1111.7252990603447,\"gain\":0.3}","0/1 -> 3/1: {\"n\":\"D4\",\"s\":\"0040_FluidR3_GM_sf2_file\",\"attack\":0.05,\"decay\":0.1,\"sustain\":0.7,\"cutoff\":1111.7252990603447,\"gain\":0.3}","0/1 -> 3/1: {\"n\":\"E4\",\"s\":\"0040_FluidR3_GM_sf2_file\",\"attack\":0.05,\"decay\":0.1,\"sustain\":0.7,\"cutoff\":1111.7252990603447,\"gain\":0.3}","0/1 -> 3/1: {\"n\":\"G4\",\"s\":\"0040_FluidR3_GM_sf2_file\",\"attack\":0.05,\"decay\":0.1,\"sustain\":0.7,\"cutoff\":1111.7252990603447,\"gain\":0.3}","0/1 -> 9/2: {\"n\":\"C5\",\"s\":\"0040_FluidR3_GM_sf2_file\",\"attack\":0.05,\"decay\":0.1,\"sustain\":0.7,\"cutoff\":1111.7252990603447,\"gain\":0.3}","0/1 -> 3/4: {\"n\":\"C2\",\"s\":\"sawtooth\",\"attack\":0.05,\"decay\":0.1,\"sustain\":0.7,\"cutoff\":864.536878321087,\"gain\":0.3}","0/1 -> 3/4: {\"s\":\"bd\",\"speed\":0.9107561463868479,\"n\":3}","3/4 -> 3/2: {\"s\":\"sd\",\"speed\":0.9931522866332672,\"n\":3}","0/1 -> 1/2: {\"s\":\"hh\",\"speed\":0.9036881079621337,\"n\":3}","1/2 -> 1/1: {\"s\":\"hh\",\"speed\":0.9519542165100575,\"n\":3}"]
export const primalEnemy = ["0/1 -> 1/4: C3","0/1 -> 1/4: G3","0/1 -> 1/4: C4","1/2 -> 3/4: C3","1/2 -> 3/4: G3","1/2 -> 3/4: C4","0/1 -> 1/2: c2","1/2 -> 5/8: c2","3/4 -> 7/8: c2","0/1 -> 1/2: c1","1/2 -> 1/1: c1","1/1 -> 9/8: Eb3","1/1 -> 9/8: Bb3","1/1 -> 9/8: Eb4","5/4 -> 11/8: Eb3","5/4 -> 11/8: Bb3","5/4 -> 11/8: Eb4","3/2 -> 13/8: Eb3","3/2 -> 13/8: Bb3","3/2 -> 13/8: Eb4","7/4 -> 15/8: Eb3","7/4 -> 15/8: Bb3","7/4 -> 15/8: Eb4","1/1 -> 3/2: c2","3/2 -> 13/8: c2","7/4 -> 15/8: c2","1/1 -> 3/2: c1","3/2 -> 2/1: c1","2/1 -> 9/4: C3","2/1 -> 9/4: G3","2/1 -> 9/4: C4","5/2 -> 11/4: C3","5/2 -> 11/4: G3","5/2 -> 11/4: C4","2/1 -> 5/2: c2","5/2 -> 21/8: c2","11/4 -> 23/8: c2","2/1 -> 5/2: c1","5/2 -> 3/1: c1","3/1 -> 49/16: F3","3/1 -> 49/16: C4","3/1 -> 49/16: F4","25/8 -> 51/16: F3","25/8 -> 51/16: C4","25/8 -> 51/16: F4","13/4 -> 53/16: F3","13/4 -> 53/16: C4","13/4 -> 53/16: F4","27/8 -> 55/16: F3","27/8 -> 55/16: C4","27/8 -> 55/16: F4","7/2 -> 113/32: G3","7/2 -> 113/32: D4","7/2 -> 113/32: G4","57/16 -> 115/32: G3","57/16 -> 115/32: D4","57/16 -> 115/32: G4","29/8 -> 117/32: G3","29/8 -> 117/32: D4","29/8 -> 117/32: G4","59/16 -> 119/32: G3","59/16 -> 119/32: D4","59/16 -> 119/32: G4","15/4 -> 121/32: A3","15/4 -> 121/32: E4","15/4 -> 121/32: A4","61/16 -> 123/32: A3","61/16 -> 123/32: E4","61/16 -> 123/32: A4","31/8 -> 125/32: B3","31/8 -> 125/32: F#4","31/8 -> 125/32: B4","63/16 -> 127/32: Db4","63/16 -> 127/32: Ab4","63/16 -> 127/32: Db5","3/1 -> 7/2: c2","7/2 -> 29/8: c2","15/4 -> 31/8: c2","3/1 -> 7/2: c1","7/2 -> 4/1: c1"]
export const scaleTranspose = ["0/1 -> 1/1: F2","0/1 -> 1/1: F3","0/1 -> 1/1: C4","0/1 -> 1/1: Ab4","1/1 -> 2/1: Eb2","1/1 -> 2/1: Eb3","1/1 -> 2/1: Bb3","1/1 -> 2/1: G4","2/1 -> 3/1: Db2","2/1 -> 3/1: Db3","2/1 -> 3/1: Ab3","2/1 -> 3/1: F4","3/1 -> 4/1: C2","3/1 -> 4/1: C3","3/1 -> 4/1: G3","3/1 -> 4/1: E4","4/1 -> 5/1: F2","4/1 -> 5/1: F3","4/1 -> 5/1: C4","4/1 -> 5/1: Ab4","5/1 -> 6/1: Eb2","5/1 -> 6/1: Eb3","5/1 -> 6/1: Bb3","5/1 -> 6/1: G4","6/1 -> 7/1: Db2","6/1 -> 7/1: Db3","6/1 -> 7/1: Ab3","6/1 -> 7/1: F4","7/1 -> 8/1: C2","7/1 -> 8/1: C3","7/1 -> 8/1: G3","7/1 -> 8/1: E4","8/1 -> 9/1: Gb2","8/1 -> 9/1: Gb3","8/1 -> 9/1: Db4","8/1 -> 9/1: A4","9/1 -> 10/1: E2","9/1 -> 10/1: E3","9/1 -> 10/1: B3","9/1 -> 10/1: Ab4","10/1 -> 11/1: D2","10/1 -> 11/1: D3","10/1 -> 11/1: A3","10/1 -> 11/1: Gb4","11/1 -> 12/1: Db2","11/1 -> 12/1: Db3","11/1 -> 12/1: Ab3","11/1 -> 12/1: F4","12/1 -> 13/1: Gb2","12/1 -> 13/1: Gb3","12/1 -> 13/1: Db4","12/1 -> 13/1: A4","13/1 -> 14/1: E2","13/1 -> 14/1: E3","13/1 -> 14/1: B3","13/1 -> 14/1: Ab4","14/1 -> 15/1: D2","14/1 -> 15/1: D3","14/1 -> 15/1: A3","14/1 -> 15/1: Gb4","15/1 -> 16/1: Db2","15/1 -> 16/1: Db3","15/1 -> 16/1: Ab3","15/1 -> 16/1: F4"]
export const shapeShifted = ["1/2 -> 1/1: a4","3/4 -> 1/1: a1","1/2 -> 3/4: a2","1/4 -> 1/2: a1","0/1 -> 1/4: a2","3/2 -> 2/1: c5","1/1 -> 3/2: a4","7/4 -> 2/1: a1","3/2 -> 7/4: a2","5/4 -> 3/2: a1","1/1 -> 5/4: a2","5/2 -> 3/1: d5","2/1 -> 5/2: e5","11/4 -> 3/1: e2","5/2 -> 11/4: e3","9/4 -> 5/2: e2","2/1 -> 9/4: e3","7/2 -> 4/1: b4","13/4 -> 7/2: b4","3/1 -> 13/4: c5","15/4 -> 4/1: b1","7/2 -> 15/4: b2","13/4 -> 7/2: b1","3/1 -> 13/4: b2","9/2 -> 5/1: e5","17/4 -> 9/2: d5","4/1 -> 17/4: c5","19/4 -> 5/1: c2","9/2 -> 19/4: c3","17/4 -> 9/2: c2","4/1 -> 17/4: c3","11/2 -> 6/1: e5","5/1 -> 21/4: c5","23/4 -> 6/1: c2","11/2 -> 23/4: c3","21/4 -> 11/2: c2","5/1 -> 21/4: c3","13/2 -> 7/1: a5","25/4 -> 13/2: g5","6/1 -> 25/4: f5","27/4 -> 7/1: d2","13/2 -> 27/4: d3","25/4 -> 13/2: d2","6/1 -> 25/4: d3","15/2 -> 31/4: d5","7/1 -> 29/4: f5","31/4 -> 8/1: d2","15/2 -> 31/4: d3","29/4 -> 15/2: d2","7/1 -> 29/4: d3","17/2 -> 9/1: a4","35/4 -> 9/1: a2","17/2 -> 35/4: a3","33/4 -> 17/2: b1","8/1 -> 33/4: c2","19/2 -> 10/1: c5","9/1 -> 19/2: a4","39/4 -> 10/1: a2","19/2 -> 39/4: a3","37/4 -> 19/2: a2","9/1 -> 37/4: a3","21/2 -> 11/1: d5","10/1 -> 21/2: e5","43/4 -> 11/1: e2","21/2 -> 43/4: e3","41/4 -> 21/2: e2","10/1 -> 41/4: e3","23/2 -> 12/1: b4","11/1 -> 45/4: c5","47/4 -> 12/1: g#2","23/2 -> 47/4: g#3","45/4 -> 23/2: g#2","11/1 -> 45/4: g#3","25/2 -> 13/1: e5","49/4 -> 25/2: d5","12/1 -> 49/4: c5","51/4 -> 13/1: a2","25/2 -> 51/4: a3","49/4 -> 25/2: a2","12/1 -> 49/4: a3","27/2 -> 14/1: a4","53/4 -> 27/2: a4","13/1 -> 53/4: c5","55/4 -> 14/1: a2","27/2 -> 55/4: a3","53/4 -> 27/2: a2","13/1 -> 53/4: a3","29/2 -> 15/1: d5","57/4 -> 29/2: c5","14/1 -> 57/4: b4","59/4 -> 15/1: e2","29/2 -> 59/4: e3","57/4 -> 29/2: e2","14/1 -> 57/4: e3","31/2 -> 16/1: e5","61/4 -> 31/2: b4","15/1 -> 61/4: c5","63/4 -> 16/1: e2","31/2 -> 63/4: e3","61/4 -> 31/2: e2","15/1 -> 61/4: e3"]
Expand Down