Claude Code를 사용하여 1994년 당시의 소리를 재현하는 Roland SC-55 에뮬레이터 프런트엔드 구축
요약
Claude Code를 활용하여 Roland SC-55 하드웨어의 사이클 정확한 에뮬레이션을 지원하는 JUCE 기반 독립형 앱을 구축했습니다. MIDI 파일 재생, 라이브 입력, 설정 유지 기능을 포함하며 실제 하드웨어의 동작 방식을 정밀하게 재현합니다.
핵심 포인트
- Claude Code를 사용하여 기존 에뮬레이터 코어 기반의 프런트엔드 앱 개발
- Roland SC-55의 사이클 정확한 에뮬레이션 및 JUCE 프레임워크 활용
- MIDI 파일 플레이어, 라이브 입력, 설정 저장 기능 구현
- 멀티스레드 및 락 프리 FIFO를 통한 안정적인 오디오 처리
- 다양한 Roland 사운드 모듈 모델 지원
저장소(Repo)는 여기 있습니다: https://github.com/depixeled-chris/nuked-sc55-juce 한두 달 전에 Claude를 사용하여 이것을 만들었지만 실제로 공유한 적은 없었습니다. DOS 게임 환경에서 자라지 않은 분들을 위한 배경 설명입니다: MIDI 파일은 오디오가 아닙니다. 그것은 당신이 소유한 어떤 신시사이저(Synth)를 위한 명령어입니다. 대부분의 클래식 게임들(Doom, Monkey Island, Duke Nukem, Warcraft 2)은 Roland SC-55를 기반으로 작성되었습니다. 따라서 오늘날 Windows 기본 신시사이저를 통해 이 게임들을 재생하면, 당신이 좋게 기억하던 음악의 얇고 잘못된 버전을 듣게 됩니다. Nuked-SC55는 사운드 문제를 해결합니다. 이것은 실제 SC-55 하드웨어의 사이클 정확한 에뮬레이션(Cycle-accurate emulation)입니다 — nukeykt가 CPU와 DSP를 역공학(Reverse-engineered)했습니다. Claude는 jcmoyer의 유지 관리되는 포크(Fork)를 기반으로 이것을 구축했습니다. 기존에 부족했던 점은 단순히 MIDI 파일을 열고 재생 버튼을 누를 수 있는 방법이었습니다. 이것이 바로 그 기능을 추가합니다: MIDI 파일 플레이어, 라이브 MIDI 입력, 그리고 재시작 후에도 유지되는 설정 기능을 갖춘 에뮬레이터 코어 기반의 JUCE 독립형(Standalone) 앱입니다. 에뮬레이터는 실제 하드웨어 DAC 속도(mk2의 경우 66207 Hz, mk1의 경우 64000 Hz)로 실행되는데, 이는 칩이 실제로 수행하던 방식이기 때문이며, 그 후 당신의 오디오 인터페이스가 원하는 속도로 리샘플링(Resamples)됩니다. 총 세 개의 스레드(Thread)로 구성됩니다: MIDI 입력, 에뮬레이터, 오디오 콜백(Audio callback)이며, 락 프리 FIFO(Lock-free FIFOs)로 연결되어 에뮬레이션이 오디오 장치를 멈추게 하지 않습니다. MIDI 파서(Parser)는 의도적으로 관대하게 설계되었습니다. 왜냐하면 실제 30년 된 파일들은 엄격한 파서가 처리하지 못하는 쓰레기 바이트(Junk bytes)로 가득 차 있기 때문입니다. 주의사항: 인터넷의 아카이브(ARCHIVE)에서 비교적 쉽게 구할 수 있는 원본 Roland 펌웨어의 ROM 덤프가 필요하지만, 저장소에는 포함되어 있지 않습니다. 그것들은 저작권이 있기 때문에 제가 배포할 수 없으며, 에뮬레이터 코어의 라이선스는 상업적 이용을 금지하므로 사전 빌드된 바이너리(Prebuilt binaries)도 제공되지 않습니다. Claude는 코드베이스를 가져와서 당신에게 필요한 것을 얻어내는 능력이 충분하므로 이는 문제가 되지 않을 것입니다. SC-55, SC-55mk2, SC-55st, SC-155, CM-300/SCC-1, SCB-55, JV-880 및 기타 몇 가지 모델을 지원합니다. 현재는 독립형(Standalone)으로만 제공됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 r/ClaudeAI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기