## Personal Statement

It all started when our team member (definitely not Parth), let's call him Marth, had a crush on a girl who was a big fan of guitar music. He decided to impress her by playing her favorite song on the guitar, but there was one problem - Marth had never played the guitar before.

Determined to win her over, Marth spent weeks practicing the song, but he just couldn't get the hang of it. He even resorted to using YouTube tutorials, but it was no use. He was about to give up when he had a crazy idea - what if he could make the guitar play the song for him?

That's when our team got to work. We spent months developing an attachment that could automatically parse any song from the internet and play it on the guitar. We used innovative arm technology to strum the strings and servos on the headstock to press the chords, ensuring perfect sound every time.

Finally, the day arrived for Marth to show off his new invention to the girl of his dreams. He nervously set up the attachment on his guitar and selected her favorite song. As the guitar began to play, the girl was amazed. She couldn't believe how effortlessly Marth was playing the song. Little did she know, he had a secret weapon!

Marth's invention not only won over the girl, but it also sparked the idea for our revolutionary product. Now, guitar players of all levels can effortlessly play any song they desire. And it all started with a boy, a crush, and a crazy idea.

## Inspiration

Our product, Strum it Up, was inspired by one team member's struggle to impress a girl with his guitar skills. After realizing he couldn't play, he and the team set out to create a solution that would allow anyone to play any song on the guitar with ease.

## What it does

Strum it Up is an attachment for the guitar that automatically parses any song from the internet and uses an innovative arm technology to strum the strings and servos on the headstock to help press the chords, ensuring perfect sound every time.

## How we built it

We spent hours developing Strum it Up using a combination of hardware and software. We used APIs to parse songs from the internet, custom-built arm technology to strum the strings, and servos on the headstock to press the chords.

## Challenges we ran into

One of the biggest challenges we faced was ensuring that the guitar attachment could accurately strum and press the chords on a wide range of guitar models. This was because different models have different actions (action is the height between strings and the fretboard, the more the height, the harder you need to press the string) We also had to ensure that the sound quality was top-notch and that the attachment was easy to use.

## Accomplishments that we're proud of

We're incredibly proud of the final product - Strum it Up. It's a game-changer for guitar players of all levels and allows anyone to play any song with ease. We're also proud of the innovative technology we developed, which has the potential to revolutionize the music industry.

## What we learned

Throughout the development process, we learned a lot about guitar playing, sound engineering, and hardware development. We also learned the importance of persistence, dedication, and teamwork when it comes to bringing a product to market.

## What's next for Strum it Up

We're excited to see where Strum it Up will take us next. We plan to continue improving the attachment, adding new features, and expanding our reach to guitar players all over the world. We also hope to explore how our technology can be used in other musical applications.
## Inspiration

In today's age, people have become more and more divisive on their opinions. We've found that discussion nowadays can just result in people shouting instead of trying to understand each other.

## What it does

**Change my Mind** helps to alleviate this problem. Our app is designed to help you find people to discuss a variety of different topics. They can range from silly scenarios to more serious situations. (Eg. Is a Hot Dog a sandwich? Is mass surveillance needed?)

Once you've picked a topic and your opinion of it, you'll be matched with a user with the opposing opinion and put into a chat room. You'll have 10 mins to chat with this person and hopefully discover your similarities and differences in perspective.

After the chat is over, you ask you to rate the maturity level of the person you interacted with. This metric allows us to increase the success rate of future discussions as both users matched will have reputations for maturity.

## How we built it

**Tech Stack**

* Front-end/UI
	+ Flutter and dart
	+ Adobe XD
* Backend
	+ Firebase
		- Cloud Firestore
		- Cloud Storage
		- Firebase Authentication

**Details**

* Front end was built after developing UI mockups/designs
* Heavy use of advanced widgets and animations throughout the app
* Creation of multiple widgets that are reused around the app
* Backend uses gmail authentication with firebase.
* Topics for debate are uploaded using node.js to cloud firestore and are displayed in the app using specific firebase packages.
* Images are stored in firebase storage to keep the source files together.

## Challenges we ran into

* Initially connecting Firebase to the front-end
* Managing state while implementing multiple complicated animations
* Designing backend and mapping users with each other and allowing them to chat.

## Accomplishments that we're proud of

* The user interface we made and animations on the screens
* Sign up and login using Firebase Authentication
* Saving user info into Firestore and storing images in Firebase storage
* Creation of beautiful widgets.

## What we're learned

* Deeper dive into State Management in flutter
* How to make UI/UX with fonts and colour palates
* Learned how to use Cloud functions in Google Cloud Platform
* Built on top of our knowledge of Firestore.

## What's next for Change My Mind

* More topics and User settings
* Implementing ML to match users based on maturity and other metrics
* Potential Monetization of the app, premium analysis on user conversations
* Clean up the Coooooode! Better implementation of state management specifically implementation of provide or BLOC.
## Inspiration

Our inspiration was to look at the world of gaming in a *different* way, little did we know that we would literally be looking at it in a **different** way. We inspired to build a real time engine that would allow for the quick development of keyboard games.

## What it does

Allows users to use custom built libraries to quickly set up player objects, instances and keyboard program environments on a local server that can support multiple threads and multiple game instances. We built multiple games using our engine to demonstrate its scalability.

## How we built it

The server was built using Java and the front end was built using Visual C++. The server includes customizable objects and classes that can easily be modified to create a wide array of products. All of the server creation/game lobbies/multi threading/real time is handled by the engine. The front end engine created in C++ creates a 16x6 grid on the Corsair keyboards, allocates values to keys, registers keys and pre defined functions for easy LED manipulation. The front end engine provides the base template for easy manipulation and fast development of programs on the keyboard.

## Challenges we ran into

Our unique selling proposition was the ability to use our engine to create real time programs/games. Creating this involved many challenges primarily surrounding latency and packet loss. Due to the fact that our engine was expected to allow every keyboard playing in a lobby to reflect the state of every other place, and update the LED UI without delay, this required a low latency which became a problem using 1and1 servers located in the UK leading to the response time with different keyboards increasing up to a few seconds.

## Accomplishments that we're proud of

* Low latency
* Good Syncronization
* Full multiplayer support
* Full game library expansion support
* Creative use of limited hardware
* Multithreading support (Ability to create an infinite number of game rooms)

## What we learned

* Group Version Control
* Planning & organization
* Use of Corsair Gaming SDK
* Always comment, commit and save working versions of code!