Monday 20 June 2016

Week 4 // There, there!

Week 4 is over and a month is already done! To reflect on the whole journey so far in general, I feel if you define my learning over time on a graph, it'll come out to be an exponential one. I could have achieved a lot more ideally, but my working pace is catching up only, along with my working knowledge. And this is what is exciting, as going forward, I think a lot more can be achieved in a lot less time, which will also be essential to my project.

This week I was supposed to deliver the POC, but it has been running a little behind schedule, mainly now due to the problems I am facing with the EQ changes (should be able to resolve them any time soon now). What is complete though is the crossfader transition from one deck to another, according to the BPM of the track.

For example: If you are playing 'Walking on a Dream' by Empire of the Sun (really interesting band), which is at 127 BPM on Deck1, you can decide to switch to the Deck2 song, over N number of bars. I want the user to choose the N, but right now its hard coded to 2 i.e., the transition will happen over 2 bars. 

This is a very simple implementation as of now, but a very important base on which other desired features can be built upon (like EQ changes which I am trying). This looks like the AutoDJ feature but functions on separate logic involving the number of bars which is being taken into account. 

Since, all of this is for the POC, I have been using the AutoDJ module to use the 'Fade Now' button, and have written separate code only for the logic. Below is a very shabby attempt of explaining what I am doing. Usually I do this in Lucid Charts or something similar, and will probably replace it with that in due time. In short, the 'Fade Now' button of the AutoDJ feature is mine now, for the purposes of this POC.


You can find the code on my Github.

What next?
1. Resolve the issues with the EQ changes
2. Finish the POC, discuss the observations and make the future plans accordingly
3. Solve the 2 bugs that I have on my list ASAP

See you next week! :)

Monday 13 June 2016

Week 3 // Clearing out the Crashes

This week was productive in terms of the progress with respect to the POC code. The main objective of the POC which is to test our transitions with respect to tracks of different BPMs, and then a further extension of the test is to check for the different kinds of effects and controls this idea can used for.

I faced a lot of issues with respect making changes in the code, adding my files and compiling the whole project. Right now, I am covering the following in the POC,
- crossfader
- EQ

| mscrossfader.cpp | ————> | mixxx.cpp |
| mseq.cpp | ————————> | mixxx.cpp |

Both of these files use the BPM to calculate the applied effect duration. 

So where do I stand right now?
I have coded up the required modules, but I might even use a consolidated msmanager.cpp but it might not be required for our purposes. The code can be found and will be updated going forward here on my Github Branch. But I am facing issues running all the changes I have made, as the application has been been crashing a lot right with some of the changes I have made.

What is my next step?
To clear out the crashing issues, and wrap up the POC with documenting the required results and observations. 

Hoping to finish up the POC and with positive results this week, so that the further plan can decided upon and worked on. 


Catch you next week! 

Sunday 5 June 2016

Week 2 // Controlling the Control System

Another week of GSOC is already over! 

This was a mixed week for me with a lot of pros and cons. The week started off slow with me struggling to find my footing with the Mixxx’s ControlObject classes and its various subclass implementations in the code, but by the end of this week I can say that my understanding is so much better now, so much so that I now find it beautiful, the whole Control system! :) 

Programming wise I am much comfortable with C++ now and I think I am beginning to see why it is what it is, a giant among programming languages, especially for certain applications. I can see my skills only growing every week now. 

As per our revised timelines, till about 14th June, which is another week and a half approximately, I am majorly focusing on the POC. With respect to the POC, for the purpose of generating predetermined MIDI info, I will be using the low-mid-high EQ knobs and the crossfader for now. This week I worked on writing a script for modifying these values (still tweaking it around as its not running robustly) through a wrapper. 

So where do I stand right now?
I am tweaking around my code snippet to change the values as per the detected BPM, based on a particular track which I have taken as standard for now to start with. 

What is my next step?
Once this code snippet works perfectly on a single track, I will be applying it to different decks, of same BPM song and then hopefully different BPM ones soon as well (possibly by the end of the this POC I will be including some other effects as well).

I actually was a little lost this week in code but with some direction from my mentor I was able to focus on the right parts of the code. But overall, I think I am in sync with my plan with respect to the POC implementation. Week 2 was much fun because by the end of it my understanding of Mixxx increased.


See you next week!