• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Python, SQL 게시판 작곡 AI 복습용 abc notation 생성 공유 + 전체 파트 학습 방법

작곡 AI 복습용 abc notation 생성 공유 + 전체 파트 학습 방법

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #26129

    김정민
    참가자

    작곡 AI 강의 다 듣고 복습 겸 데이터를 한번 찾아봤는데, 생각보다 한글로 된 정보를 못찾아서(제가 검색을 못한걸수도..) 

    나름대로 찾은 방법 공유 + 질문차 글올립니다.

     

    kaggle 찾아보면 다른 형식의 데이터를 사용한 예제 코드들도 있지만 강의에서 abc notation 파일을 사용한 방법 그대로 해보고 싶어서

    데이터를 대체 어디서 구해야하나 찾아봤는데, 대부분 abc -> midi(or pdf)는 지원하는데 midi(or pdf) -> abc 는 찾기 어렵더라구요..

    겨우겨우 찾은 곳이 있어서 공유해드리려고 합니다..

    1. 먼저 midi 파일을 다운받아야합니다. 저는 https://freemidi.org/  에서 받았습니다. 해외사이트라 국내곡은 없는거 같네요. 완전 최신곡까진 없습니다. 전 muse의 plug in baby 받았네요.

    2. midi 파일을 abc 파일로 변환하기 위해 https://github.com/digero/maestro/releases 가서 다운을 받습니다. 스타바운드라는 게임에 사용되는 일종의 서드파티 프로그램인거 같더라구요. 밑에서부턴 편의상 마에스트로라 부르겠습니다. 

    3. 마에스트로 구동을 위해선 <strong>jdk 1.7 32 bit</strong> 이상이 필요합니다. 만약 .msi로 설치했으면 자바가 깔려있어도 32bit가 아니면 실행이 안됩니다. 이럴 경우 zip으로 받아서 java -jar Maestro.jar 로 실행하시면 됩니다.

    4. 다운받은 midi 파일을 열어서 내가 생각한 곡인지 확인해봅니다. 위에서 받은 plug in baby 같은 경우 guiter, bass, synthe, drums 4개가 있는데, drums을 제외하고 나머지 3개를 체크해주고 왼쪽 하단에 활성화된 'Export ABC ... ' 를 누르면 abc 파일로 변환됩니다.

    마에스트로

    5. 파일을 열어보면 헤더 정보를 포함한 abc 파일이 있는데, 헤더 내용은 삭제하고 곡만 남겨놓으시면 됩니다. 어느정도 제거를 하고 꼭 http://www.tradtunedb.org.uk/#/editor 에서 abc 코드를 복붙하고 정상 재생이 되는지 확인해봅시다. 

    6. 다 됐다면 학습 ㄱㄱ

    위 과정까지 하면 abc 파일이 생성되고 사용하시면 됩니다.

     

    질문1) 근데 여기서 궁금한게... 강의에서 제공해준 예제파일은 데이터도 많고 무엇보다 피아노 파트 하나만 있지만

    plug in baby나 다른 곡들도 꼭 피아노 파트 하나만 사용하진 않잖아요? 기타, 베이스, 키보드 아니면 기타를 더 쓸 수도 있고

     

    그럼 이같은 데이터들은 각 파트별로 나눠서 학습을 진행시켜줘야하는지, 아니면 bag of words를 만들때 단순히 set만 사용해서 유니크한 값만 남기는게 아닌 다른 전처리를 사용해야하는지 궁금합니다.

    데이터가 작은것도 문제인거 같기도 하지만(4000~5000 밖에 안되더라구요) 자르는 길이 값도 다르게 줘보고 모델도 새로 만들어보고 여러 방법을 시도했지만 모델이 예측값을 뽑아낼때 이상한 값들을 뽑아내더라구요.

    코드 왼쪽 그림과 같은 악보를 abc 에선 [D,-^f][D,d][D,-A] 이렇게 괄호를 열고 닫는걸로 표현하지만 모델에서 예측을 하면 괄호 여닫는게 오류가 납니다. 팁같은게 있는지 궁금해요.

     

    질문 2) 강의 말미에 반복된 멜로디가 나오는 현상을 막기 위해 argmax 대신 random.choice를 사용하라고 하셨는데, 강의에 나온 소스를 그대로 쓰면 scaler 오류가 나오던데.. 혹시 어떻게 적용해야하는지 알 수 있을까요?

     

     

    강의 잘보고 있습니다. 새해복많이받으세요~

    #26144

    codingapple
    키 마스터

    1 이상한 값 뽑는건 데이터가 얼마 없어서 그렇습니다

    드럼 기타 건반파트 악보 각각 표현법이 다릅니다 그래서 모델에 넣을 때 일단 어떤 파트가 있는 곡만 학습시킬지부터 정해야하고 

    기타 건반 드럼 이렇게 정했으면 파트별 악보를 어떻게 하나로 array로 만들어서 학습시킬지 생각하고 실험해봐야할듯요 

    2 같은 에러는 random.choice 사용방법이 잘못되었거나 list 자료에서 값을 뽑을 때 잘못 뽑거나 그런 경우일 수도요 

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