QGroov
It is hard to visualize qubits. Many People don't understand what exactly they are, or how to grasp a superposition. Our app makes Qubits more accessible through the medium of sound. With QGrooves, you can listen to a quantum algorithm and grasp their main idea through sound.
Inspiration
The members of our group wanted to combine our love for music with our passion for quantum computers. Not only that, but we wanted to make this app educational. Thus, QGrooves was born, the auditory aid in understanding qubits.
Often, it is hard for students to understand what a qubit is, and even harder to visualize them. QGrooves' goal is to act as a bridge for understanding quantum computing. Hence, we opted to make a more familiar representation for qubits: sounds.
By mapping the qubits to sounds, we can make music with quantum circuits. Students, teachers, and researchers can now listen to the famous algorithms as music. We hope that our tools will inspire teachers and the next of generation of computer scientists to study quantum computing.
How We Built It
QGrooves takes the vector representation of qubits and converts it to waves. We map the amplitudes of each vector component to sound waves, and break quantum circuits into steps to listen to those intermediary steps. Then, we make music with the amplitudes on Sonic Pi, a programming language and sound engine.
In our project Sonic Pi creates the grooves; Phaser.js makes a drag-n-drop UI for building circuits; MongoDB stores the images and music files generated by the circuit; Qiskit generates the quantum circuit diagrams and processes those circuits; and Python coordinates all the work in the backend of our Google Compute Engine VM.
Challenges We Ran Into
This was our first real experience with JavaScript and first time using ever Phaser. This came along with a bundle of errors that were difficult identitify and resolve.
Sonic Pi was also a big challenge to set up on Google Compute Engine. Firstly, it was never intended to be used in Linux. There were preview versions for Windows and Mac, but we had to build from source, which caused many compile errors.
Secondly, it was never intended to be used as a server. Rather, Sonic Pi is meant to be a GUI application, more along the lines of a musical instrument than a server. We needed to hack the internals to make it act as a sound server where we could input amplitudes to get the sounds we wanted. That was enormously time consuming.
Our last challenge was saving our data to MongoDB: we needed to save the image and audio files generated on the backend to be sent back to the front-end. That made us try to search solutions that worked on both Javascript and Python for manipulating binary data.
Accomplishments We Are Proud of
Because none of us had used Sonic Pi before, we are proud that we managed to create the music we wanted to make.
We are also proud of the snappyness and style of our UI. But most of all, we are happy we managed to accomplish the project and share the joy of quantum computing.
What We Learned
- Saving large binary files in MongoDB using GridFS and base64 representations
- Applications of music theory with Sonic Pi
- Three of our team members learned quantum algorithms
- JavaScript can get funkier than our grooves
What's Next For QGrooves
- Supporting more qubits
- Refining drag-n-drop interface
- Add more music scales
Built With
- javascript
- mongodb
- phaser.js
- python
- qiskit
- sonic-pi

Log in or sign up for Devpost to join the conversation.