User Tools

Site Tools


fluidcanvas_r2pi:fluid_ardule_dev_log_2026-03-27

Fluid Ardule 작업 내역 보고서 (2026

-03-27)

1. 개요

본 문서는 2026년 3월 27일 기준 Fluid Ardule 시스템의 개발 및 안정화 작업 내역을 정리한 것이다. 최종 결과물은 다음 두 파일로 구성된다.

  • 0k_uno_260327_power_ack_statefix_Fmacro.ino
  • 028k_fluidardule_260327_state_display_power_ack_full_v2.py

본 작업의 핵심 목표는 다음과 같다.

  • 사운드폰트 선택 기능 구현
  • DAC 및 MIDI 장치 상태 기반 동작 안정화
  • UNO 기반 전원 제어(HALT/REBOOT) 신뢰성 확보
  • 시스템 상태 표시(UI) 개선


2. 시스템 구성

2.1 하드웨어 구성

  • Raspberry Pi 3B
  • Arduino UNO (1602 LCD Keypad Shield)
  • USB DAC (예: Mackie Onyx Producer 2-2)
  • USB MIDI Keyboard

2.2 소프트웨어 구성

  • FluidSynth (사운드 엔진)
  • Python 기반 상태 관리 및 제어 스크립트
  • Arduino 펌웨어 (UI 및 전원 제어)

3. 주요 기능 구현

3.1 사운드폰트 선택 기능

다음과 같은 사운드폰트 리스트를 지원한다.

  • Salamander C5 Light (SalC5)
  • GeneralUser GS (GUserGS)
  • FluidR3 GM (FluidR3)

기능 특징: - Python → UNO로 SFLIST 전송 - UNO에서 메뉴 기반 선택 가능 - 선택 즉시 FluidSynth 재시작 - 현재 선택 상태 LCD 표시


3.2 상태 기반 동작 (State Machine)

주요 상태: - INIT - WAIT_AUDIO - WAIT_MIDI - READY

동작 흐름:

  1. DAC 미연결 → WAIT_AUDIO
  2. DAC 연결 → FluidSynth 실행
  3. MIDI 미연결 → WAIT_MIDI
  4. MIDI 연결 → READY

특징: - 장치 연결/해제 이벤트에 따라 상태 자동 전이 - FluidSynth 자동 시작/종료 - UNO LCD에 상태 반영


3.3 LCD 상태 표시 개선

표시 항목: - Audio: OK / — - MIDI: OK / — - SF: 현재 사운드폰트 - V: 볼륨 값

개선 사항: - 초기화 상태 명확화 (Initializing…) - 장치 미연결 시 명확한 표시 - READY 상태에서 전체 정보 표시


3.4 UNO 전원 제어 기능

SELECT 버튼 long press 기반 기능:

  • HALT (전원 종료)
  • REBOOT (재부팅)

구현 특징: - 메뉴 기반 선택 (No Halt / Reboot) - Python과 ACK 기반 통신 - 중복 명령 방지 - 재시도 로직 포함


3.5 전원 제어 신뢰성 개선

문제: - 기존에는 HALT/REBOOT 명령이 누락되는 경우 존재

해결: - ACK 기반 프로토콜 도입 - Python ↔ UNO 양방향 확인 - 재전송 로직 추가

결과: - 전원 제어 동작 안정화


3.6 UNO 재연결 처리

문제: - DAC 탈착 시 UNO 시리얼 재연결 발생

해결: - UNO_READY 이벤트 처리 - Python에서 전체 상태 재전송

재동기화 항목: - SFLIST - SF - VOLUME - DAC 상태 - MIDI 상태


4. 테스트 결과

4.1 장치 연결 순서 테스트

  • DAC → MIDI
  • MIDI → DAC
  • 동시 연결

결과: - 모든 경우에서 정상 상태 진입

4.2 장치 재삽입 테스트

  • DAC 제거 후 재연결
  • MIDI 제거 후 재연결

결과: - 상태 정상 복구 - FluidSynth 자동 재시작

4.3 전원 제어 테스트

  • HALT
  • REBOOT

결과: - 안정적으로 동작


5. 남은 이슈 및 향후 개선

5.1 전원 안정성

  • DAC 연결 시 UNO 리셋 가능성 존재
  • 원인: USB 전원 변동

개선 방향: - 유전원 USB 허브 사용 - 별도 5V 안정화

5.2 상태 머신 리팩토링

  • 현재는 이벤트 기반 보강 구조
  • 향후 완전한 상태 머신 재설계 가능

6. 결론

본 작업을 통해 Fluid Ardule 시스템은 다음과 같은 수준에 도달하였다.

  • 실사용 가능한 안정성 확보
  • UI 및 상태 표시 완성도 향상
  • 전원 제어 기능 신뢰성 확보
  • 사운드폰트 선택 기능 구현

2026년 3월 27일 기준으로 본 버전을 최종 안정 버전(Stable Build)으로 간주한다.

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