DEV Community

Aravind Mohandas
Aravind Mohandas

Posted on

Formalizing Konnakol using Haskell - GSoC '22

Contents

  1. Project Description
  2. Phase 1
  3. Phase 2
  4. Challenges and Learnings
  5. Future Work
  6. Blogs
  7. Link to Code

Project Description

The major aim of the project was to create a system which could formalize the rules of Konnakol. The system developed was then integrated with Tidal Cycles.

This project was done with Haskell, under the mentorship of Alex McLean.

Phase 1

The first part of the project was to develop a system which could formalize the rules of Konnakol, validate as well as generate Konnakol compositions. The system was also capacitated to generate diagrams based on the compositions (sample diagrams can be found here. All code for this phase has been published as a Haskell package named konnakol.

Compositions generated can be converted for use in Tidal Cycles. We obtained audio samples that could be used from Arthur Carabott, and hence could listen to compositions. One can listen to sample compositions here.

The code written during Phase 1 can be found here.

Phase 2

The second part of the project was to try modify Tidal Cycles so that it could deal with beat-wise compositions. We were able to develop a sequence datatype in Tidal Cycles, and define alternative function definitions for many functions that are used by patterns.

The code written in this regard can be found here. My contributions focused on designing, implementing and integrating the Sequence module with the help of the Context module.

Challenges and Learnings

The major challenge that I faced initially was understanding the logic within the code that was written by other contributors. Since this was my first time contributing to an open source project, it took me some time to get familiar with the overall process.

I would say that the Google Summer of Code has introduced me to the world of open source and given me the joy of being a part of something huge. I have evolved to become a better programmer in the last 16 weeks, and look forward to continue contributing.

Future Work

After coming up with the Sequence datatype, we have decided to try rewrite Tidal from scratch, removing redundancies and adding precise documentation.

The work done in this direction can be found here.

Blogs

For full details on the above, please see the development blogs:

Link to Code

Top comments (0)