# 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)**으로 간주한다.