FaderFrame은 Rust로 만든 멀티트랙 녹음·편집·믹싱·마스터링 프로그램이다. Linux와 Wayland를 우선 지원하고 GTK 4를 사용하며, 같은 코드로 Windows와 macOS용 빌드도 제공한다. 현재 버전은 0.23.0이며 개발이 진행 중이다. 제작자는 작동하는 DAW의 대부분을 구현했다고 설명하며, 남은 작업은 아키텍처 문서에 정리했다. 프로젝트 저장소는 GitHub에서 확인할 수 있다.

0.23에서는 편집기와 녹음·믹싱·오디오 설정이 바뀌었다. 배열기(Arranger)에 트랙 간 복사·잘라내기·붙여넣기, 전체 선택, 슬립 편집, 객체 스냅 가이드, 폴더 버스, 스크래치 패드가 추가됐다. 재생 중 루프를 옮기거나 크기를 바꿔도 끊기지 않도록 했고, 테이크 취소와 취소 후 재녹음 단축키도 마련했다. 믹서에는 인스펙터(F11), 채널 개요, 완성된 큐 믹스 기능이 추가됐다.

렌더링 뒤에는 실제로 기록된 파일을 측정한 보고서가 나온다. 파일을 덮어쓸 때는 확인을 요청하며, 새 파일이 완성된 뒤에만 기존 파일을 교체한다. 오디오 설정에는 장치, 샘플 레이트, 버퍼, 채널, 지연 시간 항목이 들어갔다. 오디오 시스템이 지원하는 경우 버퍼 변경을 실행 중에 적용하고, 장치 연결이 끊겼다가 돌아왔을 때 복구하며, 녹음 위치에는 장치의 실제 지연 시간을 반영한다. 그 밖에 플러그인 즐겨찾기, 신스 프리셋 33개 추가, 충돌 보고서, 새 테마 Lumen이 포함됐다. 내장 장치의 공장 프리셋은 모두 470개다.

기능과 이용 조건

FaderFrame은 오디오·MIDI 편집, 가상 악기, 자동화, CLAP·VST3 플러그인 호스팅을 지원한다. Linux에서는 LV2, macOS에서는 Audio Units도 지원한다. 라우팅 그래프에는 버스, 보조 전송, 폴더 버스, 사이드체인이 있으며, 멀티코어 실시간 오디오 처리와 플러그인 지연 보정을 제공한다고 프로젝트는 설명한다. 아날로그 콘솔 스타일 믹서, 모니터링용 큐 믹스, 서라운드와 객체 기반 오디오, 영상 작업, 마스터링 미터, 앨범 납품 기능도 갖췄다.

편집 기능에는 파형·MIDI 클립, 스냅, 트랜지언트 감지, 오디오 워핑, 양자화, 휴머나이즈, 피치 편집, 오디오에서 MIDI 추출, 음성 전사, 악보 작성, 스펙트럼 편집이 포함된다. 클립 런처와 라이브 쇼용 세트리스트, MIDI 동기화와 컨트롤 표면도 지원한다. 기능별 조작법은 저장소의 사용 설명과 화면 예시에 나와 있다.

오디오 백엔드는 Linux에서 PipeWire, JACK, ALSA, Windows에서 WASAPI와 선택 기능인 ASIO, macOS에서 CoreAudio를 지원한다. 샘플 레이트는 44.1~192kHz, 버퍼 크기는 16~8192프레임 범위다. PipeWire 또는 JACK을 쓰면 두 번째 장치를 입력이나 출력으로 추가할 수 있다. 오디오 가져오기는 WAV, AIFF, CAF, FLAC, MP3, Ogg Vorbis, AAC/M4A, ALAC 형식을 지원한다.

음성·가사 전사에는 FaderFrame 안에서 실행되는 OpenAI의 Whisper를 사용한다. 모델은 290MB이며, Audio → Download Speech Model에서 한 번 내려받는다. GPU 그리기는 선택 사항이다. 프로젝트에 따르면 마스터링 도구의 표시 속도는 GPU 그리기 적용 시 초당 26프레임에서 55프레임으로 바뀌었으며, Linux에서는 dmabuf, Windows에서는 공유 D3D12 텍스처로 프레임을 전달한다. 이 수치는 프로젝트가 제시한 설명이다.

설치와 실행

소스 빌드에는 Rust 1.92 이상, GTK 4.14 이상, GStreamer와 pkg-config가 필요하다. Linux에서는 JACK, ALSA, PipeWire 개발 파일과 libclang도 필요하다. 자세한 배포판별 패키지 목록과 플랫폼별 패키지 제작 절차는 빌드 안내와 패키지 안내를 참조한다. Linux용 패키지는 휴대용 tarball과 Flatpak, macOS용은 DMG, Windows용은 설치 프로그램과 휴대용 ZIP으로 제공하도록 구성돼 있다.

