tidalcycles / strudel

Web-based environment for live coding algorithmic patterns, incorporating a faithful port of TidalCycles to JavaScript
https://strudel.cc/
GNU Affero General Public License v3.0
643 stars 111 forks source link

support alternative solmization types #302

Open felixroos opened 1 year ago

felixroos commented 1 year ago

inspired by https://isartum.net/leimma it would be really cool if other alternatives to note strings would work:

sadly the leimma project is not open source so some research is needed.

edit: did some research on indian music:

semitones hindustani carnatic
0 Sa sa
1 re ra
2 Re ri / ga
3 ga ru / gi
4 Ga gu
5 Ma ma
6 ma mi
7 Pa pa
8 dha dha
9 Dha dhi / na
10 ni dhu / ni
11 Ni nu

more links:

edit: leimma actually has sourcemaps, so you can read the code in the browser. here is how they do it:

export const SCALE_DEGREE_NAMES_ENGLISH = [
    "C",
    "C#",
    "Db",
    "D",
    "D#",
    "Eb",
    "E",
    "F",
    "F#",
    "Gb",
    "G",
    "G#",
    "Ab",
    "A",
    "A#",
    "Bb",
    "B"
];

export const SCALE_DEGREE_NAMES_SOLFEGE = [
    "Do",
    "Do #",
    "Re b",
    "Re",
    "Re #",
    "Mi b",
    "Mi",
    "Fa",
    "Fa #",
    "Sol b",
    "Sol",
    "Sol #",
    "La b",
    "La",
    "La #",
    "Si b",
    "Si"
];
export const SCALE_DEGREE_NAMES_NORTH_INDIAN = [
    "Sa",
    "Re -",
    "Re -",
    "Re",
    "Gā -",
    "Gā -",
    "Gā",
    "Mā",
    "Mā +",
    "Mā +",
    "Pā",
    "Dhā -",
    "Dhā -",
    "Dhā",
    "Nī -",
    "Nī -",
    "Nī"
];
export const SCALE_DEGREE_NAMES_SOUTH_INDIAN = [
    "Sa",
    "Ri -",
    "Ri -",
    "Ri",
    "Ri +",
    "Gā -",
    "Gā",
    "Mā",
    "Mā +",
    "Mā +",
    "Pa",
    "Dhā -",
    "Dhā -",
    "Dha",
    "Dha +",
    "Ni -",
    "Ni"
];
export const SCALE_DEGREE_NAMES_GERMAN = [
    "C",
    "Cis",
    "Des",
    "D",
    "Dis",
    "Es",
    "E",
    "F",
    "Fis",
    "Ges",
    "G",
    "Gis",
    "As",
    "A",
    "Ais",
    "B",
    "H"
];
export const SCALE_DEGREE_NAMES_DUTCH = [
    "C",
    "Cis",
    "Des",
    "D",
    "Dis",
    "Es",
    "E",
    "F",
    "Fis",
    "Ges",
    "G",
    "Gis",
    "As",
    "A",
    "Ais",
    "Bes",
    "B"
];
export const SCALE_DEGREE_NAMES_JAPANESE = [
    "Ha",
    "Ei-ha",
    "Hen-ni",
    "Ni",
    "Ei-ni",
    "Hen-ho",
    "Ho",
    "He",
    "Ei-he",
    "Hen-to",
    "To",
    "Ei-to",
    "Hen-i",
    "I",
    "Ei-i",
    "Hen-ro",
    "Ro"
];

export const SCALE_DEGREE_NAMES_JAVANESE = [
    "Ji",
    "Ji +",
    "Ji + ",
    "Ro",
    "Ro +",
    "Ro +",
    "Lu",
    "Pat",
    "Pat +",
    "Pat +",
    "Ma",
    "Ma +",
    "Ma +",
    "Nem",
    "Nem +",
    "Nem +",
    "Pi"
];

export const SCALE_DEGREE_NAMES_BYZANTINE = [
    "Ni",
    "Ni #",
    "Pa b",
    "Pa",
    "Pa #",
    "Vu b",
    "Vu",
    "Ga",
    "Ga #",
    "Di b",
    "Di",
    "Di #",
    "Ke b",
    "Ke",
    "Ke #",
    "Zo b",
    "Zo"
];

I am not sure how accurate these are + not sure how sense it makes to use them for notation in strudel. Just dropping them here to have them as a reference

felixroos commented 1 year ago

{ solfege: ['do', 'di', 'res', 're', 'ri', 'mes', 'mi', 'fa', 'fi', 'ses', 'so', 'si', 'les', 'la', 'li', 'tes', 'ti'] }

https://www.musical-u.com/learn/an-approach-to-ear-training/

dariacotocu commented 1 year ago

hello, can you please assign this issue to me? I have written the code for it :)

felixroos commented 1 year ago

https://github.com/tidalcycles/strudel/pull/570 is now merged, but the logic is still unused + some things are still missing, so i'll keep this open