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

FIXES ISSUE #4018 More default EDOs for temperament #4022

Merged
merged 2 commits into from
Oct 4, 2024

Conversation

omsuneri
Copy link
Contributor

@omsuneri omsuneri commented Oct 1, 2024

By these changes user can experience some of the most common Equal temperaments

Screenshot 2024-10-01 at 8 42 39 PM
  1. Equal 5EDO : A system that divides the octave into 5 equal parts It is used in certain traditional and experimental musical contexts Instruments that can be easily adapted to 5EDO tuning include Panpipes, Native American Flutes, xylophones, marimbas in African and Asian, Fretted string instruments, etc.
Screenshot 2024-10-01 at 8 45 17 PM
  1. Equal 7EDO : A system that divides the octave into 7 equal parts it is sometimes used in experimental music and can be explored on various adaptable instruments like synthesisers, violins, violas, cellos, guitar, keyboards. etc.
Screenshot 2024-10-01 at 8 44 59 PM
  1. Equal 19EDO : A system that divides the octave into 19 equal parts. several types of instruments can be adapted or built to use this tuning, particularly in experimental and microtonal music contexts and can be experienced by instruments like fretless violins, fretless cellos, fretless basses, fretless guitars, etc.
Screenshot 2024-10-01 at 8 44 31 PM
  1. Equal 31EDO : A system that divides the octave into 31 equal parts several types of instruments can be adapted or built for this tuning like Custom-built guitars and basses Microtonal guitars can be used to experience this.
Screenshot 2024-10-01 at 8 45 38 PM

By these changes user can experience some of the most common Equal temperaments 
Equal 5EDO
Equal 7EDO
Equal 19EDO
Equal 31EDO
@walterbender
Copy link
Member

@pikurasa I have some questions about this. Let's find a time to discuss.
@omsuneri curious with 5EDO why the notes are assigned the way they are. For example, with Perfect 5th is a G4 and not a C5? Same applies to the other temperaments.

@omsuneri
Copy link
Contributor Author

omsuneri commented Oct 1, 2024

@walterbender actually for perfect 5 interval we have G4 for every another temperament we have in the the menu.
Screenshot 2024-10-01 at 9 12 58 PM

@walterbender
Copy link
Member

Yes. I don't understand why. Maybe @pikurasa can explain it to me.

@pikurasa
Copy link
Collaborator

pikurasa commented Oct 1, 2024

The interval names that we have are best suited for 12EDO.

With fewer than 12 pitches in an EDO, we could map to the nearest 12EDO interval, but for more than 12 pitches in an EDO, the resolution is higher, so we need to have additional qualifiers (hence "ups" and "downs" systems).

For now, we could map to the nearest 12EDO interval, based on its proximity. Later, we would need to implement something like ups and downs qualifiers.

@walterbender
Copy link
Member

+1 But also, don't want to do the same for the letter names?

@omsuneri
Copy link
Contributor Author

omsuneri commented Oct 1, 2024

@walterbender so should I do changes in this commit or you can create some new issue for that.

@walterbender
Copy link
Member

We may need to change some of the interval assignments you made. Let's wait to discuss in more detail with @pikurasa

@pikurasa
Copy link
Collaborator

pikurasa commented Oct 1, 2024

@omsuneri I tested your branch.

The EDOs sound good, however it seems that you calculated their values through ratios rather than exponents.

Notice how when you export 12EDO from the temperament widget, you get math of 2^(x/12) where x is a chromatic pitch in the scale.

You want to do the same for the other EDOs as well, so:

  • 5 EDO = 2^(x/5)
  • 7 EDO = 2^(x/7)
  • 19 EDO = 2^(x/19)
  • 31 EDO = 2^(x/31)

This is important because, although the difference may be imperceptible on a certain level, the definition of EDO is basically that you arrive at the temperament through exponents rather than ratios. So we want users to see this congruently throughout.

This video shows my test on commit 6706865:

temperament-test-2-2024-10-01_14.04.51.zip

@omsuneri
Copy link
Contributor Author

omsuneri commented Oct 1, 2024

