한 때, 게임을 개발하고 싶어서 여러 리소스를 찾은 적이 있었다. 라이센스 적으로 문제 없는 이미지, 사운드, 음악 이런 것들을 찾아 보았다. 이미지는 정말 안돼면 Gimp 나 inkspace 를 통해 어떻게든 시간을 들여서 만들고 사운드는 정 안돼면 여러 사운드를 직접 녹음하는 방법도 생각할 수 있을 것 같은데, 음악은 정말 어떻게든 만들 수 있는 방법이 없었다. 생각할 수 있는 방법은 고전 클래식 음악을 이용하는 정도 였다. (그래도 요즘은 뒤져보면 라이센스 적으로 문제 없는 음악들이 늘어 난 것 같다. ) 

 이런 고민을 한 때 하다가 자동 작곡에 대한 글을 보았다.( https://github.com/jamong/music-rnn ).  Deep 러닝에 관심이 생기다 보니 한 번시도해 보았다. 



아래 세팅은 Windows 10을 기준이다. 


▣ Theano설치

◎ TDM-GCC 설치

- 윈도우즈에서 gcc 환경을 구축하기 위해 사용하는 mingw 가 그냥 mingw 와 mingw w64 버전이 있다. 더 자세히 알아보면 둘은 같은 구현이 아니다. 각기 다른 구현체이다. (더 자세한 것은 http://klutzy.nanabi.org/blog/2015/03/05/mingw/ 에서 확인 할 것)
- TDM-GCC는 Mingw API 를 이용해 32bit 바이너리와 64bit 바이너리를 제공한다. (https://stackoverflow.com/questions/21980774/what-is-the-difference-between-orwells-mingw-and-tdm-dev-c-versions/22185860 )

◎Ⅰ. http://www.lfd.uci.edu/~gohlke/pythonlibs/  를 통한 설치

◎Ⅱ. 직접 컴파일

○ 우선 TDM-GCC 설치
○ https://github.com/Theano/Theano  에서 zip 파일 다운로드
 ( 바로 install 은 pip install git+git://github.com/Theano/Theano.git --upgrade  이지만 실제 동작시 에러발생)
         (참고 http://skyer9.tistory.com/7 , 원 출처 : http://funmv2013.blogspot.kr/2016/03/windows-keras.html )


◎ 설치 후 THEANO_FLAGS 환경 변수 설정

○ 탐색기에서 주소창에  %USERPROFILE% 로 이동하면 자동으로 해당 유저의 프로필 설정 디렉토리로
  이동함
.theanorc 파일을 생성 후


[global]

floatX = float32

device = gpu


[nvcc]

compiler_bindir=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin


 처럼 생성한다. (nvcc 는 CUDA Toolkit 이다. )
   http://ankivil.com/installing-keras-theano-and-dependencies-on-windows-10/


▣ numpy

http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy에서 다운 받아 설치한다.
  ( 그냥 pip install 로 하면 ImportError: cannot import name NUMPY_MKL 에러 발생함)



▣ Keras

◎ pip install git+git://github.com/fchollet/keras.git

◎ 파이썬 실행시 import keras 시 No module named tensorflow 에러 발생시
   keras 의 backend로  theano 설정이 안된 것이므로 설정이 필요함  

○ 탐색기에서 주소창에  %USERPROFILE% 로 이동하면 자동으로 해당 유저의 프로필 설정 디렉토리로
  이동함
○ 해당 폴더에서 .keras 폴더 생성(콘솔 창에  해당 디렉토리 이동후 md   .keras   라고 한다.)  후
 keras.json 파일 생성( 경우에 따라서는 이미 생성되어 있을 수도 있다. )


{

   "floatx": "float32",

   "epsilon": 1e-07,

   "image_dim_ordering": "th",

   "backend": "theano"

}


== 원본은 아래와 같이 생겼다.  tensorflow 로 돌아갈 때는 아래 것을 복원한다. ==

{

   "image_dim_ordering": "tf",

   "epsilon": 1e-07,

   "floatx": "float32",

   "backend": "tensorflow"

}






http://ankivil.com/installing-keras-theano-and-dependencies-on-windows-10/



▣ UnRoll

◎ pip install ez_setup (설치시 ez_setup 필요)

◎ pip install UnRoll

◎ 자동으로 music21 설치됨





실제 소스를 돌리는 경우 train_piano.py  파일을 좀 수정해야 한다. 코드에 .strftime("%Y.%m.%d.%H:%M:%S"))  이런 표현이 있는데, 이게 윈도우즈에서 

파일생성시 :  가 드라이브 구분자로 사용되므로 : (콜론)을 제거해야 한다. 





== 결론 ==

이것으로 실제 작곡이 가능한지는 잘모르겠다.  아래 결과 파일이다.


rnn_lstm_pred_midi_20170226T232412.zip



GPU 이용 안하면 엄청 느리다. 아직 내부 모델 분석은 못했다. 이제 막 공부를 시작해서..