Slide 1

Slide 1 text

DTMの世界に触れてみよう atsushieno

Slide 2

Slide 2 text

Agenda ● DTM最初の一歩(講義) ● ハンズオン ○ 音を出してみる ○ DAWとオーディオプラグインを動かしてみて、何が出来るのかを知る ○ 興味のあるトピックを拾って自分で DAWを使って実験してみる(いくつか課題候補を準備) ● 音楽ソフト開発(余談) 今日やらないこと ● 作曲の方法を学ぶ ● ヴォーカルの打ち込み

Slide 3

Slide 3 text

DTM最初の一歩

Slide 4

Slide 4 text

PCで音楽を作る ● 演奏して録音する ○ 全パート…? ○ 練習するのはまあまあ大変 ● 生成AIに作らせる ○ テキスト プロンプトから音楽生成 (Udio, Suno, ...) ○ 思い通りには生成できない ○ まだ生成結果を任意に音源分離・加工できる時代ではない ● 自分で打ち込む(DTMと言われるもの) ● ライブコーディング、クリエイティブコーディング

Slide 5

Slide 5 text

DTMで音楽を作るためには どんなソフトウェアが必要? ● DAW(音楽制作ツール)など ● オーディオプラグイン(楽器ソフト) ○ インストゥルメント ○ エフェクト ※DAW以外の選択肢もある

Slide 6

Slide 6 text

DTMで音楽を作るためには どんなハードウェアが必要? ● PC(まれにiPadでやる人も) ● MIDIキーボード(ハードウェア / ソフトウェア): あると便利 ● オーディオインターフェース: あるとcool(イヤホンでもしばらくはOK)

Slide 7

Slide 7 text

DTMで音楽を作るためには どんな知識が必要? ● 音楽ソフトの使い方 ● 音楽のドメイン知識はだいたい何でも有用 ○ 楽器の名前、音の名前 ○ 楽譜の読み方 ○ 音楽をあらわす言葉 ○ ジャンル

Slide 8

Slide 8 text

DAW Digital Audio Workstation (音楽用のIDEのようなもの) 音楽をトラック(パート)に分けて、 音符を打ち込む or 音声ファイルを置く ● オーディオトラック ○ 歌唱・演奏を録音した クリップ で構成される ● インストゥルメント (MIDI) トラック ○ 音符を打ち込んだ クリップ で構成される オーディオプラグイン(楽器・エフェクター)を 使って演奏できる

Slide 9

Slide 9 text

MIDI よく聞く単語だけどこれは一体どういうもの? ● 演奏命令が標準化されたもの ○ MIDIキーボードやMIDIシンセサイザーとPCの間の やり取りに使うバイナリフォーマット ● 標準MIDIファイル (SMF): 音楽データファイル オーディオデータはbitmapみたいなもの、MIDIはSVGみたいなもの

Slide 10

Slide 10 text

オーディオプラグイン オーディオデータ and/or MIDIデータなど※を受け取ってオーディオ等を合成する ● 楽器とエフェクターがある ○ 種類がいろいろある ● ソフトウェアで、フォーマット(API)がある ○ VST(3), AudioUnit (v2, v3), CLAP, LV2, ... ● パラメーターを操作して、加工する音を調整する ● 大抵はそれぞれのプラグインがGUIを持っていて、 GUIから操作できる ※正確にはMIDIではなく独自規格の入力を受け付ける

Slide 11

Slide 11 text

DAWのインストゥルメント(MIDI)の打ち込み ● インストゥルメント(MIDI)トラックのクリップをピアノロールで編集する ● ノート(音符)をピアノロールに置いていく ● ドラムパートの編集: ステップシーケンサーのクリップをループ ● ノートには 音階 (key)、 長さ (length, duration)、 音量 (velocity) がある※ ※音量はトラックにもあるのが一般的 (volume)

Slide 12

Slide 12 text

DAWのインストゥルメント(MIDI)の打ち込み ● インストゥルメント(MIDI)トラックのクリップをピアノロールで編集する ● ノート(音符)をピアノロールに置いていく ● ドラムパートの編集: ステップシーケンサーのクリップをループ ● ノートには 音階 (key)、 長さ (length, duration)、 音量 (velocity) がある※ ※音量はトラックにもあるのが一般的 (volume) トラック