@pikurasa but in musicutils.js you can see that i had created the temperament using the pow function only and dont know why this strange thinga happens with the new temperaments well let me check it once again also @walterbender is asking for some changes in intervals that i had created could please refer those too so in order to resolve that too

@omsuneri
Copy link
Contributor Author

omsuneri commented Oct 2, 2024

@pikurasa @walterbender the thing of 2 to the power for the interval ratio instead of the division type is resolved have a look over this
temperament-test-2-2024-10-01_14.04.51.zip
should i raise a new commit for this

@walterbender walterbender merged commit 36fa6b5 into sugarlabs:master Oct 4, 2024
3 checks passed
@pikurasa
Copy link
Collaborator

pikurasa commented Oct 9, 2024

For naming intervals of any temperament other than 12EDO, @omsuneri and I discussed doing the following:

  • Find the nearest 12EDO pitch, use that as its letter name (e.g. A, B, C, and with sharp/flat)
  • Calculate the difference from nearest 12EDO pitch in cents and append that to the name with (+/- [value-in-cents]) where + is used when it is higher than the 12EDO pitch and - is used when it is higher than the 12EDO pitch.

As a reference, this is similar to how we are naming pitch names for custom temperament.

walterbender added a commit that referenced this pull request Oct 13, 2024
* fixes #3913

