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

Solmization added #570

Merged
merged 6 commits into from Jun 11, 2023
Merged

Solmization added #570

merged 6 commits into from Jun 11, 2023

Conversation

dariacotocu
Copy link

Added alternative solmization types for the notes. I added to the code : solfege, german, indian, byzantine and japanese.
Also created a file in order to test if it works with the terminal.

@felixroos
Copy link
Collaborator

felixroos commented May 24, 2023

( ref #302 )

thanks for looking into this :)
it looks like the automated test task is picking up "solmization.test.js" but does not find tests in vitest format. Would you mind converting them to use describe / expect / it ? here is an example test file. you can then run the tests via pnpm test

Then the question would be how these solmizations are actually used. Should they be usable as part of note? Like this:

note("do re mi fa")

But... if everything is inside note, there could be naming collisions, for example "B" in german is "Bb" in the english notation. Maybe a dedicated control function sol is needed:

sol("do re mi fa")

There could be one control function per type (so there would be sol, german, indian, byzantine, japanese, maybe find some shortcuts too?).

Or maybe, instead of adding one function for each type (or in addition to), there could just be sol and the type is declared via list notation:

sol("[A B C D]:german")

This is just me thinking out loud.. What do you think?

@dariacotocu
Copy link
Author

i think the test file should work now! i made it into vitest form.
Yes, that is a good point regarding the control function, it would make it clearer. I will have a look at how to do it :)

@felixroos
Copy link
Collaborator

i think the test file should work now! i made it into vitest form.

great!

Yes, that is a good point regarding the control function, it would make it clearer. I will have a look at how to do it :)

you can add new controls to controls.mjs, then you'd need to find a way to convert them to something playable (e.g. a midi number or a frequency) inside each sound source. It probably makes sense to first implement it for only one source, for example synth.mjs is the place where the basic waveforms are handled. There you could convert a solmization value into a midi number... does that make sense?

@felixroos
Copy link
Collaborator

felixroos commented May 24, 2023

I am just reading about indian note systems. there is a system of 12 notes called svaras: https://en.wikipedia.org/wiki/Svara they have slight regional differences. At first sight, the most friendly in terms of textual notation is the carnatic one: https://en.wikipedia.org/wiki/Svara#Svaras_in_Carnatic_music (see Mnemonic). The Hindustani system normally has underlines to denote flats. In some corners of the internet they are notated uppercase / lowercase: Sa re Re ga Ga Ma ma Pa dha Dha ni Ni. You also see only single letters sometimes: S r R g G M m P d D n N It probably makes sense to ask actual indian classical musicians about that.. It also does not seem to be a 1:1 mapping for 12 equal divisions of the octave...

edit: added some more research notes to the issue

@felixroos
Copy link
Collaborator

@dariacotocu do you want to develop this further or should we merge the midi2note function as is to be developed further in a later PR?

@dariacotocu
Copy link
Author

i can try looking into it further, but i would not mind you merging the midi2note function to be developed further! when i get some free time i would love to look into the issue again and think about it more in-depth :) thank you

@felixroos
Copy link
Collaborator

felixroos commented Jun 11, 2023

i can try looking into it further, but i would not mind you merging the midi2note function to be developed further!

ok, I'll merge it now, otherwise it'll get too many diffs later.. There was already a little conflict, which should now be fixed (I moved your logic to a new function called sol2note).

when i get some free time i would love to look into the issue again and think about it more in-depth :) thank you

thank you! when you're looking into it again, feel free to send another PR

@felixroos felixroos merged commit 876e851 into tidalcycles:main Jun 11, 2023
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants