콘텐츠로 이동

modernGraphTool이 뭔가요?

오디오 측정 커뮤니티의 눈높이는, 한때 제 몫을 충실히 해낸 도구들이 감당할 수 있는 선을 이미 넘어섰습니다.

modernGraphTool은 최신 웹 기술과 모듈화된 아키텍처 위에 처음부터 새로 작성한 도구입니다. 측정 데이터베이스 운영자와 오디오 애호가를 비롯한 커뮤니티의 요구에 맞춰 함께 진화하도록 설계되었습니다.

CrinGraph는 2019년경 등장한 주파수 응답 곡선 시각화 도구로, 오디오 애호가 커뮤니티에서 사실상 표준으로 자리잡았습니다.

측정값을 불러오고, 곡선을 겹치고, 헤드폰을 비교하는 작업을 단순하면서도 효과적으로 해내며 본래의 역할을 훌륭히 수행했습니다.

squig.link 네트워크의 측정 데이터베이스 대부분은 지금도 CrinGraph나 그 파생 버전을 씁니다. CrinGraph가 FR 데이터 시각화 방식에 남긴 영향은 누구도 부정하기 어렵습니다.

오늘날 ‘CrinGraph’라고 하면 보통 세 가지 코드베이스 중 하나를 가리킵니다. Vanilla CrinGraph는 원조 버전이고, squiglink lab은 squig.link 데이터베이스 대부분이 쓰는 가벼운 파생 버전입니다. PublicGraphTool은 커뮤니티의 추가 기능을 가장 많이 담은 파생 버전이죠.

Vanilla CrinGraphsquiglink labPublicGraphToolmodernGraphTool
코드베이스약 2,500줄 단일 스크립트스크립트 3개, 약 4,100줄번들링 없는 스크립트 40여 개, 약 14,400줄번들링된 TypeScript 컴포넌트
파라메트릭 EQ + AutoEQ—✓✓✓ 실행 취소/다시 실행 지원
EQ A/B 테스트———✓ 이력 및 비교 패널, 누르는 동안만 우회하는 단축키
채널별(L / R) EQ——밸런스 슬라이더만 제공✓ 공통 밴드 + 좌우 개별 밴드
실시간 EQ 미리 듣기—톤 제너레이터✓✓ 오디오 파일, 노이즈, 톤, 사인 스윕
Preference Bound——✓✓ 기본 내장
타겟 커스터마이징——틸트, 저음, 이어 게인, 고음✓ 필터 구성, 프리셋, 타겟별 기본값 설정 가능
인터페이스 언어영어영어영어영어, 한국어, 체코어, 러시아어, 우크라이나어
테마CSS와 JS 직접 수정여러 CSS 파일 직접 수정여러 CSS 파일 직접 수정단일 theme.css + 테마 생성기
설정config.js 직접 수정config.js 직접 수정config.js 직접 수정구조화된 config.js + 설정 편집기, phone_book 편집기
업데이트파일 재업로드파일 재업로드파일 재업로드CDN 모드에서 자동
데이터 형식phone_book.json + FR .txt동일동일동일 — 그대로 호환

아래에서 이 차이들이 실제로 어떤 의미인지 하나씩 살펴봅니다.

CrinGraph 생태계에서 기능은 파생 버전마다 흩어져 있습니다. Preference Bound와 Device PEQ 브리지는 PublicGraphTool에 있고, 대부분의 사이트는 squiglink lab을 씁니다. 내 포크에 없는 기능이 필요하면 직접 옮겨와야 합니다. 애초에 합쳐질 것을 고려하지 않은 수천 줄의 JavaScript를 손으로 병합하면서, 다른 곳이 망가지지 않기를 바라야 하죠.

