こんにちは。スマートキャンプの郷田です。 本記事は スマートキャンプ Advent Calendar 2019 - Qiita の24日目の記事です。 私は普段から趣味で楽器演奏や曲作りをしているので、前から少し気になってたSoundPiを使ったサウンドプログラミングで簡単なループ音源を作ってみようと思います! SonicPiとは? 作成したものはこちら 曲 コード SonicPiを使ってみた感想 最後に SonicPiとは? コードベースで音楽制作のできる無料ツールです。 sonic-pi.net Windows、macOS、Raspberry Piで実行することができます。 利用時の画面はこちら 作成したものはこちら 今回は3時間でできるところまでを目指して作成してみました。 最初の1時間でチュートリアル、ヘルプを読み、残りの2時間でコーディングをしました。 チュートリアルはダウンロードしたアプリケーション内で閲覧でき、日本語に翻訳されているため始めるには十分な情報量です。 曲の題材として、この記事はクリスマスイブの公開のため、ジングルベルを選曲しました。 作成した時の気分でEDM風?なアレンジにしてみました。 曲 ※10秒程度の音源が再生されます soundcloud.com コード SonicPi # Sonic Pi v3.1 ## setting use_bpm 132 ## main live_loop :ch_lead do with_fx :octaver do lead_s :E4 , 0.5 lead_s :E4 , 0.5 lead_s :E4 , 1 lead_s :E4 , 0.5 lead_s :E4 , 0.5 lead_s :E4 , 1 lead_s :E4 , 0.5 lead_s :G4 , 0.5 lead_s :C4 , 0.75 lead_s :D4 , 0.25 lead_s :E4 , 2 lead_s :F4 , 0.5 lead_s :F4 , 0.5 lead_s :F4 , 0.75 lead_s :F4 , 0.25 lead_s :F4 , 0.5 lead_s :E4 , 0.5 lead_s :E4 , 0.5 lead_s :E4 , 0.25 lead_s :E4 , 0.25 lead_s :G4 , 0.5 lead_s :G4 , 0.5 lead_s :F4 , 0.5 lead_s :D4 , 0.5 lead_s :C4 , 2 end end live_loop :ch_bass do 2 .times do bass_s :C1 , 0.5 end sleep 3 3 .times do bass_s :C1 , 1 end sleep 1 2 .times do bass_s :F1 , 0.5 end sleep 3 2 .times do bass_s :G1 , 1 end bass_s :C1 , 2 end live_loop :ch_beat do with_fx :reverb , mix : 0.5 do 2 .times do sample :bd_haus sample :bd_klub sleep 0.5 end sleep 1 sample :drum_snare_soft , amp : 5 , rate : 1.7 sleep 2 2 .times do sample :bd_haus sample :bd_klub sleep 1 end sample :drum_snare_soft , amp : 5 , rate : 1.7 sample :bd_haus sample :bd_klub sleep 2 end end live_loop :ch_hh do 2 .times do sample :drum_cymbal_closed , rate : 2.4 sleep 0.5 end sample :drum_cymbal_open , rate : 1.4 , amp : 0.5 , start : 0.2 , finish : 0.7 , release : 1 sleep 1 8 .times do sample :drum_cymbal_closed , rate : 2.4 sleep 0.25 end end ## sounds define :bass_s do | n , crotchet | use_synth :dsaw play n, amp : 2 sleep crotchet end define :lead_s do | n , crotchet | use_synth :saw play n, amp : 0.7 , sustain : 0.2 , release : 1.2 * crotchet use_synth :noise play n, amp : 0.5 , sustain : 0.2 , release : crotchet sleep crotchet end コードはSonicPiにコピペすれば、そのまま再生できるはずです! SonicPiを使ってみた感想 DTMのUIで行える音楽と比べて、SonicPiでできることがプログラミングであるため「抽象化も具体化もとても高い音楽を作ることができそう!」という可能性を感じました! 波形の選択、ADSRを数値での設定、Fxの設定といったシンセサイザー機能や、サンプリング音源の再生速度や逆再生といったサンプラー機能等がとても楽しいです! 逆に DTMやシンセサイザーといった音楽の知識が全くない人だと、楽しみ方がわからないかと思います。 今回のコードはかなり煩雑になってしまっているのですが、先人が沢山いらっしゃるので、学んで趣味の一つとして楽しんで行きたいと思います! 今の所、仕事では使えなさそうです。 最後に 私の作った曲はいかがだったでしょうか? SonicPiの詳細ついてはググれば色々と記事がでてくるので、ご自身でお調べください! そして、プログラミングと音楽制作(DTM)が好きな方であれば、直感的にコードで音楽を表現できるので、是非1度は触って見ることをおすすめします!