Magenta.js에서 로파이 힙합 노래의 무한한 생성? Lo-Fi Player



Sony Flow Machine의 Lo-Fi Beats "사쿠라칠"에 감화 되었습니까?
Magenta도 Magenta.js를 사용하여 Lo-Fi 힙합 생성 웹 앱

Lo-Fi Player
h tps : // 버렸다. 기주 b. 이오

출시했습니다.

음악 생성이나 조작해 본 동영상을 올렸으므로 보시기 바랍니다.
2개의 음악 데이터(전반 후반)의 선택, 베이스 파트, 드럼 파트의 온·오프, 배경 화상 효과음 선택, 등이 가능합니다.

Lo-Fi Player 기술적 설명 (VAE 소개)



이 Lo-Fi Player는 Magenta.js 중에서도 MusicVAE의 Interpolation (2 개의 음악 데이터를 연결하여 새로운 음악을 만든다)라는 모델이 사용되고있는 것 같습니다.
본래 이 2개의 음악 데이터(각각 1 소절)를 최초와 마지막에 배치해, 그 사이에 있는 공간을 메우는 것으로 새로운 음악 생성을 실시하는 것이 MusicVAE의 구조입니다.
처음과 끝이 1마디씩, 그 사이가 14마디분 있으면 합계 16마디의 음악이 생성됩니다.
그림으로 보면 아래 그림과 같습니다.



이 구간을 채울 때 관련성이 낮은 소리 데이터까지를 고려해 버리면, 신경망의 계산도 힘들고, 소위 음악적으로 벗어날 가능성도 높아져 버립니다.
그래서 데이터의 중요한 부분만을 남겨 삭감(엔코더)하고, 되돌리기(디코더)를 실시하는 것이 VAE(Variational Auto Encoder)입니다.
이 VAE는 MusicVAE의 이름에서 파생되었습니다.
VAE의 사용과 미사용의 효과를 시각화한 것이 아래 그림입니다.



MusicVAE는 (오피셜에 공개되어 있는 것) 최대 3 트랙의 음악 생성을 할 수 있습니다.
이번 Lo-Fi Player도

・멜로디
・베이스
・드럼

의 3 트랙의 생성이 이루어지고 있습니다.
덧붙여서 드럼 이외는 단음입니다.
복수 트랙의 생성은 신경망의 구조적으로(데이터의 취급=수식 설계의 난이도), 각각의 무결성을 취하는 것이 매우 힘들지만, VAE에 의한 데이터의 차원 삭감으로 음악적 관련성의 낮은 데이터를 배제하는 것으로, 보다 확률 높고, 일관성이 있는 음악 생성을 가능하게 하고 있습니다.
한층 더 자세한 MusicVAE의 해설은 근일 옴사님으로부터 발매되는 나의 책에 쓰고 있습니다만 괜찮으면 보시고 보세요.

이번 Lo-Fi Player는 합계 4마디의 음악 생성일까요?
그렇다면 처음과 마지막 2마디는 위에서 설명한 대로 원래의 음악 데이터로 그 사이의 2마디가 MusicVAE 생성, 합계 4마디의 음악 생성이 이루어지는 구조일지도 모릅니다.

프로그램 내용에 관심이 있는 분은 GitHub에 코드가 공개되어 있으므로 보는 것도 좋을 것입니다.

Lo-Fi Player GitHub 페이지
htps : // 기주 b. 코 m / 마겐타 / ぉ ふぃ ぁ ぇ r

게다가 Play Mgenat 사이트라고 하는 것이 있어, 코드도 스스로 재기록, 음악이나 비주얼의 변경이 가능한 근처도 아무래도 Magenta입니다.

Play Magenta
h tps : // p ぁ y - 망했다. gぃtch. 메/

Play Magenta의 코드는 이런 느낌입니다.
synth = new Tone.Synth({
 envelope: {
   attack: 0.005,
   attackCurve: "linear",
   decay: 0.1,
   decayCurve: "exponential",
   release: 1,
   releaseCurve: "exponential",
   sustain: 0.3,
 },
 oscillator: {
   count: 3,
   harmonicity: 1,
   modulationFrequency: 0.4,
   modulationIndex: 2,
   modulationType: "square",
   partialCount: 0,
   partials: [],
   phase: 0,
   spread: 20,
   type: "triangle",
   width: 0.2,
 },
});

synth.toDestination ? synth.toDestination() : synth.toMaster();

그건 그렇고, 개발자 Vibert Thio는 기억에 실수가 없다면 원래는 Magenta.js를 사용하여 음악 게임 앱을 개인적으로 게시하고 인정 받았습니까? 현재 Google AI의 Magenta 팀 인턴이 된 경위가 있는 분입니다.

일본에서도 우수한 Music 신경망 개발자가 태어나기를 바라며 음악 AI 엔지니어 교육 사업에 힘을 쏟고 싶다고 생각했습니다.

좋은 웹페이지 즐겨찾기