- Place looping virtual orchestral strings instruments in three-dimensions using intuitive hand gestures
- Hear the instruments with spatial audio that updates in real-time
- See sprites that visually represent the spatial position of the instruments
Video Demo:
- Clone the repository
git clone https://github.com/jo-ljacob/spatialStrings
cd spatialStrings- Install Git LFS (required for large HRTF file)
git lfs install
git lfs pull- Install dependencies
pip install -r requirements.txt- Run the project
python main.py- Choose an instrument by clicking an icon on the left sidebar
- Place an instrument by pinching all fingers together
- Clear all instruments or pop last placed instrument using the respective buttons
- Toggle if an instrument is placed when fingers touch
- Adjust the volume using the slider
- Simulate 5 random instruments in random locations using the Random button
Note: For the best experience, use headphones to hear the spatial audio correctly.
I would like to thank my 15-112 instructor and teaching assistants for their guidance and support throughout this project.
Parts of the code that were outside of my scope were written with the assistance of AI tools such as ChatGPT and Claude. All final implementations and testing were completed by me.
The HRTF Database used was The Viking HRTF Database.
- Note that this database does not cover points under an elevation of -45 degrees, and so instruments placed under that threshold will not be accurate.
Instrument sounds were created using GarageBand Smart Strings.
GUI was heavily inspired by xLogicCircuits.
