Summer of Code/2018/Going Beyond Equal Temperament in Music Blocks

Going Beyond Equal Temperament in Music Blocks

About me

Name : Riya Lohia

Email: riyalh1997@gmail.com

IRC nickname : riyalohia

Github: https://github.com/riyalohia

First language: My first languages are English and Hindi. My language of communication is English.

Preferred Pronoun: She

Location: Jaipur, Rajasthan, India UTC+5:30

Education: I am a Sophomore Undergraduate Student, pursuing Bachelor of Technology with Electronics and Communication Engineering(ECE) as major in The LNM Institute of Information Technology,Jaipur,India.

Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?

I haven’t participated in an any open-source project on large scale before but I have made some contributions to music block itself and I would continue to contribute as much as possible because music blocks is something that I’m really interested and enthusiastic about. I’ve always been keen to learn music. I am learning Indian music from a very early age and I have also received a formal education for two years in the same field. Music blocks is a very noble project as it helps a lot of music enthusiasts like me to learn and experiment with music free of cost. I definitely want to be a part of something that would help people like me to learn and get better at music.

About your Project

What is the name of your project? Going Beyond Equal Temperament in Music Blocks

Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?

Goal : The goal of the project is to implement different types of tuning systems such as Just intonation, Meantone and Equal Temperament. Most modern music systems are designed around equal temperament.Currently music blocks is also limited to just equal temperament. But there are many ways to tune notes in a musical system that offer different expressive characteristics. This project aims to enhance its credibility to all the three major types of tuning systems as mentioned above. After the completion of the project, the user would be able to set the temperament to meantone, just intonation or custom in addition to the current equal temperament setting. In custom temperament the user can define the frequency of the starting note according to his/her wish. Also he would be able to define the relationships of all other pitches to the fundamental i.e starting note, thus making music blocks more customisable for the user.

Nowadays, almost everywhere equal temperament is extensively used and there are very few utilities available for other types of temperaments. This project aims to make it easier for them to learn and use other temperaments with utmost ease. After the completion of the project students would be able to create their own temperament which will eventually enhance their learning process. Teachers can explain the difference between the different types of temperament digitally in real time to students and assistants. This project is a humble attempt to change the extensive usage of equal temperament nowadays and encourage experiment with different possibilities in the temperament section to create compositions like the legends of 18th century like Sebastian Bach.

Project Idea Implementation Link: The following link has all the relevant discussions regarding the workflow of the implementation and other details of the different temperament systems.

LINK : https://drive.google.com/file/d/1PtB0dhEt3P9L9--nrX0dTAWogbTauSEe/view?usp=sharing

Technologies Used: To produce sound, we would need the tone.js API and for creating and implementing the new blocks and widget HTML5, CSS and JavaScript would be used.

Work Timeline:

This is the basic timeline that I wish to follow. Other things can be added as per the mentor’s suggestions.

May 1 - May 10

  • I have my fourth semester exams from May 1-May 10, 2018. After May 10,2018 , I have my summer vacations till July 31,2018. I do not have any other work commitments in this time period.

May 11 - May 14

  • Get up to speed to begin working on the project

May 14 - May 20

  • Create a lookup table populated with the equal temperament values by default.
  • Update the calculations of intervals.
  • Consider the impact of changing key and mode.

May 21 - May 27

  • Initiate the UI.
  • Create ‘Temperament’ block and add it to widget palette.
  • Create ‘Set Temperament’ block.
  • Create ‘Temperament’ and ‘Set Temperament’ blocks clamp.

May 28 - June 3

  • Initiate the widget
  • Create the basic widget layout consisting of all the required buttons.

June 4 - June 10

  • Create widget for Equal temperament.

June 11

  • Get the work evaluated with the mentors.

June 11- June 20 ( For equal temperament widget )

  • Make appropriate changes as per the response of mentors.
  • Work on ‘save’ button functionality.
  • Adding ‘define frequency’ blocks to temperament block.
  • Adding ‘Set Temperament’ block to clipboard.
  • Make the functionality of the ‘Set Temperament’ block work with the power of Tone.js.

June 21 - June 23

  • Create widget for Just Intonation temperament.

June 24 - June 30 ( For Just Intonation temperament widget )

  • Work on ‘save’ button functionality.
  • Adding ‘define frequency’ blocks to temperament block.
  • Adding ‘Set Temperament’ block to clipboard.
  • Make the functionality of the ‘Set Temperament’ block work.

July 1 - July 5

  • Create widget for Meantone temperament.

July 6 - July 8 ( For Meantone temperament widget )

  • Work on ‘save’ button functionality.
  • Adding ‘define frequency’ blocks to temperament block.

July 9

  • Get the work evaluated with the mentors.

July 9 - July 17 ( For Meantone temperament widget )

  • Make appropriate changes as per the response of mentors.
  • Adding ‘Set Temperament’ block to clipboard.
  • Make the functionality of the ‘Set Temperament’ block work.

July 18 - July 21

  • Create widget for Custom temperament.

July 22 - July 31 ( For Custom temperament widget )

  • Work on ‘save’ button functionality.
  • Adding ‘define frequency’ blocks to temperament block.
  • Adding ‘Set Temperament’ block to clipboard.
  • Make the functionality of the ‘Set Temperament’ block work.

August 1 - August 6

  • Make appropriate changes as per the response of mentors.
  • Fix related issues.
  • Add temperament widget to the guide.

August 6 - August 14

  • Submit the code.

Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant. I have prior experience in creating web and desktop applications for the Computer Society of India, LNMIIT Chapter. So I know how to approach a certain idea and how to implement it efficiently. I also learned team and time management through these projects. My major projects include a simulation of banking system (Java and MySQL) and a web portal for the CSI internship program (HTML,CSS and Javascript). Here are the links to the projects:

https://github.com/riyalohia/Bank-System

https://github.com/riyalohia/CSI-SIP-WIP-webpage

Apart from the above projects, I have also made noteworthy contributions to the Music Blocks project. I have been a part of Sugarlabs community since December 2017. Here is the link to all the contributions made by me to Music Blocks: https://github.com/walterbender/musicblocks/commits?author=riyalohia

You and the Community

My answer

If the project is successful, it will surely enhance the abilities of music blocks in educating students about the possibilities of composition using different temperaments. It will also encourage the students to think out of the box and move over the traditional temperament tuning systems, which is the basic aim of the sugar community i.e to improve the learning abilities of its users.

Walter Bender’s answer

Marvin Minsky once said: “You never understand something unless you understand it in more than one way.” Freeing Music Blocks from equal temperament will allow learners to understand music in more than one way. Further, it will significantly “raise the ceiling” of the potential for the program in terms of its faithfulness to music traditions and music potentials. Music Blocks adds to Sugar a first class tool for exploring music and mathematics.

What will you do if you get stuck on your project and your mentor isn't around?

If I’m stuck technically, the first step would be to analyze my code and try to figure out the bug if possible. If the above doesn’t work, my next step would be to format my problem statement in a way so that I can find most relevant search results on google and stack overflow. If the problem is not technical or if I am not able to solve the problem from the above approaches then I would wait for my mentors to be available on IRC or through mail and try to get their advice as soon as possible and start working on the suggestion provided by them. I would also interact with my mentors on daily basis regarding updates on the project.

How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?

I would inform the community with new updates regarding my project using IRC and mailing list. Moreover I am quite active on IRC with the nickname riyalohia. I would also request the mentors to test my work on a weekly basis.