This is our Updated Gantt Chart!
This is our Interim Demo Slides!

Carnegie Mellon ECE Capstone, Spring 2026 | Gene Chang, Chris Oh, Simon Lee
This week I focused on advancing the hardware and interaction system of LumiKey in preparation for the upcoming demo. Building on the existing software pipeline, the goal this week was to improve real-time responsiveness and enable meaningful user interaction through key detection and visual feedback.
LED Timing and Visualization Improvements
A major focus this week was implementing LED fading behavior to better represent timing and note progression. Instead of simple on/off signals, LEDs now fade in a controlled manner to indicate when a note is approaching, improving the user’s ability to anticipate timing.
This enhancement makes the system more intuitive during playback and aligns the visual guidance more closely with musical rhythm. The fading behavior was tested alongside the existing event stream to ensure it remains synchronized with playback.
FSR Integration and Multiplexer Expansion
Another key area of progress was expanding key detection using FSR strips integrated through multiplexers. By incorporating the multiplexer, the system can now handle input from multiple keys while minimizing the number of required GPIO pins on the ESP32.
This setup allows for scalable input sensing across a larger range of keys. Initial testing confirmed that multiple FSR inputs can be read and processed, enabling the system to detect user interaction across different notes.
Some challenges remain with signal consistency, including occasional false positives or missed presses, likely due to noise or variability in pressure sensing. To address this, I began refining threshold detection and improving signal stability, which will continue to be optimized.
Interaction Modes Implementation
This week I also implemented multiple interaction modes to support different learning experiences:
Basic Mode: The system waits for the user to press the correct key before advancing, enabling step-by-step learning.
Beat Mode: Notes are aligned with a consistent tempo, allowing users to play along with timing guidance.
Score System: A scoring mechanism was introduced to track user performance based on accuracy.
These modes allow the system to move beyond passive visualization and support active learning through user input.
Integration with Event System
All hardware interactions, including LED output and FSR input detection, were integrated with the existing note event system. This ensures that both visualization and user input are driven by the same underlying data, maintaining synchronization between software and hardware components.
This unified approach reduces the risk of timing drift and simplifies debugging and further development.
Schedule
The project remains on schedule and is progressing toward a fully integrated demo. This week’s work focused on hardware functionality and interaction, aligning with the planned transition to a complete interactive system.
Deliverables for Next Week
Next week I will focus on final testing and supporting the live demo. This includes improving the reliability of FSR input detection, further tuning LED timing behavior, and resolving any integration issues between hardware and the software pipeline.
I will also continue refining interaction modes and ensuring that the system provides a smooth and intuitive user experience during demonstrations.
Project Risks and Mitigation
A key focus this week was reducing risks related to system stability during the upcoming demo. One major risk is inconsistent pipeline behavior across different inputs, such as skewed images, uneven lighting, or PDFs. This is being managed by refining preprocessing, selecting reliable demo inputs, and ensuring consistent outputs across repeated runs. Another risk is timing synchronization between playback, visualization, and hardware output. To address this, both playback and visualization continue to be driven from the same event stream, avoiding separate timing systems and reducing the chance of drift. Pipeline robustness is also a concern when handling edge cases like missing OMR outputs or malformed MusicXML. This was mitigated by improving error handling so the system clearly identifies which stage fails instead of failing silently. As hardware integration approaches, there is also a risk of mismatches between software-generated events and ESP32 expectations, which is being addressed by keeping the event format consistent and validating outputs before use.
On the hardware side, a key risk is unreliable input detection from the FSR strips, including missed key presses or false trigger signals. These issues may arise from electrical noise, signal interference, or variability in pressure sensing. This is being mitigated by improving signal stability through better wiring organization, consistent grounding, and isolating sensor lines where possible. In addition, software-level filtering and threshold calibration are being applied to distinguish intentional key presses from noise, ensuring more consistent and reliable input detection across all keys.
Design Changes
Design changes this week focused on improving stability and usability rather than adding new features. The preprocessing and scan pipeline were refined to handle a wider range of inputs more consistently, especially under varying lighting and image conditions. Error handling was improved across the pipeline to provide clearer feedback when failures occur. The playback and visualization components were also tested and slightly adjusted to ensure they remain synchronized and stable when running together. These changes improve overall system reliability without increasing complexity.
No changes made in the hardware components.
Schedule Update
The project remains on schedule and is ready for the upcoming demo. This week’s work focused on stabilization and integration, which aligns with the planned transition from development to demonstration and system validation.
Demonstrated Progress
The team successfully stabilized the full software pipeline for demo use. The system can now reliably process sheet music inputs, run the OMR pipeline, generate note events, and pass them into the playback and visualization system. Playback and visualization now operate together more consistently, allowing users to follow musical progress during playback. Improved error handling ensures that issues can be quickly identified and addressed during live demonstrations, resulting in a more reliable and demo-ready system.
This week I focused on preparing the LumiKey system for the upcoming demo by improving the stability and reliability of the full software pipeline. Building on last week’s work validating the end-to-end flow, the goal this week was to make sure the system behaves consistently under demo conditions and handles errors more gracefully.
Pipeline Stability Improvements
A major focus this week was improving the consistency of the full pipeline: image/PDF input → preprocessing → OMR → MusicXML cleaning → conversion → note events. While the pipeline was already functional, I worked on making sure it produces stable outputs across repeated runs and different input types.
I refined preprocessing parameters to better handle difficult cases such as skewed images, uneven lighting, and PDFs. I also made adjustments to ensure that intermediate outputs passed between stages are consistently formatted, which helped reduce unexpected parsing or conversion issues. These changes improved the overall reliability of the pipeline when tested on the benchmark dataset.
Debugging and Error Handling
To better prepare for demo scenarios, I improved error handling throughout the pipeline. The system now clearly reports which stage fails (preprocessing, OMR, MusicXML cleaning, or parsing) instead of failing silently. This makes it easier to diagnose issues quickly during live demonstrations.
I also addressed several edge cases discovered during testing, including:
By handling these cases explicitly, the system is now more robust and less likely to crash or produce confusing results during the demo.
End-to-End Testing for Demo Inputs
I continued testing the pipeline using the benchmark dataset and focused on selecting a subset of reliable demo inputs. These inputs were chosen based on consistent performance across preprocessing, OMR, and conversion stages.
I also verified that the outputs from the pipeline align with the expected structure of note events, ensuring they can be used directly by the playback system and hardware components.
Integration Readiness
In preparation for demo integration, I ensured that the event output format remains consistent and compatible with the existing playback and hardware systems. This helps ensure smooth communication between the software pipeline and the ESP32 during the demo.
I also worked with the team to verify that the full flow—from sheet music input to event generation—can be demonstrated clearly and reliably.
Schedule
The project remains on schedule and ready for the upcoming demo. The software pipeline is now stable enough to support live demonstrations, and remaining work is focused on final integration and polishing.
Deliverables for Next Week (Demo Execution and Final Refinements)
Next week I will focus on supporting the demo on Monday and Wednesday and addressing any issues that arise during live testing. After the demo, I plan to continue refining the pipeline based on observed edge cases, especially improving robustness for more diverse inputs.
I will also continue working with the team on deeper integration with the hardware system and identifying any improvements needed for timing, accuracy, or user experience as we move toward the final system.
This week I focused on integrating the software and hardware components of the system and stabilizing the end-to-end pipeline. The main effort involved connecting the playback and visualization software to the hardware layer, debugging integration issues, and resolving errors encountered during real-world execution. In parallel, I worked on fully integrating the OMR pipeline with the conversion layer and began addressing a Java-side error affecting OMR processing.
Software and Hardware Integration
OMR and Conversion Layer Integration
Schedule
I am currently on schedule. While integration exposed several failures and errors, this work is expected at this stage and is helping stabilize the system. Progress continues toward a fully integrated end-to-end pipeline.
Deliverables for Next Week
This week primarily focused on continued development and debugging of the force-sensitive resistor (FSR) input system for the LumiKeys project. Progress was centered on stabilizing the detection of key presses across a smaller subset of the keyboard, specifically five keys, before scaling to the full system.
FSR Integration and Debugging
System Stability and Validation
Schedule
I am slightly behind the ideal timeline due to extended debugging of the FSR inputs, but this step is critical to ensure reliability before scaling to the full keyboard system.
Deliverables for Next Week
This week I focused on validating and stabilizing the full end-to-end LumiKey software pipeline. Building on last week’s work where the Scan Layer was integrated with the OMR engine and connected to the existing Conversion Layer, the goal this week was to ensure that the entire flow – from image or PDF input to note event generation – works reliably and is ready for the interim demo.
End-to-End Pipeline Validation
A major focus this week was testing the complete pipeline: image/PDF input → preprocessing → OMR → MusicXML cleaning → conversion → note events. Since the Conversion Layer was already implemented by another team member, my work focused on verifying that the Scan Layer output integrates correctly and consistently produces valid inputs for downstream processing.
To support this, I created a small benchmark dataset of sheet music inputs, including clean images, skewed photos, shadowed images, and PDFs. This allowed me to test how well the system performs across realistic conditions. I also began evaluating outputs based on whether the pipeline succeeds, whether parsing errors occur, and whether the generated events are reasonable in terms of structure and count.
Evaluation and Debugging Improvements
I added a simple evaluation workflow that runs the pipeline across the benchmark set and reports results such as success/failure and basic output consistency. This helped identify weak points in preprocessing and OMR where certain inputs fail or produce inconsistent results.
In addition, I improved debugging visibility by ensuring that failures are tied to specific stages of the pipeline. Instead of failing silently, the system now makes it clearer whether an issue occurs during preprocessing, OMR execution, MusicXML cleaning, or parsing. This makes it much easier to diagnose problems and iterate quickly.
Additional Testing and Edge Case Handling
I added several targeted tests to improve robustness of the Scan Layer and pipeline. These include handling invalid inputs such as corrupted images, malformed PDFs, missing OMR outputs, and invalid MusicXML files. These tests ensure that the system fails in a predictable and controlled way rather than crashing or producing unusable results.
The goal of this work is to make the pipeline stable enough for demo conditions, where unexpected inputs or edge cases may occur.
Preparation for Hardware Integration
With the software pipeline now functioning end-to-end, I began preparing for integration with the hardware system. This includes defining and documenting the event format generated by the pipeline, which will be used to communicate note timing and pitch information to the ESP32.
This step is important to ensure that the software output aligns with the expectations of the embedded system, particularly for timing accuracy and LED control. It also sets up the next phase of development, where software-generated note events will drive real hardware behavior.
Schedule
The project remains on schedule and aligned with the interim demo timeline. According to the planned system pipeline and milestones , the current focus on integration and validation is consistent with reaching an MVP before the demo. The full software pipeline is now operational, and remaining work is focused on stability and hardware integration.
Deliverables for Next Week (Interim Demo Preparation)
Next week I will focus on final preparation for the interim demo. This includes refining the pipeline to ensure consistent behavior on demo inputs, improving error handling for a smoother user experience, and working with the team to connect the software output to the ESP32 hardware.
The goal is to demonstrate a complete working system where a user uploads sheet music and receives corresponding LED guidance on the keyboard. I will also continue refining preprocessing and validation steps based on any issues observed during integration testing.
This week I focused on implementing the sheet music visualization component and integrating it with the existing playback pipeline. The main goal was to move the visualizer from a conceptual framework into a functional system that can display musical information in sync with playback.
Sheet Music Visualization Implementation
Playback Integration
Schedule
I am currently on schedule. The sheet music visualizer has moved from a prototype framework to a working implementation, and it is now integrated with the playback pipeline. The project continues to make steady progress toward a cohesive end-to-end system.
Deliverables for Next Week
This week focused mainly on wiring additional FSR strips to the 16-channel analog multiplexer and ensuring that each key press can be individually detected and registered. Currently, I’m encountering an issue where ghost signals appear from other keys. I suspect this may be caused either by the wires being routed too closely together or by a power stability issue. I also reviewed the firmware to determine whether the problem could be mitigated through software.
A significant portion of the week was also spent soldering the LEDs and FSR strips together for the hardware assembly.