This is an old revision of the document!
Table of Contents
Fluid Ardule 작업 내역 보고서 (2026-03-27)
1. 개요
본 문서는 2026년 3월 27일 기준 Fluid Ardule 시스템의 개발 및 안정화 작업 내역을 정리한 것이다. 최종 결과물은 다음 두 파일로 구성된다.
- 0j_uno_260327_power_ack_statefix_v2.ino
- 028j_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
동작 흐름:
- DAC 미연결 → WAIT_AUDIO
- DAC 연결 → FluidSynth 실행
- MIDI 미연결 → WAIT_MIDI
- 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)으로 간주한다.
