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

Share this project:

Updates