## Inspiration

Learning a new instrument is hard. Inspired by games like Guitar Hero, we wanted to make a fun, interactive music experience but also have it translate to actually learning a new instrument. We chose the violin because most of our team members had never touched a violin prior to this hackathon. Learning the violin is also particularly difficult because there are no frets, such as those on a guitar, to help guide finger placement.

## What it does

Fretless is a modular attachment that can be placed onto any instrument. Users can upload any MIDI file through our GUI. The file is converted to music numbers and sent to the Arduino, which then lights up LEDs at locations corresponding to where the user needs to press down on the string.

## How we built it

Fretless is composed to software and hardware components.
We used a python MIDI library to convert MIDI files into music numbers readable by the Arduino. Then, we wrote an Arduino script to match the music numbers to the corresponding light. Because we were limited by the space on the violin board, we could not put four rows of LEDs (one for each string). Thus, we implemented logic to color code the lights to indicate which string to press.

## Challenges we ran into

One of the challenges we faced is that only one member on our team knew how to play the violin. Thus, the rest of the team was essentially learning how to play the violin and coding the functionalities and configuring the electronics of Fretless at the same time.
Another challenge we ran into was the lack of hardware available. In particular, we weren’t able to check out as many LEDs as we needed. We also needed some components, like a female DC power adapter, that were not present at the hardware booth. And so, we had limited resources and had to make do with what we had.

## Accomplishments that we're proud of

We’re really happy that we were able to create a working prototype together as a team. Some of the members on the team are also really proud of the fact that they are now able to play Ode to Joy on the violin!

## What we learned

Do not crimp lights too hard.
Things are always harder than they seem to be.
Ode to Joy on the violin :)

## What's next for Fretless

We can make the LEDs smaller and less intrusive on the violin, ideally a LED pad that covers the entire fingerboard. Also, we would like to expand the software to include more instruments, such as cello, bass, guitar, and pipa. Finally, we would like to corporate a PDF sheet music to MIDI file converter so that people can learn to play a wider range of songs.
## Inspiration

The intention behind NintAudio is, aside from recreating the feel of old arcade games, to offer new ways of exploring gaming. It was actually Xavier who came up with the idea, being interested in the accessibility of browsers; the question that naturally came next was "but what about video games?".

This project is aimed at:

* Visually impaired people, so they can share our delight when playing video games
* Developers, to raise their awareness of the condition of visually-impaired people in the digital era
* Everybody, to realize how much we rely on sight and how difficult it is to understand an environment with only sound.

## What it does

NintAudio is a collection of retro-inspired games relying entirely on sounds: Pong, Atari Breakout, and Whac-a-Mole.

## Challenges

Developing the logic and sound design with very little visual cues was quite the task. We had to work around our habitual use of sight for even very simple UX design.

Rust is very new, both to the community and to our team: although documentation is available, the use of this language and many features still under development was quite ambitious. Implementation for all libraries isn't guaranteed across operating systems, and there are bugs left to be resolved with some of them (particularly the .mp3 format and SineWave stuttering with rodio). We're expecting to send patches upstream in the near future to fix the bugs with rodio.

## Why Rust?

Real-time audio games meant we needed an absolutely minimum latency. This meant a garbage collector was definitely a no-go, as even a 50ms delay for the garbage collector to perform its duty would destroy the game play. Rust is a bare metal programming language, so it was a perfect fit, but its memory safety guarantee meant that we were safe from the toughest bugs, which was even more important given the experience level of the team members.

Three out of four teammates were new to coding. We felt like the advanced compiler would give us a greater confidence on the code we produced, even though we were dealing with low-level bindings.

## What's next for NintAudio

Unfortunately, as of now, the player must type the name of the game into a terminal in order to play -- adding a voice user interface would likely make the experience more immersive and overall more user-friendly. More games are also to be added.

## Support

**MacOS** No gamepad support.

**Windows with ANSI terms** No support.

*Tested on: Linux (Arch & Ubuntu), Windows 10

Should work on: MacOS, Windows XP & up, Linuses with ALSA, BSDs, Drangonfly*
## Inspiration

Our inspiration for the project stems from our experience with elderly and visually impaired people, and understanding that there is an imminent need for a solution that integrates AI to bring a new level of convenience and safety to modern day navigation tools.

## What it does

IntelliCane firstly employs an ultrasonic sensor to identify any object, person, or thing within a 2 meter range and when that happens, a piezo buzzer alarm alerts the user. Simultaneously, a camera identifies the object infront of the user and provides them with voice feedback identifying what is infront of them.

## How we built it

The project firstly employs an ultrasonic sensor to identify an object, person or thing close by. Then the piezo buzzer is turned on and alerts the user. Then the Picamera that is on the raspberrypi 5 identifies the object. We have employed a CNN algorithm to train the data and improve the accuracy of identifying the objects. From there this data is transferred to a text-to-speech function which provides voice feedback describing the object infront of them. The project was built on YOLO V8 platform.

## Challenges we ran into

We ran into multiple problems during our project. For instance, we initially tried to used tensorflow, however due to the incompatibility of our version of python with the raspberrypi 5, we switched to the YOLO V8 Platform.

## Accomplishments that we're proud of

There are many accomplishments we are proud of, such as successfully creating an the ultrasonic-piezo buzzer system for the arduino, and successfully mounting everything onto the PVC Pipe. However, we are most proud of developing a CNN algorithm that accurately identifies objects and provides voice feedback identifying the object that is infront of the user.

## What we learned

We learned more about developing ML algorithms and became more proficient with the raspberrypi IDE.

## What's next for IntelliCane

Next steps for IntelliCane include integrating GPS modules and Bluetooth modules to add another level of convenience to navigation tools.