User Tools

Site Tools


fluidcanvas_r2pi:fluid_ardule_dev_log_2026-03-25

Fluid Ardule Development Log

Date

2026-03-25


Overview

오늘은 Fluid Ardule 프로젝트에서 UI 기반 구조 안정화와 상태 동기화 체계 확립을 중심으로 중요한 진전을 이루었다.
특히 Raspberry Pi ↔ Arduino UNO 간의 통신 구조를 실제 운용 가능한 수준으로 끌어올린 것이 핵심 성과이다.


Key Achievements

1. Serial 기반 상태 동기화 구조 확립

  • Pi → UNO로 상태 메시지를 지속적으로 전달
  • LCD에 실시간 상태 반영 구조 완성
  • 주요 상태:
    • SoundFont (SF)
    • Volume (VOL)
    • MIDI 상태
    • DAC 상태

  • Pi가 1초마다 HB 전송
  • UNO에서 일정 시간 미수신 시:
    • Pi not connected 표시
    • LED 상태 변경

👉 결과:

  • Ctrl+C 종료 / 크래시 상황에서도 UI가 정직하게 상태 반영

3. 로그 최적화

  • 기존 문제:
    • HB 로그가 콘솔을 도배
  • 해결:
if line != "HB":
    log(...)

👉 결과:

  • 로그가 “상태 변화 중심”으로 정리됨
  • 디버깅 가독성 크게 향상

4. MIDI 안정성 개선 (Safety Reset)

  • 키보드 연결/해제 시 발생하던 문제:
    • 서스테인 고정 현상
  • 해결:
    • CC64, CC66, CC67 OFF
    • All Notes Off (CC123)
    • Reset Controllers (CC121)

👉 결과:

  • stuck note 문제 해결

5. USB DAC Strict Detection

  • HDMI / 기본 출력 차단
  • 특정 장치만 허용:
    • O22
    • SC-D70
    • USB Audio CODEC

👉 결과:

  • 의도하지 않은 오디오 출력 방지

6. LED 상태 체계 구현

핀맵:

  • D11 → MIDI Activity
  • D12 → PLAY 상태
  • D13 → MODE 상태

동작:

  • Boot / Init / Ready 상태 표시
  • MIDI activity pulse
  • Keyboard disconnect 시 상태 변화

7. 상태 머신 구조 안정화

상태 흐름:

BOOT → WAIT_AUDIO → WAIT_SYNTH → WAIT_MIDI → READY

특징:

  • 각 단계에서 명확한 조건 기반 전이
  • 예외 상황 자동 복귀

8. UNO ↔ Pi 역할 분리 확립

UNO:

  • UI (LCD + Button + LED)
  • 입력 이벤트 생성

Pi:

  • 상태 판단
  • 오디오 / MIDI 제어
  • 시스템 제어

👉 구조적으로 매우 건강한 아키텍처 완성


Design Decisions

1. UI 신뢰성 우선

  • “마지막 상태 유지” 대신
  • “연결 끊김 명확 표시” 선택

2. Heartbeat 유지, 로그 제거

  • 기능 유지
  • 가독성 개선

3. Launcher 미사용

  • 현재는 CLI 기반 실행
  • 디버깅 용이성 우선

Current System Status

현재 시스템은 다음이 가능한 상태:

  • 부팅 후 자동 상태 표시
  • USB DAC 감지 후 FluidSynth 실행
  • MIDI keyboard 자동 연결
  • 볼륨 실시간 제어
  • 연결 끊김 감지 및 UI 반영
  • 안전한 MIDI reset 처리

👉 사실상 사용 가능한 프로토타입 수준 도달


Next Steps

다음 단계에서 진행할 것:

  1. Home UI 완성
    • SF 이름 표시 개선
    • VOL 표시 안정화
  2. Preset 시스템
    • 사용자 설정 저장/불러오기
  3. SoundFont 변경 UI
  4. MIDI routing 확장
    • 외부 모듈 지원

Summary

오늘의 핵심 성과:

  • 통신 안정성 확보
  • UI 신뢰성 확보
  • 로그 품질 개선
  • MIDI 안정성 확보

👉 프로젝트가 “실험 단계”에서
👉 “제품 구조 단계”로 넘어간 중요한 전환점


End of document

fluidcanvas_r2pi/fluid_ardule_dev_log_2026-03-25.txt · Last modified: by hyjeong