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

Temperament: Multiple Custom Pitches #2350

Closed
pikurasa opened this issue Jun 12, 2020 · 9 comments
Closed

Temperament: Multiple Custom Pitches #2350

pikurasa opened this issue Jun 12, 2020 · 9 comments

Comments

@pikurasa
Copy link
Collaborator

Development for temperament stopped before we could allow for users to create multiple custom pitches. Right now, the user can only create one.

This ticket is an enhancement because it adds additional functionality.
This ticket is also a bug report because, as of right now, if the user generates more than one custom pitch they bump up to very strange behavior of the pie menus for custom pitch blocks on the palette and in their code.

Log:

wheelnav.js:57 Uncaught TypeError: Cannot read property 'navAngle' of undefined
    at wheelnav.navigateWheel (wheelnav.js:57)
    at Block._piemenuPitches (block.js:4629)
    at Block._changeLabel (block.js:3292)
    at a.<anonymous> (block.js:2694)
    at VM17 easeljs.min.js:12
    at a.b._dispatchEvent (VM17 easeljs.min.js:12)
    at a.b._dispatchEvent (VM17 easeljs.min.js:12)
    at a.b.dispatchEvent (VM17 easeljs.min.js:12)
    at a.b._dispatchMouseEvent (VM17 easeljs.min.js:13)
    at a.b._handlePointerUp (VM17 easeljs.min.js:13)

Images of issue:
Screenshot at 2020-06-12 09:06:22 pie menu
Screenshot at 2020-06-12 09:05:59 strange behavior

@sksum
Copy link
Member

sksum commented Jun 18, 2020

I am not sure how we would display different customNotes in palette . a different block for each custom pitch or maybe a pie menu .

@pikurasa
Copy link
Collaborator Author

As we discussed, a pie menu seems to be a clever solution.

@pikurasa
Copy link
Collaborator Author

One design thing that we will bump into very soon is that the set temperament block needs to be present in the code in order for the custom pitches to be properly initiated AND we only have one value for "custom" in our temperament pie menu.

Screenshot at 2020-06-19 11:39:07 multiple custom values for temperament pie menu

The issue is that, if we have multiple "custom" the user will never be able to really utilize any after the first.

Do we add extra "custom" options to the temperament based on the name the user defines for define temperament?

If we do this, then we should do the same for "custom mode".

The other design idea I had was:

I think the easiest solution is this:
* The chosen custom temperament is implicit by the presence of its corresponding custom pitch blocks.
* Therefore, we do not need the "custom" value in our temperament block. We remove it.
* We still allow a user to override this assumption by putting a `set temperament` block at the top of their script. For example, if they wrote some code using custom pitch blocks and wanted to hear it in equal temperament, they could still do that.
* I do not think this design affords the possibility to test something written out in regular pitches to be tried in the user's chosen "custom" temperament, which is perhaps the only drawback to this design.

...however, this also has its drawbacks...

@pikurasa
Copy link
Collaborator Author

Or, when temperament block is set to custom, we allow the user to type??? (like we do for a number)

@sksum
Copy link
Member

sksum commented Jun 19, 2020

One design thing that we will bump into very soon is that the set temperament block needs to be present in the code in order for the custom pitches to be properly initiated AND we only have one value for "custom" in our temperament pie menu.

Adding more ways to change temperament inside code could be confusing to the user , In my opinion , removing custom from options and making custom pitches function independently might be better .

I do not think this design affords the possibility to test something written out in regular pitches to be tried in the user's chosen "custom" temperament, which is perhaps the only drawback to this design.

Also , the set temperament =>(custom ) block doesn't seem to work .... i.e. it doesn't change tuning according to the custom defined temperament ,
Although other temperaments work well: set temperament =>(equal) , set temperament =>(pythagorean) , , , ,

@pikurasa
Copy link
Collaborator Author

Adding more ways to change temperament inside code could be confusing to the user , In my opinion , removing custom from options and making custom pitches function independently might be better .

Fine by me.

@pikurasa
Copy link
Collaborator Author

Fine by me.

I am exploring this a little more...

If we take custom from options we may be losing a way to do things like the following:

(Custom Mode of Custom Temperament)
Screenshot at 2020-06-20 03:07:58 Custom Mode of Custom Temperament

Also, currently this is how we reinitialize the temperament widget to custom temperament:

Screenshot at 2020-06-20 03:09:20 custom temperament

I think I am fine if, for custom mode, we express that we are working within a custom temperament just with the presence of a custom pitch block:

Screenshot at 2020-06-20 03:15:37 custom mode of custom temperament

However, this looks a little awkward to me since the temperament block will always be incongruent with the custom pitch block:

Screenshot at 2020-06-20 03:16:09 reinitialize custom mode other possibility

...but then again, our current way of reinitializing the widget to the custom temperament is also incongruent...

I suppose I have circled myself back to the previous conclusion of "fine by me". Please take these corner cases into consideration.

@pikurasa
Copy link
Collaborator Author

Re: #2368 (comment)

I think the define mode block should take a string, which the user can edit to assign the mode name. All the defined names should appear in the pie menu for the set mode block.

@walterbender should we implement the same design for temperament as well (see the above thread for the discussion that Saksham and I have been having)?

@walterbender
Copy link
Member

Should work for both.

@sksum sksum added the WF6-Needs testing Please test label Aug 27, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants