Playlist Atlas

플레이리스트 폴더를 올리면 곡마다 라우드니스·밝기·템포·조성을 오디오에서 직접 계산해, 플레이리스트끼리 어떻게 다른지 지도 위에 펼칩니다.

플레이리스트

지금 보이는 건 FMA 데이터셋 4개 장르 · 폴더를 올리면 교체됩니다

폴더를 통째로 끌어다 놓으면 폴더 이름이 플레이리스트 이름이 됩니다. 최대 4개, 각 40곡까지 비교합니다.

      지도

      23개 특징을 표준화해 PCA로 2차원에 투영

      FMA 데이터셋 4개 장르 × 30곡. 같은 분석기로 미리 계산한 값이고, 라벨을 쓰지 않고 뽑은 특징만으로 장르가 어떻게 자리를 잡는지 보여줍니다.

      특징별 분포

      점 하나가 곡 하나 · 세로 막대는 플레이리스트 중앙값

      트랙별 측정값

      곡 가운데 60초 구간 기준
      트랙 플레이리스트 BPM 박자 명료도 RMS dBFS 크레스트 dB 밝기 Hz 롤오프 Hz 잡음성 온셋/초 조성

      분석기 검산

      페이지가 합성한 기준 신호 · 기대값과 맞아야 정상
      기준 신호 기대 BPM 밝기 Hz 잡음성 조성
      합성·분석 중…

      측정 방법과 한계

      분석 구간
      모노 합산 후 22.05 kHz로 리샘플하고, 곡 가운데 60초만 분석합니다. 인트로와 아웃트로를 피해 곡의 대표 구간을 잡는 MIR의 통상적인 방식입니다. 다만 디코딩 자체는 곡 전체를 해야 하므로, 긴 플레이리스트는 디코딩이 전체 시간을 지배합니다.
      프레임
      Hann 창 1024 샘플, 홉 512(≈43 프레임/초). FFT는 radix-2 Cooley–Tukey를 직접 구현했고 Web Worker에서 돕니다.
      밝기·롤오프·잡음성
      spectral centroid, 85% rolloff, spectral flatness(기하평균/산술평균)를 프레임 에너지로 가중 평균했습니다. 잡음성이 높을수록 음정이 뚜렷하지 않은 소리(노이즈, 디스토션, 심벌)입니다.
      템포·박자 명료도
      스펙트럼 플럭스 온셋 곡선의 자기상관 피크를 찾습니다. 여기에 두 가지가 필요합니다. 자기상관 피크를 곡선 에너지로 나눈 주기성과, 플럭스 합을 스펙트럼 크기 합으로 나눈 플럭스 세기입니다. 주기성만으로는 부족한데, 척도에 무관한 값이라 거의 정지한 음에 남는 아주 작은 주기적 잔물결도 1에 가깝게 나오기 때문입니다. 합성 신호로 잰 플럭스 세기는 드럼 비트 0.42, 지속 패드 0.16, 노이즈 0.29, 순음 0.003이었습니다.
      주기성 ≥ 0.22이고 세기 ≥ 0.25일 때만 BPM을 보고합니다. 표의 박자 명료도는 둘을 곱한 값(주기성 × min(1, 세기/0.25))으로, 몸을 움직이게 하는 규칙적인 타격이 얼마나 뚜렷한지를 나타냅니다. 클럽 비트는 0.9 부근, 지속 패드는 0.6 부근에 놓입니다.
      조성
      크로마만 별도로 FFT 4096(5.4 Hz)으로 구합니다. 특징 추출용 1024(21.5 Hz)로는 가온다 근처 반음(15 Hz)을 가르지 못해 단3화음과 장3화음이 구분되지 않습니다. 각 빈은 반음 중심에서 얼마나 가까운지로 가중하고, 130–2100 Hz만 씁니다. 그 다음 Krumhansl–Schmuckler 프로파일과 24개(12키 × 장·단조) 상관을 구해 최대값을 택합니다. 크로마 대역 에너지 비중·잡음성·서로 다른 음이름 수·상관 크기가 모두 문턱을 넘을 때만 조성을 표시하므로, 킥 드럼이나 노이즈에는 —가 나옵니다. 조바꿈이 잦은 곡은 한 값으로 요약되지 않습니다.
      지도
      라우드니스·크레스트·밝기·롤오프·잡음성·온셋 밀도·박자 명료도·템포·3대역 비율과 MFCC 12개를 합친 23차원을 z-표준화한 뒤 PCA로 2축에 투영합니다. 결과가 결정론적이고, 각 축이 어떤 특징들의 조합인지 말할 수 있으며, 설명 분산을 숫자로 보고할 수 있습니다.