My Musical Inception in Open Source

Hey there , I am Tayba Wasim better known as Tabs16, active contributor to one of the projects of Sugar Labs that interest me the most , Music Blocks !

Well, I have always been interested in Music , from playing guitar to singing songs but never really got the opportunity to learn Music theoretically and then applying the concepts. Music Blocks is a collection of manipulative tools for exploring fundamental musical concepts in an integrative and fun way and therefore provided me the path to achieve this learning through doing.

This interest of Music and well , programming  got me interested to contribute to the project’s repository because I always feel , as a user I have the power to give ideas but I can  only implement it if I go through it’s way, i.e. code.

So from then began my journey of the exciting world of Open Source and getting my patches merged for the issues Music Blocks was facing.

The world of Open Source is quite intimidating. I still remember when I first saw the code base of Music Blocks I got scared. For one week, I just read the code , trying to understand the basic structure of the large code base but the zeal to contribute to a software which involved something I love, suppressed all my fears and to be honest, I am improving day by day on my ability to read large codebases.

As a newbie,You get hesitant at asking too many questions at first ,procrastinating that your questions may appear too silly to the people who have so much in-depth knowledge of their field.I want to give you a very strong piece of advice at this point of time, for a moment ,halt your procrastinations and ask your mentors, they can be your saviours from your world which you have recently filled up with so many unnecessary if’s .

Music Block’s mentors ,Walter Bender and Devin Ulibarri always help me with my queries even if they seem trivial issues ranging from what needs to be done, when it has to be done and how it will be done. I still remember Devin and I understanding each other’s point of view on an issue which involved freezing of rows and columns but Devin’s words  that one should ask questions until their doubts are cleared really made me believe that before embarking upon your journey of procrastination,one should do some research work and ask questions to solve those queries which subsequently can save your day from endless confusions and give you better clarity of the work you are doing.

Contributing to Music Blocks led me to dwell into the fascinating world of Javascript. To begin with , I first made a Pull Request i.e.PR which involved a change in the documentation . Well, when you are completely new, You always read the documentation first and it is probably your first baby steps to contributing in your little small ways. As time passed , so did my understanding of the code. Now, I have a number of patches merged to the existing code ranging from modifying existing blocks such as “Invert” block,”repeat” block to making new blocks , such as “to the power of” block , “Octave Selector” block(PR open) and “MIDI Number” block(PR in progress).

My patches also include fixing scaling issues and i18n usage which I learned along the process.

One of the patches I fixed that interested me the most uptil now was to make the Loudness block to work perfectly in Music Blocks as it did in Turtle Blocks(Music Blocks is a fork of Turtle Blocks Software) with the usage of Tone.js which is a Web Audio framework for creating interactive music in the browser. The architecture of Tone.js aims to be familiar to both musicians and audio programmers looking to create web-based audio applications. I began getting myself acquainted with Tone.js and finally found the APIs i.e . Tone.UserMedia() and Tone.Analyser() to achieve the same. Once the APIs were decided , I was able to make the loudness block to work but not perfectly yet.Initially, I was taking the root mean square of 1024 frequency samples which was then to be taken as input to the loudness block but it wasn’t fine-tuned. For the input to be fine-tuned , the order of magnitude of the root mean square(rms) value must be of the same order as that of sample frequencies and it wasn’t and Walter’s explanation of the problem and it’s possible solution was of great help to me. Finally, I realised that my rms value was multiplied by 1000 when it was taken as input which increased the order of magnitude of the input to three times. I rectified the bug and made a PR  which made the loudness block work perfectly .The momentary sense of achievement I got after my patch was merged was a bliss 🙂

The world of Open Source provides a plethora of things one can learn from along with people working from different time zones with the sole objective of improving things which are used by millions of people on a regular basis and Music Blocks help me explore this intimidating yet super exciting world.I look forward to continue being an active contributor of Music Blocks, solving the issues and enhancing the features and well , we are soon to have a V1 – release ! Yayieeee !

This is Tabs16 ,Signing off, Meet you soon in the next post ! 😀