Summer of Code/2018/Music Blocks Widget Improvements: Difference between revisions

A-ritwik (talk | contribs)
Created page with "Music Blocks Widget Improvements"
 
A-ritwik (talk | contribs)
part 4
Tag: visualeditor
 
(10 intermediate revisions by the same user not shown)
Line 1: Line 1:
Music Blocks Widget Improvements
== Music Blocks Widget Improvements ==
 
=== '''About You''' ===
'''What is your name?'''
 
My name is Ritwik Abhishek. I am 3​rd​ year undergraduate student at Indian Institute of
 
Technology Guwahati.
 
'''What is your email address?'''
 
ritwikabhishek@gmail.com
 
'''What is your Sugar Labs wiki username​ ?'''
 
A-ritwik
 
'''What is your IRC nickname on irc.freenode.net?'''
 
a-ritwik
 
'''What is your first language?'''
 
My first language is Hindi. English is my language of communication and I am fluent in it.
 
'''Where are you located, and what hours (UTC) do you tend to work?'''
 
I live in Guwahati, India (UTC+5:30). I usually work from 5AM (UTC) to 2PM (UTC), But these
 
timing can vary depending on the need of project or mentor. I will remain active on IRC
 
during my working hours.
 
'''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 am new to the world of open-source. I like the idea very much that anyone can contribute
 
to a project of his/her choice and help to develop products which are comparable or better
 
than proprietary products. I chose Sugar Labs because Education is very close to my heart
 
and Sugar Labs works to provide kids equal opportunity to learn, irrespective of their
 
background.
 
=== About your project ===
'''What is the name of your project​ ?'''
 
Music Blocks Widget Improvement
 
'''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?'''
 
My project involves 3 separate parts
 
1) '''Fix widget bugs'''​ - There are several widgets in Music Blocks. As reported on github
 
repository ​ <nowiki>https://github.com/walterbender/musicblocks/labels/widget​</nowiki> , there are around
 
20 bugs reported currently. I think there would be another 10 bugs related to widgets which
 
would be reported during summers. I am planning to remove 2-3 bugs per day. Most of the bugs
 
involve pitch-time matrix, tempo, timbre, filters, rhythm ruler. Most of bugs are easy
 
and they would be fixed in around 10 days. Other bug reports involve adding some
 
functionality and are actually enhancements.
 
2) '''Pitch tracker​ -''' It involves making a widget which would record sound, process it to find
 
fundamental frequency for every small segment, and then choose blocks (whose frequency
 
is closest to fundamental frequency of each segment), and then use these blocks to code
 
the recorded sound in Music Blocks language.
 
I chose to use fundamental frequency because it can be calculated in real time and is easy to
 
calculate as well. For calculating fundamental frequency I will be using autocorrelation as
 
feature vector. Autocorrelation is correlation of a signal with its delayed copy.
 
There is a webapp written in javascript which calculates autocorrelation, whose code we
 
can use as it has MIT license. The repository is ​ <nowiki>https://github.com/cwilso/PitchDetect/</nowiki>
 
If the fundamental frequency is not very strong then we will use fourier transform to get the
 
frequency domain representation of the signal, then we will find frequencies at which the
 
amplitude is higher. The smallest of these frequencies will be fundamental frequency. For
 
example in figure given below, fundamental frequency is shown by yellow arrow.
 
3) '''Integrating software keyboard in Music Blocks''' - ​ The keyboard currently works fine but It
 
looks very different than rest of Music Blocks. I would like to work on design part of the
 
keyboard and change its design in following ways
 
- Currently the keyboard is fixed in size and it can not be moved, I would change it and
 
it would be available in at least 2 sizes and its position on the screen could be
 
changed.
 
- Currently the toggle button to minimize/show for keyboard is on bottom right
 
corner, I would change it such that It remains on the top left of keyboard just like
 
others.
 
- Making the edges of each key rounded, so it looks similar to other blocks
 
- Although actual keyboard is black and white, there should be option to change colors
 
of keys.
 
I think we should measure time for which a certain key was pressed, for that we need to
 
measure starting and stopping time. I have not finalized how to deal with this, and would
 
finalize this while going through the code of keyboard and after having detailed discussion
 
with my mentor.
 
'''Timeline'''
 
Was uploaded in main proposal.
 
'''Convince us, in 5-15 sentences that you will be able to successfully complete your project'''
 
'''in the timeline you have described.'''
 
I think I will be able to successfully complete the project because I am a hard working and
 
goal oriented person. I will be giving around 40-50 hours per week to the project. I will work
 
on every day of the week. I have no other commitment this summer. I am willing to learn
 
technologies that I don’t know and work hard to finish the project.
 
Some of the relevant projects done by me are described below
 
'''Audio class histogram'''​ - For a given audio segment we had to find out which part of audio
 
contains speech, music and silence. For this we had used 5 feature vectors. It was done in
 
MATLAB. Experience from Audio class histogram project would help me to complete pitch
 
tracker this summer. To know more about visit ​ <nowiki>https://ee320.github.io/</nowiki>
 
'''Contribution'''​ - I have started contributing to music blocks. I have submitted a few bugs, and
 
am trying solve bugs as well.
 
<nowiki>https://github.com/walterbender/musicblocks/pull/1170</nowiki>
 
<nowiki>*</nowiki> will be adding more pull requests soon
 
'''Basic Website using Flask framework'''-​ Made a basic website using Flask framework. The
 
website has log in/out feature. I am proficient in HTML, CSS and JavaScript. To know more
 
visit - ​ <nowiki>https://github.com/a-ritwik/flask-intro</nowiki>
 
To see smaller projects that I have done please visit my github page
 
<nowiki>https://github.com/a-ritwik</nowiki>
 
=== '''You and the community''' ===
'''If your project is successfully completed, what will its impact be on the Sugar Labs'''
 
'''community?'''
 
My Answer​ - My project has 3 parts, I have explained their impact one by one1- Fixing existing bugs of different widgets in Music Blocks - There are currently several
 
widgets in Music Blocks, and fixing existing bugs from them will enhance user experience,
 
remove improper system behavior, and make Music Blocks more robust.
 
2- Pitch tracker – After its completion, we can give input from microphone and use pitch
 
tracking to generate Music Blocks code. So after this we do not have to manually code for
 
each and every song, It could be done with good enough accuracy by the pitch tracker. As
 
Devin Ulibarri has suggested It could be a GCI task to choose a song, sing it, and then submit
 
both recording and Music Blocks code.
 
3- Integrating software keyboard with Music Blocks- This would be implemented as a widget
 
which on key press will give corresponding output as chunk. Currently the keyboard works
 
fine but it looks very much different than the theme of Music Blocks. The project will create
 
unity in design of keyboard with Music Blocks.
 
'''Walter’s Answer​ -'''
 
The most pressing need for Music Blocks right now is stability, so addressing the widget bug
 
list would be an important contribution. Further, widgets for pitch tracking and keyboard
 
input would provide some basic scaffolding for beginners, which would lower the barriers to
 
entry, also important if we want to grow the user base.
 
'''What will you do if you get stuck on your project and your mentor isn't around?'''
 