* fix:resolves grid position on hamburger opening(#3914) (#3924)

* fix:resolves hamburger opening(#3914)

* fix:fixes #3914(suggested changes done)

* adjust size of grid element repositioning when using aux toolbar

---------

Co-authored-by: Walter Bender <[email protected]>

* Fix input boxes (#3927)

* bump version

* enhancement: scale on hover (#3926)

Co-authored-by: anas2357 <[email protected]>

* calculate frequencies from ratio

* Add close button to extended-menu pie menu (fixes #3933) (#3934)

* Bump braces and gulp (#3903)

Bumps [braces](https://github.com/micromatch/braces) to 3.0.3 and updates ancestor dependency [gulp](https://github.com/gulpjs/gulp). These dependencies need to be updated together.


Updates `braces` from 2.3.2 to 3.0.3
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/commits/3.0.3)

Updates `gulp` from 4.0.2 to 5.0.0
- [Release notes](https://github.com/gulpjs/gulp/releases)
- [Changelog](https://github.com/gulpjs/gulp/blob/master/CHANGELOG.md)
- [Commits](gulpjs/gulp@v4.0.2...v5.0.0)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
- dependency-name: gulp
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* add support for solfege accidentals in phrasemaker

* Add support for cents (#3937)

* add support for cents through semi-tone transposition

* add 50 cents macro

* add cents example

* add output frequencies

* fix issue with ratio cents

* add a ratio-cents example

* Ratio transpose and Ratio interval (#3936)

* use processPitch for all pitch types

* Add support for cents (#3937)

* add support for cents through semi-tone transposition

* add 50 cents macro

* add cents example

* add output frequencies

* fix issue with ratio cents

* add a ratio-cents example

* use processPitch for all pitch types

* convert freq to note before scalar step

* fix note convert

* remove extra comma throwing off indexing

* Hyperscore link update (#3939) (#3947)

* Update Hyperscore example link in guide.html (#3944)

* Update README.md (#3943)

* left_and_back_images (#3950)

* Updated Dockerfile  (#3949)

* Update README.md

* Update dockerfile

* remove yjs and socket.io dependecies

* Fixed #3956 Auto increasing and decreasing input block (#3957)

* fixes #3941

* fixes #3958

* Fixes collapsed state of note block (#3961)

* fixes issue with extra line number in JavaScript Editor (#3962)

* fixes sample block duplication issue (#3965)

* fixes sample block duplication issue

* changed error message

* updated error message

* updated planet image on documentation (#3971)

* updated planet image on documentation

fixes issue number: 3968

* updated images

* removed overlap between two images

* fix 1MB file size limit on audio sample imports (#3976)

* enforce 1MB limit on audio sample imports

* update sampler.js

* updated error msg

* update wheelnav.js (#3977)

* Fixes #3972 Highlight should not activate when code is being run (#3975)

* Fixes #3972 Highlight should not activate when code is being run

* optimized the code by using existing flag

* optimized the code by using existing flag

* fixes #3972

* removed extra code (#3980)

* Fixes #3973 Right click menu only opens in the advanced mode (#3978)

* Contextmenu only opens in advanced mode

* Added indentation and changed the if condition

* FIXES ISSUE #3895 Add alphabet "G" as a block found in easy mode  (#3979)

* FIXES ISSUE #3895 Add alphabet "G" as a block found in easy mode 

The requirement of this bug is to add the pitch G4 nad Alphabet G block in pitch menu of the beginner mode.

* FIXES ISSUE #3895 Add alphabet "G" and Sol as a block found in easy mode 

It adds the sol pitch block in the pitch menu of beginner's mode

* AI BLOCK and Documentation on How to add widget in MB (#3964)

* clean code , added comments

* added abc lib

* added debug statement

* fix : Formatting , Function method & method Func

* add function description

* added AI BLOCKS and DOCS

* change canvas to editor text

* changed canvas to edit text,added hint

* Fix: suggestion in AI Block & AI block structure

* added groq api

* Added midi support to MB (#3904)

* added midi support

* made corrections

* added note approximations

* added action blocks to start block

* added action block to start blk

* made corrections

* break also into multiple action block when noteblock count exceeds 24

* added break statement in case of no of  tracks more than 1

* added start blocks corresponding each track

* added meter and tempo information

* added scaling factor and load as midi feture

* added default timesignatures

* added drum mapper

* removed set instrument in case of percussion

* added an extra condtion when the new note start is less than previous note

* added minor changes

* removed the scaling factor earlier added

* added names to start blocks

* modifications for clarity

* add abacus example

* Rhythm block doesn't repeat issue update (#3982)

* Rhythm block doesn't repeat issue update

* removed console log messages

* added console log message for testing

* fixes #3931 Rhythm block doesn't repeat when outside of PhraseMaker

* add more steps to new palette instructions

* fix: remove redundant code to achieve DRY consistency (#3988)

* removed extra code

* update block.js

* update block.js (#3989)

* refactor: Simplify note processing logic, remove an empty file (#3991)

* Update drum block setup to make it more compact (#3992)

* refactor: update indexOf () === -1 to ! includes (#3993)

* update activity.js

* update block.js

* update activity.js

* Revert "update activity.js"

This reverts commit c61110f.

* update activity.js

* update blocks.js

* update piemenu.js

* update musicutils.js

* update blockfactory.js

* update turtle-singer.js

* update lilypond.js

* update logo.js

* update macros.js

* update palette.js

* update notation.js

* update DrumBlocks.js

* update GraphicsBlocks.js

* update PenBlocks.js

* used regex to shrink code (#3996)

* introduced a setupFunctions array to group all the setup function call, add uses export statements for BACKWARDCOMPATIBILIYDICT and initBasicProtoBlocks, instead of comments to indicate exports (#3994)

* Revert "introduced a setupFunctions array to group all the setup function call, add uses export statements for BACKWARDCOMPATIBILIYDICT and initBasicProtoBlocks, instead of comments to indicate exports (#3994)"

This reverts commit a6f3514.

* move all saved state into a single object (#3998)

* move all saved state into a single object, remove unnecessarya variable declarations

* re-add some variable names to avoid breaking code, and remove singer.notesPlayed

* refactor: update indexOf () === -1 to ! includes (#4001)

* update PitchBlocks.js

* update ProgramBlocks.js

* update VolumeBlocks.js

* update WidgetBlocks.js

* update IntervalsActions.js

* update PitchActions.js

* update RhythmActions.js

* update ToneActions.js

* update VolumeActions.js

* update utils.js

* update arpeggio.js

* update musickeyboards.js

* update phrasemaker.js

* update rhythmruler.js

* update generate.js

* update interface.js

* update mathutils.js

* update synthutils.js

* update help.js

* update helper.js

* ABC to MB Parser (#3925)

* clean code , added comments

* added abc lib

* added debug statement

* fix : Formatting , Function method & method Func

* add function description

---------

Co-authored-by: Walter Bender <[email protected]>

* clean up javascript formatting

* Feat/add record button and playback button in sampler widget (#3813)

* added recording and playback button

* upd

* added recording started,completed msg and button disabled when no url

* updated icons

* added sample for waveform

* upd

* added the required changes,play sample pitch,create sample with setinstrument

* FIXES ISSUE #4000 Regression: 'Set Default Instrument' Block Converts to 'Unknown' Block (#4006)

By this commit the set default instrument block is working fine.

* Add More Frequent "RUN LIVE" Links to Music Blocks Programming Guide (#3999)

* Added RUN LIVE option

* Added RUN LIVE option

* Added new RUN LIVE links

* use object lookup for convertDuration instead of switch (#4003)

* Streamline Drumname for early return of drum post http match, use object lookup (#4008)

* drum returns quicker post http match, use object lookup instead of a for loop

* add value matches

* FIXES ISSUE #3921 Reexamine our default temperament list (#4010)

* Updating musicutils.js in order to change the name of the temperament name list 

FIXES ISSUE #3921 Reexamine our default temperament list

* Updating piemenus.js

FIXES ISSUE #3921 Reexamine our default temperament list
In order to fix all the names perfectly in the menu i increased the size of the basic pie menu for the temperament name block

* new strings

* string repair

* new strings

* add missing translation

* cleanup

* reuse strings

* update sampler.js (#4013)

* fix all lint + Base64Encode errors (#4015)

* revert part of 4015

* Fixed mouse event malfunctioning (#4021)

* FIXME: Implement pickup measures and multi-voice support in abc.js (#4020)

* fix the pickup todo in abc notation

* remove todo

* Fix search box hover behavior replacing input text (#4027)

* Fix search box hover behavior replacing input text

* Fix hover behavior and improve scrolling for search box

* Remove line as weblate has issue with parsing it.

Signed-off-by: Chihurumnaya Ibiam <[email protected]>

* Remove other comments

Weblate seems to have issues with parsing them.

Signed-off-by: Chihurumnaya Ibiam <[email protected]>

* Revert "Remove line as weblate has issue with parsing it."

This reverts commit 5abca9c.

Signed-off-by: Chihurumnaya Ibiam <[email protected]>

* Weblate now parses po files.

Adding msgstr and msgid at the top of the files makes
it easy for weblate to parse.

Signed-off-by: Chihurumnaya Ibiam <[email protected]>

* FIXES ISSUE #4018 More default EDOs for temperament (#4022)

By these changes user can experience some of the most common Equal temperaments 
Equal 5EDO
Equal 7EDO
Equal 19EDO
Equal 31EDO

* new strings

* new strings

* add missing header strings

* FIXES ISSUE #4018 More default EDOs for temperament (#4029)

changes the define temperament block's frequency selection from division to exponential format

* fix all eslint errors along with base64encode error (#4030)

* fix eslint & renderLanguageSelectIcon logic (#4031)

* docs: add documentation for collaboration

---------

Signed-off-by: dependabot[bot] <[email protected]>
Signed-off-by: Chihurumnaya Ibiam <[email protected]>
Co-authored-by: Walter Bender <[email protected]>
Co-authored-by: Nikhil <[email protected]>
Co-authored-by: Anas <[email protected]>
Co-authored-by: anas2357 <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Walter Bender <[email protected]>
Co-authored-by: Harshit Verma <[email protected]>
Co-authored-by: Geeten Parab <[email protected]>
Co-authored-by: akilesh1706 <[email protected]>
Co-authored-by: Khadar vali <[email protected]>
Co-authored-by: Muhammad Haroon <[email protected]>
Co-authored-by: AnupamGaur <[email protected]>
Co-authored-by: omsuneri <[email protected]>
Co-authored-by: abhijeet <[email protected]>
Co-authored-by: Mubashir  Shariq <[email protected]>
Co-authored-by: amrit <[email protected]>
Co-authored-by: dubeanant <[email protected]>
Co-authored-by: Soumyaranjan Panda <[email protected]>
Co-authored-by: Chihurumnaya Ibiam <[email protected]>
Co-authored-by: Ajeet Pratap Singh <[email protected]>
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.

3 participants