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

FEATURE: Play Backwards #58

Closed
pikurasa opened this issue Oct 22, 2015 · 8 comments
Closed

FEATURE: Play Backwards #58

pikurasa opened this issue Oct 22, 2015 · 8 comments

Comments

@pikurasa
Copy link
Collaborator

We want to be able to:

  1. perform notes in reverse sequence

  2. perform chunks in reverse sequence

@walterbender
Copy link
Member

Yash implementation is no longer applicable as it was done outside of the
context of the block model. This is very tricky. Why is it important?
On Oct 22, 2015 9:31 AM, "Devin Ulibarri" notifications@github.com wrote:

Hi,

Yash had this working in his version of the code, but I know that the
inner-logic has changed since. We want to be able to:

  1. perform notes in reverse sequence

  2. perform chunks in reverse sequence

  3. A combination

https://rawgit.com/khandelwalYash/Music-Blocks/master/index.html

[image: screenshot - 10222015 - 09-25-52 am play backwards worked in yashs
old code]
https://cloud.githubusercontent.com/assets/13454579/10666447/aa5c7afc-789f-11e5-9a56-74e4621cf0d3.png


Reply to this email directly or view it on GitHub
https://github.com/walterbender/musicblocks/issues/58.

@pikurasa
Copy link
Collaborator Author

Yash implementation is no longer applicable as it was done outside of the context of the block model.

Understood. Yes, we want the block model.

This is very tricky. Why is it important?

Two basic reasons:

  1. Theory -- Retrograde is a basic operator (http://lulu.esm.rochester.edu/rdm/pdflib/BATP.pdf). Next in line of basic operators would be "inversion". To the extent that we can have all the basic operators in place, we will have achieved many possibilities. Retrograde, Inversion, Transposition are to music as addition/multiplication/division are to arithmetic. If you can have all three, you have the infrastructure to run many more higher level operations (by combinations of the basic ones).
  2. Education -- (Having trouble finding published sources at moment) The Conservatory Lab School in Brighton (?), MA has a musical literacy skills test. One test for mastery is whether or not students can perform something backwards. I would need to ask for permission first, but you might benefit from being able to see this test. As another example, my teacher, Eliot Fisk, asks his students to practice tricky passages backwards--mainly to improve our memory (they is very much a cognitive aspect to this).

The above answers the question, "Why is it important to music theory and music education". I know that the above does not answer the question, "Why is it important to our software?"

Well, in terms of THEORY, it would open up many theoretical possibilities down the road, which will be exciting to those who would like to either a) compose or b) analyze music with the software.

In terms of education, it would open up the possibility for students to "check their work". They could try singing a line on their own in retrograde and then they could check to see if they performed it correctly (and visa versa).

I hope this helps. I will continue to jot my thoughts down on this, but I really think that the R. Morris is a great guide for the basic operators. His theory, coupled with the precedent in both elementary and conservatory-level education, are enough to make me think that we should keep it on our TO DO list.

@pikurasa
Copy link
Collaborator Author

(The above Morris PDF is not best example) Best Sources:

http://www.frogpeak.org/fpartists/fpmorris.html (no online or PDF equivalent, unfortunately)
Class Notes for Atonal Music Theory. An essential and elegant study by one of our great contemporary theoretical minds <==this gets at the basics

Class Notes for Advanced Atonal Music Theory. 2

@pikurasa
Copy link
Collaborator Author

A piece by J.S. Bach that uses retrograde to create a palindrome, is his "Crab Canon".

A crab canon—also known by the Latin form of the name, canon cancrizans—is an arrangement of two musical lines that are complementary and backward, similar to a palindrome. Originally it is a musical term for a kind of canon in which one line is reversed in time from the other (e.g. FABACEAE played simultaneously with EAECABAF). A famous example is found in J. S. Bach's The Musical Offering, which also contains a canon ("Quaerendo invenietis") combining retrogression with inversion, i.e., the music is turned upside down by one player, which is a table canon.
https://en.wikipedia.org/wiki/Crab_canon

JS Bach Crab Canon

Simple Performance with Visuals: https://www.youtube.com/watch?v=36ykl2tJwZM

On a Mobius Strip: https://www.youtube.com/watch?v=xUHQ2ybTejU

@walterbender
Copy link
Member

Since playing backwards in MB is inherently non-deterministic, I think we should restrict it to the matrix. We can have a play backwards button and a save backwards button. This would create a retrograde chuck, which can be intermixed with its corresponding chuck. But to implement a retrograde clamp would essentially mean running the code in the stack backwards, which works in simple cases, but not when things like box blocks are used. Too many corner case. Since we cannot generalize it, I think we best avoid it.

@pikurasa
Copy link
Collaborator Author

pikurasa commented Mar 6, 2016

But to implement a retrograde clamp would essentially mean running the code in the stack backwards, which works in simple cases, but not when things like box blocks are used. Too many corner case.

In my mind, the retrograde clamp performs the notes backwards--it is similar to the invert clamp.

There is no expectation that the clamp would perform anything other than notes backwards, like we do not expect the invert clamp to invert anything other than the notes.

Maybe it only accepts note and osctime blocks (and other simple code)?
Maybe it faithfully runs things backwards and lets the user discover why some more complex code works and why other complex code does not?

Since playing backwards in MB is inherently non-deterministic, I think we should restrict it to the matrix. We can have a play backwards button and a save backwards button.

I think this is an O-K solution, but it does take away from the otherwise real-time calculations in the turtle blocks environment...

@pikurasa
Copy link
Collaborator Author

pikurasa commented Mar 7, 2016

As I was practicing "Donna Lee", I discovered something about the way musicians play things in retrograde. I will report soon.

@walterbender
Copy link
Member

Resolved. While I am certain there are some corner cases where playing backward will result in broken logic or access to unintialized variables, the basics are working (well enough to program Bach's Crab Canon -- which was also featured in Godel, Escher, Bach).

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

2 participants