Inspiration
Performance is enhanced with multiple people on stage. When you treat the computer as a mode of listening, reacting, and performing, you add performers to the mix.
What it does
Virduoso listens to your performance for cues which you determine. When it hears these cues, it reacts. It can play music to accompany you, and in a more robust setting could adjust stage lights and other effects.
How we built it
Virduoso is built using Python and several of its libraries. Sound is streamed into the file using signal processing. It is buffered into increments of 1/30 of a second which are each analyzed using the Fast Fourier Transform. This tool creates amplitudes as functions of frequency which allows us to determine what pitch is presently being played in real time. From here, we use regular expressions and pattern matching to determine when the performance satisfies the predetermined cue. If it does, the computer reacts!
Challenges we ran into
Noise (pun intended) played the biggest role in how we had to refactor our code towards the end. The unpredictable nature of real-time, real-world signals makes them hard to process in a robust way. The other main challenge we encountered was how to manipulate libraries to conform to our specific needs. We faced these challenges by further researching the libraries and establishing exactly what we needed out of them.
Accomplishments that we're proud of
We are extremely proud of our code structure. It is incredibly modular which means that scaling it and incorporating new features is as easy as it can be. We are also proud of the clever, efficient, and smart solutions we used to solve the problem. We were able to use our math and physics savvy to improve our code and we were able to learn along the way.
What we learned
First and foremost, we all became familiar with several new Python libraries with broad applications. We also learned the power of modularization and version control.
What's next for Virduoso
We hope to expand this to be a teaching tool as well as a performance tool and develop a computer and mobile app for easier use
Built With
- fft
- finite-state-machines
- multithreading
- musicians
- pattern-recognition
- pyaudio
- python
- pythonio
- regular-expressions
- signal-processing
Log in or sign up for Devpost to join the conversation.