Sourcetree + gitでMIDI音楽制作のデータ管理は出来るか

# はじめに
　この記事は[リンク情報システム](https://www.lis.co.jp/)が主催するイベント「Tech　Connect! Autumn」のリレー記事です。
　「[Tech Connect! Autumn](https://qiita.com/dgkz/items/4c3a449f3168d6c787cf)」は engineer.hanzomon のグループメンバによってリレーされます。
（リンク情報システムのFaceBookは[こちらから](https://ja-jp.facebook.com/lis.co.jp/)）
　4日目となります本日は「Sourcetree + gitでMIDI音楽制作のデータ管理は出来るか」という記事を@cassetteTapeが投稿いたします。

# この記事を書くキッカケ
　私は日頃、JazzPianoを弾いたり、DAWソフトで作曲をしたりすることがあります。仕事でSourcetreeを使っていたとき、この便利なソフトを音楽制作にも流用できないかな？と思ったのがキッカケです。
![39514919_1825375327550299_3923552560195043328_o.jpg](https://qiita-image-store.s3.amazonaws.com/0/284547/7840ee7d-76ab-775e-5a2e-3b26e22708c8.jpeg)

# Sourcetree + gitを使って音楽制作時のバージョン管理
　音楽制作ソフト（Logic pro Xや、GarageBand）等を使って、楽曲を制作するとき、こんなことはありませんでしたか？
　一旦、ここで保存しておいて、次のTake（録音）を仮で試してみたい。
　あるいは、１曲は、AABC構成だけれども、もう１曲は、AABCD構成で、なんという微妙なバージョン違いなどの曲を複数アレンジしたい場合など、複数のバージョンを管理したいことがあると仮定します。

　プログラムのソースコードと同じで、何をどこまで制作し、どこから分岐したのか？視覚的にも管理しやすいSourceTreeとgitの組み合わせで、楽曲の制作過程を管理することが可能なのかを試してみました。

##　使用機材
　　　　　●MacBook Pro 
　　　　　　　Retina, 15-inch, Mid 2015
　　　　　　　2.2 GHz Intel Core i7
　　　　　　　16 GB 1600 MHz DDR3

##　使用ソフトウェア
　　　　　Sourcetree（Version　２．６．３）
　　　　　git（Version　２．15．2）
　　　　　Logic pro X　(Version　１０．４．１)
<img width="542" alt="スクリーンショット 2018-09-09 20.00.00.png" src="https://qiita-image-store.s3.amazonaws.com/0/284547/ee91cc27-7ffc-6c5e-fb02-a76aab0a0299.png">
##　作成する音楽
　　　　　MIDIデータで構成されるオリジナルソング（筆者作）

##　実験手順
*　（１）MIDIデータを作成する。
*　（２）Sourcetreeに、データをcommitする。
*　（３）branchを作成し、MIDIデータを修正して、データをcommitする。
*　（４）Sourcetreeから、修正前のデータをチェックアウトして取り出す。
*　（５）曲を再生する。

##　実験結果
###　（１）MIDIデータを作成する。
　　　　Logic　Pro　Xを利用して、Jazzっぽいコードを意識した、
　　　　ワルツの曲を作成しました。
　　　　ただし、Swingするようなデータにはしてはいないです！

　　　　この時点では、ソロピアノの演奏となっています。

###　（２）Sourcetreeに、データをcommitする。
　　　　リポジトリに保存した音楽制作ソフトのデータ（midiデータ）
　　　　をコミットしました。
　　　　（筆者は最終的にはLogicが使用する全てのファイルをcommitしました。
　　　　midiデータは、Logicから出力した場合に作成されますが、
　　　　midiデータからだけではLogicのデータを完全に再現出来ない為です。）
<img width="1181" alt="スクリーンショット 2018-09-08 22.57.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/284547/142dafc9-0319-cd01-2781-bb5351cffdd3.png">

###　（３）branchを作成し、MIDIデータを修正して、データをcommitする。
　　　　Bassという名前のbranchを作成し、以後変更したデータはこのbranchへ
　　　　一旦保存することとしました。
<img width="1183" alt="スクリーンショット 2018-09-08 23.05.36.png" src="https://qiita-image-store.s3.amazonaws.com/0/284547/875b59e5-0453-dbba-1017-7d2d64cafb81.png">
　　　　Bassリポジトリには、ベースの演奏Takeを録音したデータを登録しました。
　　　　この時点では、ベースの演奏が混じったTakeとなっています。（下図）
<img width="1440" alt="スクリーンショット 2018-09-09 18.04.36.png" src="https://qiita-image-store.s3.amazonaws.com/0/284547/24506aa2-dd59-1651-0040-2a34c2e07d21.png">


###　（４）Sourcetreeから、修正前のデータをチェックアウトして取り出す。
　　　　一旦、最初にコミットしたmasterリポジトリをチェックアウトしました。
　　　　Logicを再度開き直して、データを確認しました。
　　　　<img width="1439" alt="スクリーンショット 2018-09-09 18.06.27.png" src="https://qiita-image-store.s3.amazonaws.com/0/284547/f6cf93af-2295-84b0-c54a-f17d1289ceda.png">
　　　　想定通り、branchで保存したベースの演奏は、あたかも消えてしまったかのよう。
　　　　最初のピアノソロの曲となっています！！

###　（５）曲を再生する。

　　　　　Pianoのソロバージョンの演奏が聞けました！（パチパチパチ）

# 最後に
　最初は、「Sourcetree + gitでMIDI音楽制作のデータ管理は出来るか」というテーマではなく、「Sourcetree + gitHubでMIDI音楽制作のデータ管理は出来るか」というテーマでした。しかし、チャレンジしてみたところ、gitHubへのPUSHが、認証のエラーとなり、２−３日調査をして、あれこれ試したのですが、うまく解決できませんでした。

　そもそも、gitHubは、プログラマのためのものですから、MIDIデータを置くのは使い方が間違っていると思っています。しかし、無料でMIDIデータを世界中の人がUPし、登録し、さらに編曲などするとなると、（作者の権利は守られませんが）多くの人が手軽に音楽を楽しめるようになるのではないかと、つい妄想をしてしまいました。

　最近ではWebブラウザで、MIDIデータを再生するJavascriptのコード（[MIDI.js を使った MIDI(SMF) 再生](https://qiita.com/Suna/items/68fa9ae40721cd7c55da)）もある様子です。手軽に音楽データを入手したり、改造したり、再生することが可能になるのかもしれません。

　個人的には、ローカルリポジトリでこのように音楽データを保存できるのは、魅力を感じました。ちょっととっておきたいTakeなど、都度都度発生します。うっかり消してしまったら、打ち込みをした（データ入力した）時間がパーです。履歴で、どこまで作成したのかが視覚的にわかりやすいですから、このバージョンはどこまで何をつくったんだっけ？なんて悩むことも少なくなりそうです！