modernGraphTool은 모든 기능을 하나의 빌드에 담았고, 각각 config.js에서 켜고 끌 수 있습니다.

  • 이퀄라이저 — AutoEQ, 채널별 EQ, 실행 취소/다시 실행, 수정 이력 및 A/B 테스트 기능, 가져오기/내보내기를 갖춘 파라메트릭 EQ.
  • 실시간 미리 듣기 — 음원 업로드 기능, 화이트·핑크 노이즈, 테스트 톤, 사인 스윕, EQ 미리 듣기.
  • 하드웨어 EQ — eqcaps 기기 데이터베이스에 있는 하드웨어에 USB, 시리얼, 블루투스, 네트워크로 필터를 바로 전송합니다. 기기가 담을 수 없는 부분은 전송 전에 보여 줍니다.
  • 타겟 커스터마이저 — 모든 타겟에 틸트, 저음, 고음, 이어 게인 필터를 적용하고, 프리셋과 타겟별 기본값을 설정할 수 있습니다. 운영자가 필터 구성을 통째로 바꿀 수도 있습니다.
  • Preference Bound, 평균 곡선, 그리고 평균·회차별·최소/최대 범위로 표시되는 다중 샘플 측정값.
  • **사이트 간 검색**과 사이트 선택기 — 네트워크의 모든 데이터베이스에서 기기를 찾고, 사이트 사이를 오갈 수 있습니다.
  • 주파수 튜토리얼, 공유 URL, 스크린샷, 워터마크.

코드를 건드리지 않는 업데이트

섹션 제목: “코드를 건드리지 않는 업데이트”

CrinGraph 사이트는 업로드한 날의 모습에서 멈춰 있습니다. 버그 수정이나 새 기능을 반영하려면 업데이트된 파일을 내려받고, 직접 수정했던 부분을 다시 적용한 뒤, 재차 업로드해야 합니다. 대부분의 사이트가 수년째 업데이트되지 못하는 이유입니다.

CDN 모드에서는 운영자 서버에 데이터, config.js, theme.css만 남습니다. 앱 자체는 CDN에서 불러오기 때문에, 새 릴리스가 나오면 몇 분 안에 아무 작업 없이 사이트에 반영됩니다.

그리고 릴리스는 꾸준히 나옵니다. modernGraphTool은 2025년 3월부터 개발을 이어오고 있으며, v2는 2026년 4월 출시 이후 20번의 릴리스를 거쳤습니다. 그중 몇 가지를 꼽으면 다음과 같습니다.

  • 채널별 EQ — 좌우 귀에 별도 밴드를 적용해, AutoEQ로 채널 불균형 보정과 타겟 맞추기를 한 번에 할 수 있습니다.
  • 이력 및 비교 — EQ 수정 이력 간 A/B 비교와 완전한 실행 취소/다시 실행.
  • 새 인터페이스 언어 3종 — 커뮤니티가 기여한 체코어, 러시아어, 우크라이나어.
  • turboEQ — 주파수 응답 데이터에 지능적으로 적응하는 매우 빠른 AutoEQ.

나머지 내용은 변경 기록에서 확인하세요.

CrinGraph의 config.js는 흩어진 JavaScript 변수의 나열이고, 페이지의 외관은 여러 스타일시트와 스크립트 속 인라인 스타일에 퍼져 있습니다. 둘 중 무엇을 바꾸든 소스 코드를 읽어야 합니다.

modernGraphTool은 관심사마다 한 곳에 모아 두었고, 텍스트 편집기를 열 일이 거의 없도록 도구도 함께 제공합니다.

  • config.js — 초기 기기와 타겟, 정규화, 라벨, 워터마크, 패널 배치, 랭킹, 언어, 모든 기능 토글을 담은 하나의 구조화된 객체.
  • 설정 편집기 — 모든 옵션을 폼으로 제공합니다. 현재 파일을 가져와 필요한 부분만 바꾸고 다시 내보내면 됩니다.
  • 테마 생성기 — 색상 몇 개만 고르면 라이트·다크 테마를 모두 담은 theme.css를 만들어 줍니다.
  • phone_book.json 편집기 — JSON을 직접 쓰지 않고 브랜드, 기기, 변형을 관리합니다.

전환한다고 해서 발이 묶이지 않습니다.

  • 같은 데이터 — data/ 폴더와 phone_book.json을 그대로 씁니다. modernGraphTool 전용 필드는 CrinGraph 형식을 대체하지 않고 덧붙는 방식이라, 같은 파일을 CrinGraph에서도 계속 읽을 수 있습니다.
  • 이중 호스팅 — 기존 CrinGraph와 같은 도메인에서 함께 운영하며 점진적으로 전환할 수 있습니다.
  • 배포 방식 선택 — 자동 업데이트를 원하면 CDN 모드, 버전 교체 시점을 직접 정하고 싶다면 사전 빌드 릴리스, 서버가 없다면 GitHub Pages를 고르세요.