기본 빌드와 데모 실행 명령은 다음과 같다.

text
cargo build --release
cargo run --release -p faderframe-app -- --demo # starts with the demo session

실행 파일은 target/release/faderframe이다. 주요 인수는 --backend auto|pipewire|jack|system|asio|dummy, --sample-rate HZ, --buffer-size FRAMES, --threads N, --empty, --demo, --import FILE이며, 마지막에 프로젝트 경로를 지정할 수 있다. --empty나 --demo, 프로젝트 경로를 지정하지 않으면 설정의 Preferences → General → On start-up에 따라 마지막 프로젝트를 연다. system은 Linux에서 ALSA, Windows에서 WASAPI, macOS에서 CoreAudio를 가리킨다.

Windows에서 ASIO를 빌드하려면 선택 기능을 켠다.

text
cargo build --release --features faderframe-app/asio

ASIO SDK는 asio-sys가 내려받거나 CPAL_ASIO_DIR에서 가져온다. bindgen에는 LLVM이 필요하다. 이 빌드에는 Steinberg의 독점 라이선스 또는 GPLv3가 적용되므로 기본 빌드에는 ASIO가 포함되지 않는다.

macOS 앱은 임시 서명만 되어 있고 공증되지 않았다. macOS 15 이상에서는 처음 실행을 시도한 뒤 System Settings → Privacy & Security → Open Anyway에서 허용할 수 있다. 이전 버전에서는 앱을 우클릭해 Open을 선택한다. 또는 다음 명령으로 다운로드 격리 속성을 지울 수 있다.

text
xattr -dr com.apple.quarantine /Applications/FaderFrame.app

Windows 설치 프로그램과 ZIP도 서명되지 않았다. SmartScreen이 막으면 More info → Run anyway를 선택한다. 휴대용 모드에서는 프로그램 옆의 FaderFrame Data 폴더에 설정, 플러그인 캐시, 프리셋과 미저장 프로젝트 녹음 등을 저장한다. 영상 프록시와 프레임 인덱스는 용량 때문에 컴퓨터의 캐시 폴더에 저장된다.

성능·상태와 자료

프로젝트 저장소에는 68개 크레이트와 2,100개가 넘는 테스트가 있다고 적혀 있다. 이 가운데 약 60개는 선택 실행 테스트이며, 설치된 플러그인·모델·MIDI 또는 오디오 하드웨어가 필요하거나 속도를 측정한다. 멀티코어 엔진의 출력은 단일 스레드 처리와 비트 단위로 같다고 프로젝트는 설명한다. 렌더 어헤드는 기본으로 켜져 있으며, 프로젝트가 제시한 예에서는 효과 6개가 있는 트랙 64개를 64프레임 버퍼로 처리할 때 오디오 스레드의 최악 콜백 시간이 1.3ms에서 81µs로 바뀌었다. 이 측정은 프로젝트 설명에 제시된 조건에 한정된다.

개발 검사와 벤치마크 명령은 다음과 같다.

text
cargo fmt --all -- --check
cargo clippy --workspace --all-targets
cargo test --workspace # or: cargo nextest run --workspace
cargo run -p faderframe-bench --release -- --tracks 128 --block 64 --rate 96000
python3 scripts/third_party_licenses.py --check
cargo deny check licenses bans sources

라이선스는 MIT이며, 제3자 구성요소와 라이선스는 THIRD_PARTY_LICENSES.md에 기록돼 있다. 저장소에는 아키텍처 문서, 이슈 신고 페이지와 충돌·멈춤 문제 해결 안내도 있다.

충돌 뒤에는 프로그램을 다시 실행하면 보고서 창이 나타날 수 있다. 보고서와 해당 실행의 로그는 Crash Reports 폴더에 저장된다. Linux 기본 경로는 ~/.local/share/faderframe/Crash Reports이며, Flatpak은 ~/.var/app/io.github.BurningTreeC.FaderFrame/data/faderframe/Crash Reports다. macOS는 ~/Library/Application Support/faderframe/Crash Reports, Windows 설치본은 %LOCALAPPDATA%\faderframe\Crash Reports를 사용한다. 휴대용 설치본과 FADERFRAME_DATA_DIR 설정의 경로는 설치 안내에 설명돼 있다. 프로그램은 최근 충돌 보고서 20개와 세션 로그 8개만 보관하므로 필요한 파일을 일찍 복사해야 한다.