Slide 13

Slide 13 text

「音楽を作る」と何が出来上がるのか ● 現代では、WAV, MP3, FLACなどを最終的に出力(レンダリング)する ● 打ち込み作業では「音楽のプロジェクトファイル」を作る ※ ○ DAW特有のもの ○ 「あらゆるDAWがサポートする音楽データの共通フォーマット」は存在しない ● MIDIファイルは表現力が弱いのでインポート/エクスポートできる程度 ○ 20世紀のDTMではポピュラーだった ○ 今でもたまに「STEMファイル」として使われる ※お絵かきソフトのプロジェクトファイルと png/jpgみたいな関係

Slide 14

Slide 14 text

Hands-On

Slide 15

Slide 15 text

▓ セットアップ ● DAWをセットアップする ○ 入手・インストールする ○ オーディオ環境を設定する ○ 新規プロジェクトを作成する ● オーディオプラグインをセットアップする ○ 入手・インストールする ■ インストーラーが自動的にインストールする or 手作業でプラグインバンドルのディレクトリを $HOME 以下にコピーする: ● Windows: %HOME%¥AppData¥Local¥Programs¥Common¥VST3¥ ● Linux: ~/.vst3/ など ● macOS: ~/Library/Audio/Plug-Ins/{VST3 | CLAP | LV2 | Components}/ ○ DAWにプラグインを認識させる

Slide 16

Slide 16 text

▓ DAWを起動して楽曲プロジェクトを作る ● まず起動してみる ○ 最初だけはセットアップがいろいろ動くことが多い (IDEと同じ) ● DAWの打ち込みの多くは「プロジェクト」を作るところから ○ 空白プロジェクトで始める DAWも、テンプレートを選ぶ DAWもある (IDEと同じ) ● プロジェクトを作ると、トラックリストやピアノロールが表示される ○ 内容がわからないタブやグループだらけだけど気にしない (IDEと同じ) ● インストールされているプラグインの一覧を確認する ○ 最初にインストールされているプラグインを「スキャン」する必要がある DAWもある

Slide 17

Slide 17 text

(オーディオデバイスの設定) ● Windowsの場合、ASIO4ALLのセットアップが必要になることもある ○ ASIO: アプリケーションからオーディオデバイスを低遅延で排他的に使う技術 ● DAWでオーディオデバイスを設定することになる

Slide 18

Slide 18 text

▓ インストゥルメントトラックを作る ● トラックを作る ○ 新規プロジェクトで空白のトラックが用意されている DAWも多い ● トラックを選択したときにピアノロールが出てきたら、そこに打ち込める ● 出てこなければ、インストゥルメントクリップ や MIDIクリップ を作る ○ この手順が不要なDAWもある ○ 両方あるDAWなら「インストゥルメントクリップ」のほう ○ ドラム楽器にしたい場合はステップシーケンサーのクリップかもしれない( DAW次第)

Slide 19

Slide 19 text

(Reaper - new project)

Slide 20

Slide 20 text

(Reaper - select instrument plugin)

Slide 21

Slide 21 text

(Waveform - new project)

Slide 22

Slide 22 text

▓ プラグインのGUIから音を出す ● トラックで使うインストゥルメントプラグインを選択する ○ DAWによってやり方は異なる(前出) リストからドラッグ、ポップアップメニューを出せる、 etc... ● GUIを表示する ○ DAWから開閉できる; プラグインのGUIは単一ウィンドウのnon-modalなダイアログが基本 ● 音を出してみる ○ GUI上に鍵盤があれば、そこから音が出る可能性が高い ○ なければ(無いものもある)、 DAWのピアノロールの左側にある鍵盤から音が出る ● 音が出ないとき ○ DTMあるある ○ さまざまな原因があるので「 [DAW] 音が出ない」などで調べる

Slide 23

Slide 23 text

(Sforzando + GeneralUser-GS.sf2)

Slide 24

Slide 24 text

(Surge XT / Vital: プリセットを選択)

