summaryrefslogtreecommitdiff
path: root/content/projects/guitar-hero
diff options
context:
space:
mode:
Diffstat (limited to 'content/projects/guitar-hero')
-rw-r--r--content/projects/guitar-hero/index.md69
1 files changed, 69 insertions, 0 deletions
diff --git a/content/projects/guitar-hero/index.md b/content/projects/guitar-hero/index.md
new file mode 100644
index 0000000..4603a4b
--- /dev/null
+++ b/content/projects/guitar-hero/index.md
@@ -0,0 +1,69 @@
+---
+title: "Guitar Hero"
+date: 2023-10-23T23:18:05-04:00
+mermaid: true
+draft: false
+---
+
+One of my University classes tasked me with creating a custom pcb remote as
+well as a GUI software that interfaced with it. I decided to create a *Guitar
+Hero* clone capable of reading files created for the similar project *Clone
+Hero* using C++ and QT.
+
+The goal of this class was to teach Computer Science students about GUI design
+as well as teach electrical engineers about PCB design. Both type of students
+would also get to learn about software and hardware integration. On the
+hardware side, the requirements were quite simple:
+
+- The designed PCB needed to be less then or equal to 10x15cm
+- A minimum of 5 switches were needed
+- A joystick as well as an accelerometer had to get integrated
+- We could choose wether to integrate a 5 segment or a bar graph display
+
+{{<mermaid>}}
+classDiagram
+ Animal <|-- Duck
+ Animal <|-- Fish
+ Animal <|-- Zebra
+ Animal : +int age
+ Animal : +String gender
+ Animal: +isMammal()
+ Animal: +mate()
+ class Duck{
+ +String beakColor
+ +swim()
+ +quack()
+ }
+ class Fish{
+ -int sizeInFeet
+ -canEat()
+ }
+ class Zebra{
+ +bool is_wild
+ +run()
+ }
+{{</mermaid>}}
+
+After a little back and forth with our teachers, we came to an agreement that
+we could configure some of our switches outside the pcb and mount them directly
+to the guitar. This way, the pcb itself could be located at the base of a guitar
+and host the strumming mechanism. We also convinced them it would be best for our
+usecase to also mount the accelerometer on a guitar shaft and configure it as some
+sort of trigger for a bonus streak. In the end, this is what we came up with:
+
+<!-- Integration https://youtu.be/FKOd6nEcEC8 -->
+<!-- Song https://youtu.be/G2GX4o7dhNY -->
+<!-- Accelerometer https://youtu.be/xl-ZMSSMalw -->
+<!-- Bar Graph https://youtu.be/WZeAdRM9tGo -->
+<!-- Strumming https://youtu.be/TxubEPih7yw -->
+<!-- Joystick https://youtu.be/q-Qc5jLBBzU -->
+<!-- Demo1 https://youtu.be/c_Gxq5UKYd4 -->
+<!-- Demo2 https://youtu.be/69InfsTlqqA -->
+
+
+On the software side of things, requirements were even more forgiving. All we
+needed was to use the QT C++ library without any QML or QSS. It took very
+little convincing to get my team on board with the *Guitar Hero* clone idea.
+
+
+{{< youtubepl PLGcbRdKslprBkKg2NyGtS4AGuB2Ng_22e >}}