Inspiration
I've always loved the feeling on singing in a large choir and rejoicing in vocal harmonies in high school and college! However, during my time participating in choir I've noticed that often a significant amount of time gets wasted trying to manually determine where everyone should stand during concert rehearsals to maximize everyone's visibility and blend of overall voice parts. As a result, I was inspired to develop this web app that can automate that process for choir directors across the US.
What it does
Using input data containing the students' names, heights, and voice parts (soprano, alto, tenor, bass), the algorithm then displays a layout of where every student should stand to maximize everyone's visibility to the audience. The user also has the option to toggle between different voice part formations (mixed or group) as well as the actual size of the stage and number of students.
How we built it
MongoDB database for storing the student data, nodeJS for backend routing and calculations, React for frontend. Currently the display is shown using a canvas with boxes and labels representing each person. Deployed on heroku at https://floating-meadow-63518.herokuapp.com/.
Challenges we ran into
Displaying a more 3D visual display (using three.JS), handling several edge cases in case the voice part distribution was unequal.
Accomplishments that we're proud of
Algorithm successfully optimizes heights (tall people in back, short people in front) which will be very helpful for choir directors who can use this website for determining standing arrangements for concerts as opposed to wasting valuable rehearsal time.
What we learned
I learned a lot in the way of performing intricate back-end calculations and connecting data with front-end components in React
What's next for ChoirScan
Looking into more artistic visual displays using three.JS, could also potentially be turned into a mobile app using react native, also has high potential for monetization if enough directors use the website.
Log in or sign up for Devpost to join the conversation.