Slide 25

Slide 25 text

(インストゥルメントプラグインの種類) ● サンプラー ○ 楽器の録音データを任意の音階で鳴らせるようにしたもの ○ いわゆる生音(ナマオト)系の楽器に多い ○ サンプラーには音源データの共通フォーマットがある (Kontakt, SFZ, SF2, Decent Sampler...) ○ 自分でダウンロードしてきて使う前提のものもある ○ いろいろ入っている「総合音源」はこれが多い ● シンセサイザー ○ パラメーターや短いWAV波形データにさまざまな加工を加えて音を合成するもの ○ シンセサイザーの音色はパラメーターの集合体として「プリセット」から選べる ○ 自作しても良いし、誰かが作ったプリセットを使うのもアリ ※厳密にはサンプラーも synthesisしているからシンセサイザー

Slide 26

Slide 26 text

▓ ピアノロールに音符を配置する ● ピアノロールのグリッドの上でドラッグするとその範囲が音符になる ○ 操作はDAWによる ○ (ついでに)ピアノロールの拡大縮小、スクロールなどの操作に慣れる ○ お絵かきソフトと同じ感じで「選択ツール」と「編集ツール」があることが多い ● ピアノロールの左側にある鍵盤をホールド(ドラッグ)しても音が出る ○ インストゥルメント プラグインを選択していないと音が出ない ○ 音量を0にしていたりミュートしていたりしても音が出ない ● 音符を調整する ○ ノートをドラッグすると移動できる(音階・位置の調整) ○ 和音にする(縦に並べられる) ○ 音の長さを調整する : 大抵はノートの左右端をドラッグすると変えられる

Slide 27

Slide 27 text

▓ 再生・停止・一時停止する ● 再生して打ち込んだ音を確認する ○ 再生ボタンを押す ○ 大抵はスペースキーでもいける ○ 通常は現在の再生位置が縦線で表示される ● 一時停止あるいは停止する ○ 停止ボタン、一時停止ボタンを押す(違いがないことも) ○ 一時停止から続いて再生すると続きの演奏になる(先頭に戻さないといけない)ことも ○ 縦線を先頭までドラッグすると移動できる / Home/Endキーで一気に動かせることも

Slide 28

Slide 28 text

▓ 複数のトラックを扱う 別の楽器のパートを打ち込むのは別のトラックで行う必要がある ● 新しいトラックで新しいクリップを作る ● クリップの縦位置を他のパートと合わせる ● 最初のトラックと同様にインストゥルメント プラグインを選択する ● 音符を打ち込む ● 再生する: 2パートが同時に鳴ればOK! ● ミュート、ソロ再生を指定できる ○ パートが増えてくると、打ち込んだ音を確認したいときに邪魔になる ● トラックのヴォリューム(音量)やパン(左右の定位)を変更できる

Slide 29

Slide 29 text

▓いろいろな音を知る 楽器には名前があり、どんな楽器がどんな音を出すのか知っていると探しやすい ● 音楽のジャンル別のスコア(楽譜)を見てみる ○ ロックバンド編成 (guitar, bass, drum, key...) ○ ジャズ(gt, b, dr, piano, trumpet, saxophone...) ○ 管弦楽(木管楽器、金管楽器、弦楽器、打楽器 …) ● 「◯◯でよく使われている音」 ● General MIDI ○ アコースティック楽器からシンセ、 SFXまで128種類を規定したMIDI標準のひとつ ● 有名なシンセサイザーやその音なども共通語 ○ Roland TR-808, TB-303, YAMAHA DX-7, 初音ミク

Slide 30

Slide 30 text

(楽器を入手する) ● プラグインを入手する ○ 商用プラグインとOSSプラグイン ○ OSSのインストールにはStudioRackが便利 https://studiorack.github.io/studiorack-site/ ● サンプラー (Kontakt, SFZ, SF2, ...)のサンプルファイルを入手する ○ pianobook.co.uk , musical-artifacts.com, ... ● シンセのプリセットを入手する(最初からあるもので満足できない場合…?) ○ presetshare.com ● SFXなどのサンプルファイルを入手する ○ freesound.org, pixabay.com/sound-effects/, ...

