sugarlabs / musicblocks

Music Blocks -- A musical microworld
https://musicblocks.sugarlabs.org/
GNU Affero General Public License v3.0
567 stars 763 forks source link

Multiple Arguments for Relative Intervals #835

Closed pikurasa closed 1 year ago

pikurasa commented 6 years ago

As I was creating the 5-6 sequence, I discovered that multiple relative intervals can only be arrived at through workarounds, and those workarounds are not ideal.

What I am trying to do:

note value = 1/4 (Relative Interval = 3, 5 [Do]) note value = 1/4 (Relative Interval = 3, 6 [Do]) note value = 1/4 (Relative Interval = 3, 5 [Re]) etc.

The current issue is that these multiple intervals can only be arrived at in the following ways:

  1. Doubling the original note

note value = 1/4 (Relative Interval = 3 [Do], Relative Interval = 5 [Do]) etc.

which would create two Do's of the same pitch when we only need one

  1. clamp within clamp

One could try nestling relative intervals, but that suggests that the outermost relative interval clamp would affect the both the original note and the note produced by the inner relative interval clamp.

So what might be the design of a multiple argument relative interval clamp?

It would be nice not to limit the clamp to just two arguments b/c we might want to create even larger chords.

I propose two possible solutions:

(I could swear I have seem an expanding multiple argument clamp somewhere already present in the turtle blocks code... cannot find it now--I thought it was an action or logic block. At any rate, this is where I got the idea from.)

walterbender commented 6 years ago

I am not sure why we need this. If you nest interval blocks, doesn't it accomplish the same thing? (I don't think the nesting suggests that you would get intervals generated for both notes).

In any case, we have many examples of clamp blocks that take multiple args, e.g. the swing block, the major block, the invert block (3 args), etc. If we went down this path, where do we stop? Are two args enough? 3 args? Do we do this will all of the absolute interval blocks as well? To me, it is more complexity than it is worth.

I am loath to introduce the comma block as it adds yet another layer to the UI, which is already very complex, with little benefit.

pikurasa commented 6 years ago

I am not sure why we need this. If you nest interval blocks, doesn't it accomplish the same thing? (I don't think the nesting suggests that you would get intervals generated for both notes).

Okay, you are right that nesting does not cause intervals generated for both notes.

In any case, we have many examples of clamp blocks that take multiple args, e.g. the swing block, the major block, the invert block (3 args), etc. If we went down this path, where do we stop? Are two args enough? 3 args? Do we do this will all of the absolute interval blocks as well? To me, it is more complexity than it is worth.

This is the expanding arg block I was thinking of (one of the action blocks):

screenshot from 2017-10-22 16 10 40 screenshot from 2017-10-22 16 10 49 screenshot from 2017-10-22 16 10 57

If relative interval had this design (allowing for additional number blocks--just number blocks--each addition adds an additional argument), it might be a nice way to introduce multiple intervals from a single note.

Then, nesting relative intervals could be reserved for affecting the total result(s) of inner relative interval block(s), which I think sounds like a neat possibility--it is the result I expected when nesting relative interval blocks.

What do you think?

I am loath to introduce the comma block as it adds yet another layer to the UI, which is already very complex, with little benefit.

Ok. Perhaps it is not needed.

walterbender commented 6 years ago

I need to think about the UI implications.

On Oct 22, 2017 4:20 PM, "Devin Ulibarri" notifications@github.com wrote:

I am not sure why we need this. If you nest interval blocks, doesn't it accomplish the same thing? (I don't think the nesting suggests that you would get intervals generated for both notes).

Okay, you are right that nesting does not cause intervals generated for both notes.

In any case, we have many examples of clamp blocks that take multiple args, e.g. the swing block, the major block, the invert block (3 args), etc. If we went down this path, where do we stop? Are two args enough? 3 args? Do we do this will all of the absolute interval blocks as well? To me, it is more complexity than it is worth.

This is the expanding arg block I was thinking of (one of the action blocks):

[image: screenshot from 2017-10-22 16 10 40] https://user-images.githubusercontent.com/13454579/31865848-c41c6594-b743-11e7-877c-1830f53af7a9.png [image: screenshot from 2017-10-22 16 10 49] https://user-images.githubusercontent.com/13454579/31865849-c4a54cec-b743-11e7-872f-0131820e2272.png [image: screenshot from 2017-10-22 16 10 57] https://user-images.githubusercontent.com/13454579/31865850-c5394dde-b743-11e7-9c01-b115443c6abd.png

If relative interval had this design (allowing for additional number blocks--just number blocks--each addition adds an additional argument), it might be a nice way to introduce multiple intervals from a single note.

Then, nesting relative intervals could be reserved for affecting the total result(s) of inner relative interval block(s), which I think sounds like a neat possibility--it is the result I expected when nesting relative interval blocks.

What do you think?

I am loath to introduce the comma block as it adds yet another layer to the UI, which is already very complex, with little benefit.

Ok. Perhaps it is not needed.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/walterbender/musicblocks/issues/835#issuecomment-338506037, or mute the thread https://github.com/notifications/unsubscribe-auth/ADz74eGvuhBAdaVYBjG1JHxvYMt0pUfbks5su6NtgaJpZM4QBm3F .