Comments (13)
Try it out!
http://rawgit.com/khandelwalyash/musicblocks-1/master/index.html
make the matrix, add notes to it then change the # notes of rhythm block. After that click on the 'black and white' clear button(svg needs to be changed) on top. It'll re-render the matrix keeping the unchanged notes unaffected
from musicblocks.
Let's review. I am not 100% that we have the right UX defined. Meanwhile,
I made a patch to let you recreate the matrix from a chunk. But I am not
yet making the selected cells.
On Oct 13, 2015 4:11 PM, "Yash Khandelwal" [email protected] wrote:
http://rawgit.com/khandelwalyash/musicblocks-1/master/index.html
@pikurasa https://github.com/pikurasa make the matrix, add notes to it
then change the # notes of rhythm block. After that click on the 'black and
white' clear button(svg needs to be changed) on top. It'll re-render the
matrix keeping the unchanged notes unaffected—
Reply to this email directly or view it on GitHub
https://github.com/walterbender/musicblocks/issues/27#issuecomment-147838495
.
from musicblocks.
@khandelwalYash This is one step in the right direction because it is able to refresh the matrix after the user has input a new argument into a rhythm block.
However, it falls short in two ways.
- We would want it to be able to accept more rhythm blocks, with their respective arguments. (tested)
- We would also want it to be able to accept more pitch blocks as well. (tested)
If it were able to do all of these things with reliability, I think that we would have a real improvement.
As always, good work!
from musicblocks.
@walterbender Are you proposing that a different design would be better?
I think, for starters, this would be a patch that could improve the users experience quite a bit. I also imagined it to be fairly simple compared to other things that I also came up with.
We should, however, have a separate icon (refresh arrow) and put it onto the matrix, I think. The black and white eraser is unclear. However, I think we are just doing that to have something to work with for the short term.
(something like this: https://cdn3.iconfinder.com/data/icons/3d-printing-icon-set/512/Refresh.png)
from musicblocks.
I don't have any great ideas yet. Still thinking about it.
On Tue, Oct 13, 2015 at 10:46 PM, Devin Ulibarri [email protected]
wrote:
@walterbender https://github.com/walterbender Are you proposing that a
different design would be better?I think, for starters, this would be a patch that could improve the users
experience quite a bit. I also imagined it to be fairly simple compared to
other things that I also came up with.We should, however, have a separate icon (refresh arrow) and put it onto
the matrix, I think. The black and white eraser is unclear. However, I
think we are just doing that to have something to work with for the short
term.(something like this:
https://cdn3.iconfinder.com/data/icons/3d-printing-icon-set/512/Refresh.png
)—
Reply to this email directly or view it on GitHub
https://github.com/walterbender/musicblocks/issues/27#issuecomment-147908772
.
Walter Bender
Sugar Labs
http://www.sugarlabs.org
from musicblocks.
@walterbender Let us know what you think about the UX
@pikurasa Thanks! I'll make the re-render work for pitch as well as multiple rhythms.
from musicblocks.
I think Walter is saying that he suspects there may be a better way--and I also have that feeling this may be true. However, all the "other ways" I thought of seem very challenging to implement and this sounded doable for the near future. It is also congruent with our current "block world" or "block interface"
@khandelwalYash Just let me know when you have made the patch.
from musicblocks.
We need to come up with a rigorous design.
from musicblocks.
GOAL: Flexibility at MATRIX level of User Interface
I was thinking this would be a patch that would work with what we have now that would make a subtle but important improvement to the UI and user interaction at the level of the matrix. Basically the same as if adding rows and columns to a spreadsheet (adding keeping original values, which are Boolean now--note = on/off).
Other ideas I could come up with would need a major refurbishing...
Walter mentioned (something to the effect) that, currently, Turtle Code does not keep track of the individual blocks so that would be one challenge to implementing a system like this.
from musicblocks.
I have continued to ponder this issue and keep coming to the same conclusion. Any other solutions or improvements I can think of have more to do with the GUI than the underpinnings of what the user really needs to get stuff done. Yes, my solution is basically the same interface for spreadsheet software, but is that so terrible? Everyone is familiar with spreadsheets so I think they will get the idea without having to read any manuals. I liked where Yash was going with this with his last patch.
That being said, I did take some time to write out all my thoughts to get toward a design without any loose ends and will put it below. If this is not going to work, please identify specific places that need to be rethought.
PROBLEM: The Matrix must be re-rendered in order to make even small changes
Right now, if the user scripts the incorrect pitch or rhythm (as input for Matrix Block) they must re-render the entire matrix. This has been only a minor problem for me as I test things because, as a trained musician, I have a good understanding of what I want to create and what I need to do to get the software to do what I am imagining (I am basically just translating one code to another in my head—EASY!). However, the rigid design of the matrix may become a frustration for new users, who unfamiliar either with music, the matrix, or with our software will make mistakes when trying to input what they imagine onto the matrix.
GOAL: Flexibility at MATRIX level of User Interface
IDENTIFIABLE USER POSSIBILITIES:
- Adding Pitch Blocks
- Deleting Pitch Blocks
- Changing Pitch Values on Contained Pitch Blocks
- Changing Octave Values on Contained Pitch Blocks
- Reordering Pitch Blocks in a stack
- Adding Rhythm Blocks
- Deleting Rhythm Blocks
- Changing Number of Notes values on contained rhythm blocks
- Changing Rhythmic Values on contained rhythm blocks
- Reordering Rhythm Blocks in a stack
MY PROPOSED SOLUTION:
Let's give the user a way to dynamically add/delete pitch/rhythm blocks from the matrix and change pitch/rhythm block parameter values without losing the work that they have already done.
- If the user adds new pitch/rhythm block(s) to matrix stack, when the matrix is re-rendered all of the other columns would remain unaffected but the new row/column will be completely blank by default. Stack order would be maintained; if the added pitch/rhythm block(s) are inserted between existing blocks, the new (blank) row/column would appear in its respective position.
- If the user deletes new pitch/rhythm block(s) to matrix stack that had note(s) chosen, those note(s) will simply disappear, but all other unchanged note(s) will remain unaffected. Stack order is maintained for all remaining (and unchanged) rows/columns.
- If the user changes the Number of Notes parameter value on a rhythm block, that should be treated as an addition/deletion to the rhythm (as defined above).
- If the user changes a value for the (a) rhythmic value, (b) pitch value, and (c) octave value parameters, then the rhythmic value, pitch value, and/or octave values alter the values for their respective rows/columns. These changes are independent of any additions/deletions to rows/columns as defined above; points on the matrix with notes already input will remain—they will just represent notes of a different value(s) respective to the changes made by the user.
- We would need a "re-render" button as a separate button from "clear" (the latter of which will be used by the user for a complete restart). (Yash already did something like this in the last patch)
IMPORTANT NOTES:
Walter mentioned (something to the effect) that, currently, Turtle Code does not keep track of the individual blocks so that would be one challenge to implementing a system like this.
SET THEORY OPERATORS AND THE MATRIX: THINKING AHEAD:
The above solution, I think, solves the issue of flexibility for the matrix. Other issues that I find that would remain after implementation of these design improvements can be dealt with in other ways, namely we can tackle the issue of pitch order when we introduce set theory operators. For example, right now it is up to the user to order all of the pitches themselves. Pitch being faithfully ordered exactly as the user has scripted it by the matrix is by no means problematic in itself. We want to maintain the open-ended nature of the matrix scripting—the notes rendered on the matrix do not always need to be in order of pitch and it would be overly rigid design to have it do order pitches without the user's requesting it to do so. Instead, order can be achieved through set theory blocks (https://en.wikipedia.org/wiki/Set_theory_%28music%29), which be either ordered or unordered (maybe even a separate "ordering" block for ordering a contained set [of pitches]).
from musicblocks.
This is all fine except that when we consider tuplets things suddenly get
very complicated.
On Wed, Nov 4, 2015 at 3:33 PM, Devin Ulibarri [email protected]
wrote:
I have continued to ponder this issue and keep coming to the same
conclusion. Any other solutions or improvements I can think of have more to
do with the GUI than the underpinnings of what the user really needs to get
stuff done. Yes, my solution is basically the same interface for
spreadsheet software, but is that so terrible? Everyone is familiar with
spreadsheets so I think they will get the idea without having to read any
manuals. I liked where Yash was going with this with his last patch.That being said, I did take some time to write out all my thoughts to get
toward a design without any loose ends and will put it below. If this is
not going to work, please identify specific places that need to be
rethought.PROBLEM: The Matrix must be re-rendered in order to make even small
changes
Right now, if the user scripts the incorrect pitch or rhythm (as input for
Matrix Block) they must re-render the entire matrix. This has been only a
minor problem for me as I test things because, as a trained musician, I
have a good understanding of what I want to create and what I need to do to
get the software to do what I am imagining (I am basically just translating
one code to another in my head—EASY!). However, the rigid design of the
matrix may become a frustration for new users, who unfamiliar either with
music, the matrix, or with our software will make mistakes when trying to
input what they imagine onto the matrix.GOAL: Flexibility at MATRIX level of User Interface
IDENTIFIABLE USER POSSIBILITIES:
- Adding Pitch Blocks
- Deleting Pitch Blocks
- Changing Pitch Values on Contained Pitch Blocks
- Changing Octave Values on Contained Pitch Blocks
- Reordering Pitch Blocks in a stack
- Adding Rhythm Blocks
- Deleting Rhythm Blocks
- Changing Number of Notes values on contained rhythm blocks
- Changing Rhythmic Values on contained rhythm blocks
- Reordering Rhythm Blocks in a stack
MY PROPOSED SOLUTION:
Let's give the user a way to dynamically add/delete pitch/rhythm blocks
from the matrix and change pitch/rhythm block parameter values without
losing the work that they have already done.
- If the user adds new pitch/rhythm block(s) to matrix stack, when the
matrix is re-rendered all of the other columns would remain unaffected but
the new row/column will be completely blank by default. Stack order would
be maintained; if the added pitch/rhythm block(s) are inserted between
existing blocks, the new (blank) row/column would appear in its respective
position.- If the user deletes new pitch/rhythm block(s) to matrix stack that had
note(s) chosen, those note(s) will simply disappear, but all other
unchanged note(s) will remain unaffected. Stack order is maintained for all
remaining (and unchanged) rows/columns.- If the user changes the Number of Notes parameter value on a rhythm
block, that should be treated as an addition/deletion to the rhythm (as
defined above).- If the user changes a value for the (a) rhythmic value, (b) pitch
value, and (c) octave value parameters, then the rhythmic value, pitch
value, and/or octave values alter the values for their respective
rows/columns. These changes are independent of any additions/deletions to
rows/columns as defined above; points on the matrix with notes already
input will remain—they will just represent notes of a different value(s)
respective to the changes made by the user.- We would need a "re-render" button as a separate button from "clear"
(the latter of which will be used by the user for a complete restart).
(Yash already did something like this in the last patch)IMPORTANT NOTES:
Walter mentioned (something to the effect) that, currently, Turtle Code
does not keep track of the individual blocks so that would be one challenge
to implementing a system like this.SET THEORY OPERATORS AND THE MATRIX: THINKING AHEAD:
The above solution, I think, solves the issue of flexibility for the
matrix. Other issues that I find that would remain after implementation of
these design improvements can be dealt with in other ways, namely we can
tackle the issue of pitch order when we introduce set theory operators. For
example, right now it is up to the user to order all of the pitches
themselves. Pitch being faithfully ordered exactly as the user has scripted
it by the matrix is by no means problematic in itself. We want to maintain
the open-ended nature of the matrix scripting—the notes rendered on the
matrix do not always need to be in order of pitch and it would be overly
rigid design to have it do order pitches without the user's requesting it
to do so. Instead, order can be achieved through set theory blocks (
https://en.wikipedia.org/wiki/Set_theory_%28music%29), which be either
ordered or unordered (maybe even a separate "ordering" block for ordering a
contained set [of pitches]).—
Reply to this email directly or view it on GitHub
https://github.com/walterbender/musicblocks/issues/27#issuecomment-153854290
.
Walter Bender
Sugar Labs
http://www.sugarlabs.org
from musicblocks.
The solution for Tuplet, I imagine, would be the combination of what is proposed for BOTH changing #of notes AND rhythmic value parameters.
There are other corner cases as well (pitch and rhythm inside action blocks, reordering blocks without add/delete, use of repeat etc.), but they should all be addressed by combinations of what is proposed above.
Can you think of any that cannot be addressed by combinations of the above?
I am currently away from my computer, my desk and all associated conveniences. Please excuse my brevity and any typos.
www.devinulibarri.com
On November 4, 2015 4:12:52 PM EST, Walter Bender [email protected] wrote:
This is all fine except that when we consider tuplets things suddenly
get
very complicated.On Wed, Nov 4, 2015 at 3:33 PM, Devin Ulibarri
[email protected]
wrote:I have continued to ponder this issue and keep coming to the same
conclusion. Any other solutions or improvements I can think of have
more to
do with the GUI than the underpinnings of what the user really needs
to get
stuff done. Yes, my solution is basically the same interface for
spreadsheet software, but is that so terrible? Everyone is familiar
with
spreadsheets so I think they will get the idea without having to read
any
manuals. I liked where Yash was going with this with his last patch.That being said, I did take some time to write out all my thoughts to
get
toward a design without any loose ends and will put it below. If this
is
not going to work, please identify specific places that need to be
rethought.PROBLEM: The Matrix must be re-rendered in order to make even small
changes
Right now, if the user scripts the incorrect pitch or rhythm (as
input for
Matrix Block) they must re-render the entire matrix. This has been
only a
minor problem for me as I test things because, as a trained musician,
I
have a good understanding of what I want to create and what I need to
do to
get the software to do what I am imagining (I am basically just
translating
one code to another in my head—EASY!). However, the rigid design of
the
matrix may become a frustration for new users, who unfamiliar either
with
music, the matrix, or with our software will make mistakes when
trying to
input what they imagine onto the matrix.GOAL: Flexibility at MATRIX level of User Interface
IDENTIFIABLE USER POSSIBILITIES:
- Adding Pitch Blocks
- Deleting Pitch Blocks
- Changing Pitch Values on Contained Pitch Blocks
- Changing Octave Values on Contained Pitch Blocks
- Reordering Pitch Blocks in a stack
- Adding Rhythm Blocks
- Deleting Rhythm Blocks
- Changing Number of Notes values on contained rhythm blocks
- Changing Rhythmic Values on contained rhythm blocks
- Reordering Rhythm Blocks in a stack
MY PROPOSED SOLUTION:
Let's give the user a way to dynamically add/delete pitch/rhythm
blocks
from the matrix and change pitch/rhythm block parameter values
without
losing the work that they have already done.
- If the user adds new pitch/rhythm block(s) to matrix stack, when
the
matrix is re-rendered all of the other columns would remain
unaffected but
the new row/column will be completely blank by default. Stack order
would
be maintained; if the added pitch/rhythm block(s) are inserted
between
existing blocks, the new (blank) row/column would appear in its
respective
position.- If the user deletes new pitch/rhythm block(s) to matrix stack that
had
note(s) chosen, those note(s) will simply disappear, but all other
unchanged note(s) will remain unaffected. Stack order is maintained
for all
remaining (and unchanged) rows/columns.- If the user changes the Number of Notes parameter value on a
rhythm
block, that should be treated as an addition/deletion to the rhythm
(as
defined above).- If the user changes a value for the (a) rhythmic value, (b) pitch
value, and (c) octave value parameters, then the rhythmic value,
pitch
value, and/or octave values alter the values for their respective
rows/columns. These changes are independent of any
additions/deletions to
rows/columns as defined above; points on the matrix with notes
already
input will remain—they will just represent notes of a different
value(s)
respective to the changes made by the user.- We would need a "re-render" button as a separate button from
"clear"
(the latter of which will be used by the user for a complete
restart).
(Yash already did something like this in the last patch)IMPORTANT NOTES:
Walter mentioned (something to the effect) that, currently, Turtle
Code
does not keep track of the individual blocks so that would be one
challenge
to implementing a system like this.SET THEORY OPERATORS AND THE MATRIX: THINKING AHEAD:
The above solution, I think, solves the issue of flexibility for the
matrix. Other issues that I find that would remain after
implementation of
these design improvements can be dealt with in other ways, namely we
can
tackle the issue of pitch order when we introduce set theory
operators. For
example, right now it is up to the user to order all of the pitches
themselves. Pitch being faithfully ordered exactly as the user has
scripted
it by the matrix is by no means problematic in itself. We want to
maintain
the open-ended nature of the matrix scripting—the notes rendered on
the
matrix do not always need to be in order of pitch and it would be
overly
rigid design to have it do order pitches without the user's
requesting it
to do so. Instead, order can be achieved through set theory blocks (
https://en.wikipedia.org/wiki/Set_theory_%28music%29), which be
either
ordered or unordered (maybe even a separate "ordering" block for
ordering a
contained set [of pitches]).—
Reply to this email directly or view it on GitHubhttps://github.com/walterbender/musicblocks/issues/27#issuecomment-153854290
.Walter Bender
Sugar Labs
http://www.sugarlabs.org
Reply to this email directly or view it on GitHub:
https://github.com/walterbender/musicblocks/issues/27#issuecomment-153866970
from musicblocks.
I think we have covered this with the restore matrix code. Please reopen if you disagree.
from musicblocks.
Related Issues (20)
- Temperament widget not producing the correct pitches upon preview HOT 9
- Home icon color not updating correctly HOT 2
- popup message on home icon is incorrect HOT 1
- Export for flats broken from Phrase Maker HOT 8
- Rhythm block doesn't repeat when outside of PhraseMaker HOT 1
- Chord gets buggy over time HOT 2
- Please add a close button to the extended-menu pie menu
- "Hyperscore" link is old/broken HOT 5
- Playback for "Hyperscore" example project is broken
- Collapsed blocks are showing their expanded state HOT 6
- Natural accidental mark is missing when running from a Mac HOT 8
- Enhance Dockerfile for faster setup HOT 1
- A few improvements for Sample widget HOT 3
- Issues with large samples HOT 10
- Auto increasing and decreasing input block HOT 3
- On the master branch, the Phrase Maker is removing accidental notes HOT 9
- Update Planet image on Documentation HOT 2
- Highlight should not activate when code is being run HOT 2
- We may want to only enable the right-click menu in advanced mode HOT 1
- Turtle blocks taking to long to load HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from musicblocks.