Slide 31

Slide 31 text

▓ 音楽のパラメーターを変える ● 演奏全体で固定の設定値と演奏中に変更できるパラメーターがある ○ 固定値は主にGUIで設定する ● プラグインのパラメーターやノートの音量(ベロシティ)を操作する ○ ピアノロールの下にコントロール パネルを展開するタイプ ○ トラックの下にサブトラック(あるいは「オートメーショントラック」)を積むタイプ

Slide 32

Slide 32 text

(音を調整するパラメーターの名前と効果を知る) オーディオプラグインのパラメーターとして使われることが多い単語: ● 音量(ゲイン/ヴォリューム) ● パン (定位: ステレオにおける左右の音量比 ) ● エフェクトパラメーター ※楽器による ○ ローパスフィルター、ハイパスフィルター ○ ヴィブラート、トレモロ ○ ヴォーカルのブレシネス、ブライトネス、グロウル etc. etc. ● エンベロープ、ADSR(アタック、ディケイ(減衰)、サステイン、リリース) AbletonのLearning Synthsがとてもわかりやすいのでおすすめ

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

(MIDIイベントを置く) ノート以外のイベントとして MIDIイベントを入力できるDAWが多い MIDI 1.0メッセージ: ● (0x80 ノートオフ) ● (0x90 ノートオン) ● 0xA0 キープレッシャー ● 0xB0 コントロールチェンジ ● 0xC0 プログラムチェンジ(音色変更) ● 0xD0 チャンネルプレッシャー ● 0xE0 ピッチベンド ● (0xF0 SysEx)

Slide 35

Slide 35 text

▓ エフェクトプラグインを使う エフェクトプラグインを使うと、任意の楽器の出音に同じ効果を与えられる ● エフェクターの種類を知る ○ リバーブ(残響)、ディレイ(やまびこ)、コーラス(広がり) ○ コンプレッサー(音量の均一化) ○ イコライザー、(ハイパス/ローパス)フィルター(周波数帯別の音量調整) ○ ディストーション(歪み)、フェイザー(位相効果) ● インストゥルメントプラグインの後にエフェクトプラグインを追加してみる ※エフェクト機能がインストゥルメントプラグインに搭載されていることも多い

Slide 36

Slide 36 text

▓ テンポを変える ● 楽曲のテンポは全パートで1つ ● テンポトラック(あるいはマスタートラック)として存在している ○ テンポの他に拍子の指定やコード(和音)の指定が混在することもある ● BPM (beats per minutes) という単位がよく使われる ○ 初期値はBPM = 120 (4分音符が1分間に120回 = 1秒に2拍)の場合が多い ● 変更・指定方法はDAW次第 ※Zrythm, Waveformでは テンポトラックがデフォルトで非表示

Slide 37

Slide 37 text

▓ MIDIキーボードを使う 慣れてくると鍵盤などで打ち込んだほうがずっと早い(かも) ● MIDIキーボードをPCでセットアップする ○ ソフトウェアMIDIキーボードもある: https://vmpk.sourceforge.io/ など ● 使用するMIDIキーボードをDAWで選択する ● 演奏対象としたいトラックを選んで MIDIデバイスを接続する ● 演奏して音が出ることを確認する ○ そもそもトラックから音は出ている ? ● 演奏をレコーディングする ○ 記録したい位置を選び、レコーディング開始する (打ち込み内容に追加されるので注意)

Slide 38

Slide 38 text

▓ ドラムパートを打ち込む ドラムの打ち込みにはステップシーケンサーがよく使われる ● ドラムのインストゥルメントプラグインのトラックを作る ○ 全部を1トラックにする, or ○ 数種類ごとにトラックを作る 例 : 左右手足ごとに ● 使っているDAWでステップシーケンサーの クリップの機能があるか調べる ○ あればそれを使うと楽なことが多い ○ 無ければピアノロールに打ち込む ● ドラムパートは繰り返しが基本 →クリップを引き伸ばしてループ再生させる

Slide 39

Slide 39 text