문제를 신고할 때는 같은 시각과 프로세스 번호를 가진 crash-….log와 session-….log, 직전 작업, 문제가 매번 또는 간헐적으로 발생하는지를 함께 보내도록 안내한다. 로그에는 사용자 이름이 포함된 파일 경로와 프로젝트·플러그인 이름이 들어갈 수 있으므로 공개 전에 확인해야 한다. 보고서가 없고 세션 로그만 있으면 운영체제가 프로세스를 종료했을 가능성이 있다. Linux에서는 다음 명령으로 최근 시스템 로그를 저장할 수 있으며, 재부팅했다면 -b 대신 -b -1을 사용한다.

text
journalctl -b --since "15 minutes ago" | grep -i -E 'faderframe|out of memory|oom|killed process|rtkit' > faderframe-system.txt

Linux에서 응답이 멈춘 경우 강제 종료 전에 스레드별 역추적을 저장할 수 있다.

text
gdb -p "$(pgrep -o -x faderframe)" -batch -ex 'thread apply all bt' > faderframe-freeze.txt 2>&1

ptrace: Operation not permitted가 나오면 같은 명령을 sudo와 함께 실행한다. macOS에서는 Activity Monitor에서 FaderFrame을 선택하고 ⋯ → Sample Process를 이용한다. 치명적 신호로 인한 Linux 충돌의 전체 역추적을 얻으려면 systemd-coredump를 사용할 수 있다. Debian·Ubuntu·Linux Mint·LMDE에서는 먼저 설치한다.

text
sudo apt install systemd-coredump

다음 충돌 뒤 최신 덤프 정보를 저장한다.

text
coredumpctl list faderframe # the crashes the system kept
coredumpctl info faderframe > faderframe-coredump.txt # the newest one

더 상세한 로그는 터미널에서 RUST_LOG=debug를 설정해 실행한다. 디버그 로그는 빠르게 커지므로 문제가 다시 발생하면 곧바로 프로그램을 멈춘다.

text
# Linux portable: in the FaderFrame folder
RUST_LOG=debug ./faderframe
# Linux installed
RUST_LOG=debug faderframe
# macOS
RUST_LOG=debug /Applications/FaderFrame.app/Contents/MacOS/FaderFrame

# Windows (PowerShell)
$env:RUST_LOG = "debug"; & "$env:ProgramFiles\FaderFrame\bin\faderframe.exe"

Linux 실시간 오디오 권한과 메모리 잠금 한도는 ulimit -r -l로 확인한다. 실시간 우선순위가 0이면 권한이 없는 상태다. Debian·Ubuntu·Linux Mint·LMDE 등에서는 다음 설정을 추가하고 사용자를 audio 그룹에 넣는다.

text
sudo tee /etc/security/limits.d/95-audio.conf <<'LIMITS'
@audio - rtprio 95
@audio - memlock unlimited
LIMITS
sudo usermod -aG audio "$USER"

Arch Linux에서는 다음을 실행한다.

text
sudo pacman -S realtime-privileges
sudo usermod -aG realtime "$USER"

로그아웃 후 다시 로그인해야 권한이 반영된다. 설정 후 ulimit -r -l은 실시간 우선순위 0 초과와 unlimited 메모리 잠금 한도를 보여야 한다. 실행 중인 프로세스의 한도는 다음 명령으로 확인한다.

text
grep -E 'realtime|locked' /proc/"$(pgrep -o -x faderframe)"/limits

실시간 권한은 프로그램이 시스템의 다른 작업보다 먼저 실행되게 할 수 있어, 실시간 우선순위에서 프로그램이 멈추면 데스크톱도 느려질 수 있다. 프로젝트는 이를 오디오 워크스테이션의 일반적인 절충점으로 설명한다.

문제를 좁힐 때는 오디오 백엔드를 dummy로 바꾸거나, 다른 백엔드·더 큰 버퍼·처리 스레드 한 개·렌더 어헤드 끄기를 시험할 수 있다. 빈 프로젝트는 faderframe --empty로 연다. 그래픽 문제에는 GPU 그리기를 끄는 FADERFRAME_GPU_PAINTER=0, Linux의 GPU 프레임 공유를 끄는 FADERFRAME_GPU_DMABUF=0, Windows의 공유를 끄는 FADERFRAME_GPU_SHARE=0, Linux 영상 복사를 끄는 FADERFRAME_VIDEO_DMABUF=0이 있다. MIDI 하드웨어를 닫으려면 FADERFRAME_NO_MIDI=1을 사용한다. Linux에서는 FADERFRAME_RTKIT=0으로 FaderFrame의 RealtimeKit 요청을 끌 수 있지만 PipeWire 자체의 요청에는 영향을 주지 않는다. FADERFRAME_CPU_LATENCY=0은 지원 시스템에서 CPU가 깊은 절전 상태에 들어가지 않도록 하는 동작을 끈다. 어떤 설정으로 문제가 사라졌는지 신고 내용에 적도록 프로젝트는 요청한다.