If I am stuck and my mentor is not around, I will search on the web and stackoverflow for
 
solution. If that does not work I would ask the question on IRC and Sugar-devel mailing list
 
to get help from other members of the community who contribute to Music Blocks. Some of
 
my college seniors also contribute to open-source, I can get help from them as well.
 
'''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 will write a blog, where I will post updates of my progress as well as difficulties that I faced
 
weekly. I will post to Sugar-devel mailing list after completing important milestones and I
 
will also attend meetings which are held on #sugar-meeting.
 
=== Miscellaneous ===
'''Link to screenshot of Sugar development environment'''
 
My project does not require Sugar development environment, but I have set it up in virtual
 
machine.
 
'''link to a pull request or merge request you have made'''
 
<nowiki>https://github.com/walterbender/musicblocks/pull/1170</nowiki>
 
<nowiki>*</nowiki> I will be adding more pull requests soon
 
'''Describe a great learning experience you had as a child.'''
 
I was weak in mathematics when I was a kid, although I used to attend all the classes. When
 
the teacher solved questions on blackboard, I just copy them to my notebook mindlessly.
 
Once I scored very badly in Mathematics exam. I then talked to the teacher and he asked me
 
to try solving questions before seeing answer. I followed his advice and started solving
 
exercise questions and asked for help only after I had tried enough. This helped and I
 
became good in mathematics. This was a very good learning experience for me.
 
'''Is there anything else we should have asked you or anything else that we should know'''
 
'''that might make us like you or your project more?'''
 
Sugar Labs is doing very good work to provide equal opportunity to students all over the
 
world to learn, but one thing that I have noticed is that our community need to have better
 
outreach to prospective contributors, this would make us grow fastly as an organisation.
 
After summers I would like to work with Sugar Labs team to increase our outreach.
 
'''Category'''​ – Music Blocks GSoC 2018 application