▓ STEM (MIDIファイル)を取り込んで音を割り当てる ● 新規プロジェクトを作成する ● MIDIファイルを「プロジェクトに」インポートする ○ トラックにインポートすると(できる場合もある)、 1トラック分しか展開されない ● インポートされたトラックにインストゥルメントプラグインを割り当てる ● 再生してみる ○ 音量などが小さくて音が聞こえない場合もあり得る

Slide 40

Slide 40 text

(他人が作った音楽を真似て打ち込む) たいていの人は最初から作曲まではできないので、道具の使い方を覚えるところから ● バンドスコアから打ち込む ○ ギターは表情豊かに再現するのはとても難しい ○ ヴォーカルは歌唱合成AIを使うか録音(して加工)する ● クラシック: IMSLP (https://imslp.org/) に著作権の切れた楽譜が多数ある ○ パート数が多くて大変 ○ 義務教育で習った範囲では正しく読めない楽器もある ● ゲームなどの音楽 ○ 耳コピできるなら(修行にはなる) 最近のものはクラシックなみに大変 成果物を公開するときは著作権に気をつける (公開できるサイト/利用方法もある)

Slide 41

Slide 41 text

▓ オーディオファイルのトラックを作る ヴォーカルパートなどを作る場合、録音されたオーディオファイルをはめ込む ● オーディオトラックを作る ● オーディオファイル(.wavなど)をドラッグなどでペーストするetc. ● ピッチ(音程)が他のパートと合わない場合は補正する(できるはず) ● 長さが他のパートと合わない場合はストレッチする(できるはず)

Slide 42

Slide 42 text

音楽ソフト開発

Slide 43

Slide 43 text

音声を扱うソフトウェア ● 音楽制作用ソフトウェア ○ DAW、DJソフト、歌唱合成エディター、ライブコーディング環境 ○ オーディオプラグイン ○ MIDIキーボードなどのユーティリティ ● メディアプレイヤー、メディアレコーダー ● 通話、AI音声アシスタント ○ エフェクトをかけられる場合もある ● ゲーム

Slide 44

Slide 44 text

(ガチ) オーディオプログラマーの技術スタック オーディオ処理, "DSP" (digital signal processing, 信号処理) デバイスアクセス(オーディオ、MIDIなど) オーディオプラグイン(プラグインの機能、フォーマット)の理解 リアルタイム処理 音楽情報(musicology: 音楽データ構造、コード理論・分析など) シンセサイザー、エフェクター(種類、構成要素など) GUI

Slide 45

Slide 45 text

オーディオ処理とそれに向いている言語 ● オーディオ処理は一般的にリアルタイム性が重視される ○ リアルタイム性が無いと再生がもたつき、パート間のタイミングがずれる ○ 録音処理が失敗してもミュージシャンは気軽にリテイクできない ● リアルタイム処理 = 「必ず」締切を守ること ○ 平均処理時間ではなく最も遅い処理時間でも締切を守っていることが重要 ○ 「最速」である必要はない ● リアルタイム性は簡単に損なわれる ○ GC (stop the world)、JITコンパイル(実行時にCPUコードに変換)、I/O、ロック(標準mutexなど) ... → C, C++, Rust, Zig, あるいはオーディオ処理用の言語を使って実装する ※ すべての音楽ソフトでリアルタイム処理が求められるわけではないし、  リアルタイム性が必要な処理はリアルタイムスレッドに隔離する

Slide 46

Slide 46 text

オーディオプラグイン開発 ● オーディオプラグインの原理: オーディオやMIDIなどの入力を処理してオーディオやMIDIなどを出力 (DSP) void process(float** audio, uint8_t* events); ● VST3, AU, CLAP, LV2 といったプラグインフォーマットのAPIを実装する ○ VST3 SDK, AudioUnit SDKなど ● マルチフォーマット、クロスプラットフォームのSDKを使う ○ JUCEがかなり広く使われている ※DAW開発はたいへん(chrome extensionではなくchromeを作るようなもの)

Slide 47

Slide 47 text

せんでん ● Androidで動かせるプラグインフォーマットが無いので作ってます https://github.com/atsushieno/aap-core