Automatic conversion of pop music into chiptunes for 8-bit pixel art

 _Overall precedure

크게 두가지 stage로 나눌 수 있다.

1) analysis stage

– singing voice separation

– pitch detection : vocal melody / instrumental accompaniment

2) synthesis stage

– post-processing on extracted pitches (reduce complexities and fluctuations)

– use templates of waveforms (to synthesize 8-bit music based on given pitches)

: audio mosaicing method

 

Feature-driven synthesis method(audio mosaicing)

– 오디오 소스를 작은 segment로 나눔

– target 사운드의 feature descriptor 분석 (temporal, chroma, mel-spectrogram characteristics) 한 후 concatenate시킴.

 

Corpus-based concatenative synthesis method

– 예제 사운드의 target specification에 따라 사운드 DB로부터 토막들을 선택한후 concatenative approach 적용

 

NMF (non-negative matrix factorization)

– non-negative matrix V를 decomposition해서 template matrix W와 activation matrix H로 나눔. (D(V|WH)가 작아지도록.) 이 때 divergence는 Beta-divergence를 사용함.

V : m by n / W : m by k / H : k by n

– 오디오에 NMF를 적용하면 STFT의 magnitude part (Spectrogram)를 input V로 하여 decompose.

V : m(# of frequency bins) by n(# of time frames)

W : m(# of frequency bins) by k(# of templates)

H : k(# of templates) by n(# of time frames)

V(s) : source clip, V(t) : target clip 일 때,

template matrix W(s)와 W(t) 사이에 pitch가 일대응한다고 가정.

V(t)의 spectrogram이 주어지면, 먼저 D(V(t) | W(t)H(t))를 최소화하는 activation H(t)를 구할 수 있다.

그리고 나면 mosaicked version이라고 할 수 있는 V(s) = W(s)H(t)로 구할 수 있게 된다.

이렇게 얻은 V(s)를 가지고 inverse STFT를 해서 time-domain signal을 다시 만들어낸다.  (V(t)의 phase counterpart 사용)

여기서  W(s)와 W(t) 사이의 일대일 pitch correspondence가 성립하려면 W(s)와 W(t)의 크기가 같고, 각 column이 같은 pitch에 대응해야 한다.

하지만 target이 Pop song 데이터일 경우, vocal sound와 여러가지 악기의 sound를 포함하기 때문에 이 조건이 성립하기 어렵다.

이 어려움을 피하기 위해 ‘Let it Bee’ 논문에서는 (https://www.audiolabs-erlangen.de/resources/MIR/2015-ISMIR-LetItBee) sound template W(s)를 사용해서 H(t) = argminHD(V(t)|W(s)H)에 넣을 input을 바로 approximate하도록 한다. 그 후에 W(s)H(t)를 통해 synthesis 결과를 생성한다.

우리 연구도 Pop song을 다루기 때문에 Let it Bee의 방식을 baseline NMF method로 놓고자 한다. Let it Bee에서는 note activation의 반복을 줄이고, temporal smoothness를 높이기 위해 NMF의 핛ㅂ 과정에 몇몇 constraint를 추가한다.

우리의 NMF나 Let it Bee에서 사용한 advanced 방식보다 더 나은 결과를 보여주는데, 이는 8-bit 음악의 sound 특성 재현에 특화되었기 때문이다.

 

2_ Method

2_1 Singing voice separation

  • Singing part가 노래의 주 멜로디를 담당
  • SVS (singing voice system) algorithms를 사용해서 소스 분리
  • RPCA(robust principle component analysis)라는 unsupervised learning으로 구현

RPCA : 어떤 매트릭스를 하나의 low-rank matrix 하나의 sparse matrix의 합으로 approximate하는 방법

음악 신호에서는,

  • accompaniment부분: polyphonic 하며 주로 repetitive하기 때문에 time-frequency domain에서의 low-rank matrix 같은 성질을 갖는다.
  • vocal 부분: monophonic, changes over time하며, sparse signal의 특성을 갖는다.

Reconstruction of time-domain signal (low-rank signal / sparse signal)

-> recover 2 sources

참고로, vocal part가 centered되게 믹싱되어 있는 음원에서는 간단하게 양쪽 채널을 빼줌으로써 vocal 부분을 제거할 수도 있다.

 

2_2 Pitch analysis of the Accompaniment part

Accompaniment part는 polyphonic하기 때문에 Multi-pitch estimation(MPE) 알고리즘을 사용한다.

우리는 baseline NMF를 사용해서 MPE를 진행했다.

V(t)의 instrument part로 부터 H(t)를 계산(chiptune의 note들인 W(s)를 사용)해서 구한다.

W(s)의 각 column들은 하나의 pitch에 대응하기 때문에, 결국 H(t)는 pitch estimate값을 제공하게 된다.

단순하다는 장점 때문에 이 방법을 사용했지만, false positive가(busy, noise sound발생) 많이 발생하는 문제가 있었기 때문에, H에 대해 가장 active한 3개의 note만을 가질 수 있다는 constraint를 부여했다. (top 3 pitch candidates만을 고려하고 나머지의 값을 모두 0으로 설정) -> better precision rate.

(단순한 사운드가 매력인 8bit 음악에서는 복잡한 화음이 굳이 필요치 않고 오히려 멜로디가 중요하다는 판단 -> 3개의 pitch로만 화음을 구성하도록 함.)

 

2_3 Pitch analysis of the Singing Voice (foreground)

Singing voice는,

  • monophonic 하고,
  • 비브라토나 글리산도 같은 continuous changes를 갖는다.

따라서 NMF 방법은 잘 작동하지 않는다.

우리는 대신 pYIN monophonic pitch detection 방법을 사용했다.(https://www.eecs.qmul.ac.uk/~simond/pub/2014/MauchDixon-PYIN-ICASSP2014.pdf)

Consecutive한 frame에서의 pitch가 한 옥타브 이상 차이나지 않다는 가정을 더해서, 우리는 pYIN의 결과로 얻은 pitch들에 post-processing작업을 더했다. (이전 노트보다 한 옥타브 이상 높은 노트는 옥타브를 낮추도록.)

Screenshot from 2017-05-31 17-00-21.png

 

2_4 Activation Smoothing and NMF constraints

2개의 추가적인 post-processing 작업을 더했다.

(1) Smoothing : vocal/accompaniment pitch estimation 결과값에 median filter를 9 frame 간격으로 더함. (비브라토 같은 frequency modulation을 없애긴 하지만 8비트 음악에서는 오히려 이 작업이 필요하다고 생각했다.)

(2) Vocal part와 accompaniment part의 pitch estimation이 서로 관련이 있으며 서로에게 도움을 준다고 가정하였다.

따라서, instrumental part의 pitch estimate을 토대로 pitch range를(pitch의 min, max 값) 정하고, 이를 vocal part의 constraint로 사용했다. (NMF constraint)

 

2_5 Time-domain Synthesis

마지막 synthesis 단계 : 각 pitch에서의 simple narrow pulse wave / spike waves를 녹음해서 이를 chiptune tone의 template으로 사용했다.

이전 단계에서 얻은 결과를 가지고 우리는,

  • 각 note마다 어느 time frame에서 발견되는지 모두 검색한 후,
  • consecutive한 time frame에서 같은 노트가 발견되면, 이를 note segment라고 여기도록 했다.
  • 2개 이상의 consecutive한 time frame에서 이어지지 않은 note segment는 (즉, 너무 짧은 note는) 모두 버리도록 했다.

각 note segment는

  • pitch들의 set,
  • 그 amplitude값(energy값),
  • 시작 time,
  • duration을 갖도록 했다.

이 정보에다가, 우리는 overlap-and-add방식으로 template chiptune tone과 proper duration, amplitude scaling정보를 concatenate했다. (time domain에서 바로)

이처럼 time domain에서 synthesize하는 방식의 장점은 phase error의 영향을 피할 수 있다는 점이다. (synthesis 단계에서 phase 정보를 사용하지 않으므로)

 

<Overall process>

Screenshot from 2017-05-31 17-01-39.png

 

3_ Experiment

다양한 선행연구 방식과 비교했는데, Pitch accuracy 등은 고만고만 했지만 generate한 8-bit chiptune의 품질에 대한 주관적 평가(사람이 함)값은 확실히 좋았다고 한다.

Screenshot from 2017-05-31 16-59-38.png

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s