top of page
Audio Software Development

MIDI Editor

MIDI Editor is an open-source project with the aim of building a simple lightweight MIDI file player and editor. The player supports General MIDI 1.0 spec. It uses the GeneralUser GS MuseScore v1.442 soundfont file from MuseScore to generate sounds.

MIDIEditor

Raag Sequencer (In Progress)

A sequencer / melody generator module for VCV Rack, the modular synthesis environment. It allows the user to build a musical scale as a directed graph and then generate melodies by traversing the graph.

Coming soon

Web-based Interactive Musical Systems

Groove Machine

GrooveMachine aims to foster interest in computer science among children through the music-driven exploration of a computational system. It is a physical table interface which acts as a step-sequencer. A software version of Groove Machine was created as an interactive website which was developed using Pixi.js and Tone.js

​

I presented a paper on Groove Machine, titled "From the museum to the browser: Translating a music-driven exhibit from physical space to a web app" at the Web Audio Conference 2019 held in Trondheim, Norway.

GroovMachine

Ball Dance

Ball Dance is an interactive musical system. It is an artwork that allows users to explore sounds that are generated as a result of chaos in the system which is constrained by rules that govern the behaviour of the floating balls. The website is developed using p5.js and matter.js. Sound Design is done using Ableton and Max.

BallDance

AV Loops

AV Loops is an interactive and collaborative webapp which lets users explore musical ideas together to create an immersive audiovisual experience. Users can create sequences using nodes, add musical notes to them using the keyboard keys and select sounds from instrument presets. Each sound is mapped to a short animation. Multiple users can use the app at the same time, each adding sounds to their own node to create an audiovisual experience together.

Anchor 1
Machine Learning and Deep Learning

Generating Room Impulse Responses using Recurrent Neural Networks

Convolutional reverb is a reverb generation method that simulates acoustics of a room by convolving the an input audio signal with an impulse response recorded at that room. For this, we require recorded impulse responses which might not always be easily available. In this project, we try to generate the room impulse responses using a LSTM. We survey techniques like truncated backpropogation through time, teacher forcing and auxiliary loss.

Slides describing the setup and experiments:

Audio for Vibraphone C6 note:

Original 

Generated 

GeneratingRoomImpulseResponsesUsingRecurrentNeuralNetworks

Modelling Equalization Effects Using Neural Networks

Audio equalization is an audio effect which involves filtering the audio signal to modify the frequencies present in it. This project proposes an end to end learning approach to reproduce such filtering effects using a minimal fully connected network. The proposed network is able to model the transfer functions for lowpass, highpass, lowshelf, highshelf, peaking and notch filters. Since time domain data is used, such an approach can be extended to real time systems. 

Plot for second order lowpass filter (cutoff: 750Hz)

lowpass.png

Audio for second order lowpass filter (cutoff: 750Hz):

Input

Target 

Prediction

ModellinEqualizationEffectsUsingNeuralNetworks

Equation Recognition

This project aims to understand and compute basic mathematical expressions. It is an android app that works as a calculator which takes  handwritten input. The character recognition was done using K-means clustering. We also explored another approach that used convolutional neural networks to do the same.

EquationRecognition
Game Development

SpaceBoy

SpaceBoy is a 2D game developed using the Unity Game Engine. The protagonist, an astronaut, is stranded on an unknown planet and has to save himself from the wrath of the aliens. You can kill the aliens by using the lazer beam gun. If an alien touches you, your health reduces. You can fly around by using the jetpack. You can also teleport by creating portals using your portal gun. 

SpaceBoy
Interactive Music using Max/MSP

Generative Music

This project / composition converts text to music by mapping its ASCII values to pitches. The composition consists of two sections of 30 seconds where the first section directly sonifies the text as is and the second section generates new text using Markov Chains and then sonifies it.

GenerativeMusic

Sound Synthesis

This Max program utilizes Ableton's Live instruments and creates a synthesizer with modifiable parameters. It provides the user with five interpretable parameters that can be used to modify the sound. The parameter are mappings are defined such that a high ceiling of sounds can be achieved.

SoundSynthesis

Learnable Sound Mappings using Machine Learning

This is an extension of the Sound Synthesis project. An built interface using TouchOSC is used to interface with the five synthesis parameters. An artificial neural network is used to generate mappings from the input interface to the parameter configuration that produces sounds. The interface also allows to train the network through the app.

Patch Description
LearnableSoundMappingsUsingMachinLearning

Sequence Controller using Sensor Inputs

This project allows you to select samples to be played in loop and build a sequence. TouchOSC is used to build a mobile interface that allows to activate and deactivate pre-recorded samples. The accelerometer of the phone is used to control center the frequency of bandpass filters that are applied to each type of sound.

SequenceController
Misc

MP3 Metadata Editor

‘MP3 Metadata Editor’ is python program to edit the metadata of an mp3 file. ID3  tags is a standard used by the MP3 audio file format for its metadata. It allows information such as the title, artist, album, track number, and other information about the file to be stored in the file itself in the form of frames. The program allows you to edit this information by locating and the appropriate frame, updating its data field and accordingly updating the frame size and flags.

MP3MetadataEditor
bottom of page