Inspiration
We were inspired by the Japanese Pachinko game, which is a popular arcade game in Japan that involves balls falling down a pegboard.
What it does
The app allows users to create songs by placing pegs onto a Pachinko-style board. Each peg corresponds to a specific musical note or chord, which plays whenever the ball touches it. As the ball falls down the board, it collides with pegs to create a song!
How we built it
The core app was built using Rust, the Bevy game engine, and the Rapier physics engine.
Challenges we ran into
Unfamiliar tech stack
Some of our members were not familiar with the Rust ecosystem or functional programming in general, so learning to utilize it was not easy, to say the least
Time Constraints
Being a 24-hour hackathon (minus daylight savings time), we found ourselves tight on time, especially compared to the 36 and 48-hour hackathons we were used to.
Accomplishments that we're proud of
It works!
We are extremely proud that our app works. Using Rust was a learning experience, and we are very happy that we achieved our vision for the project given the limited timeframe.
Musical completeness
In theory, our app is capable of mimicking the rhythms and notes of any song up to a moderate tempo. Being able to play famous pieces like the Nutcracker March on the app is really exciting for us!
What we learned
Rust and Functional Programming
Switching from Object Oriented Programming to a more functional language like Rust was like learning how to walk again. The code was structured way differently, the syntax was brand new, and basic tasks like comparing objects structs became less than trivial. However by the end of the hackathon we both felt that our skills as programmers improved greatly
What's next for Note Drop
Before we deploy our app, there's a few features we would like to add, including:
- Multiple instruments
- Different peg shapes
- Different ball bounciness levels
- Support for musical ornaments (trills, turns, pitch bends, etc.)
After we implement the above, we plan on compiling the app to WebAssembly and hosting it on the web!
Controls
- Place note: A-G
- Half step up: hold SHIFT
- Half step down: hold CTRL
- Delete note: X
- Clear: R
- Quit: Q
- Drag/drop: Left Click
- Place ball: right Click
- Place Ball spawner: middle mouse
- To summon balls from ball spawner, use the left hand menu
Built With
- bevy
- rapier
- rust
Log in or sign up for Devpost to join the conversation.