Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
DTM entry level hands-on
Search
Atsushi Eno
February 02, 2025
Technology
0
180
DTM entry level hands-on
DTMの世界に触れてみよう @ GTUGGirls (2025-02-02)
Atsushi Eno
February 02, 2025
Tweet
Share
More Decks by Atsushi Eno
See All by Atsushi Eno
Taking trends in music app development into the future mobile ecosystem
atsushieno
0
14
[COSCUP2024] Catching up Trends in Audio App Development
atsushieno
0
770
Building Kotlin Multiplatform Libraries in 2024
atsushieno
0
3.8k
Kotlin Multiplatformで MIDI 1.0/2.0 ライブラリを作っている話
atsushieno
1
720
building_audio_plugin_ecosystem_on_Android.pdf
atsushieno
0
1.1k
get updated to the latest realtime audio processings knowledge base (2023) (再履修: 2023年までの リアルタイムオーディオ処理)
atsushieno
1
1.2k
learning how DAWs work, with Zrythm
atsushieno
0
1.2k
What for, Where and How to Adopt MIDI 2.0
atsushieno
0
1.3k
audio plugin format study meetup 2022.7.6 (JP)
atsushieno
0
1.7k
Other Decks in Technology
See All in Technology
AI AgentOps LT大会(2025/04/16) Algomatic伊藤発表資料
kosukeito
0
100
50人の組織でAIエージェントを使う文化を作るためには / How to Create a Culture of Using AI Agents in a 50-Person Organization
yuitosato
6
3k
All You Need Is Kusa 〜Slackデータで始めるデータドリブン〜
jonnojun
0
140
Amebaにおける Platform Engineeringの実践
kumorn5s
6
890
GitHub MCP Serverを使って Pull Requestを作る、レビューする
hiyokose
2
700
Automatically generating types by running tests
sinsoku
1
250
開発視点でAWS Signerを考えてみよう!! ~コード署名のその先へ~
masakiokuda
3
130
大規模サービスにおける カスケード障害
takumiogawa
3
790
.mdc駆動ナレッジマネジメント/.mdc-driven knowledge management
yodakeisuke
24
10k
Re:VIEWで書いた「Compose で Android の edge-to-edge に対応する」をRoo Codeで発表資料にしてもらった
tomoya0x00
0
260
こんなデータマートは嫌だ。どんな? / waiwai-data-meetup-202504
shuntak
5
1.7k
SREの視点で考えるSIEM活用術 〜AWS環境でのセキュリティ強化〜
coconala_engineer
1
240
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.1k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
178
52k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
34
2.2k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.3k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Optimizing for Happiness
mojombo
377
70k
Fireside Chat
paigeccino
37
3.4k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.4k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
The Cost Of JavaScript in 2023
addyosmani
49
7.7k
Documentation Writing (for coders)
carmenintech
69
4.7k
Transcript
DTMの世界に触れてみよう atsushieno
Agenda • DTM最初の一歩(講義) • ハンズオン ◦ 音を出してみる ◦ DAWとオーディオプラグインを動かしてみて、何が出来るのかを知る ◦
興味のあるトピックを拾って自分で DAWを使って実験してみる(いくつか課題候補を準備) • 音楽ソフト開発(余談) 今日やらないこと • 作曲の方法を学ぶ • ヴォーカルの打ち込み
DTM最初の一歩
PCで音楽を作る • 演奏して録音する ◦ 全パート…? ◦ 練習するのはまあまあ大変 • 生成AIに作らせる ◦
テキスト プロンプトから音楽生成 (Udio, Suno, ...) ◦ 思い通りには生成できない ◦ まだ生成結果を任意に音源分離・加工できる時代ではない • 自分で打ち込む(DTMと言われるもの) • ライブコーディング、クリエイティブコーディング
DTMで音楽を作るためには どんなソフトウェアが必要? • DAW(音楽制作ツール)など • オーディオプラグイン(楽器ソフト) ◦ インストゥルメント ◦ エフェクト
※DAW以外の選択肢もある
DTMで音楽を作るためには どんなハードウェアが必要? • PC(まれにiPadでやる人も) • MIDIキーボード(ハードウェア / ソフトウェア): あると便利 •
オーディオインターフェース: あるとcool(イヤホンでもしばらくはOK)
DTMで音楽を作るためには どんな知識が必要? • 音楽ソフトの使い方 • 音楽のドメイン知識はだいたい何でも有用 ◦ 楽器の名前、音の名前 ◦ 楽譜の読み方
◦ 音楽をあらわす言葉 ◦ ジャンル
DAW Digital Audio Workstation (音楽用のIDEのようなもの) 音楽をトラック(パート)に分けて、 音符を打ち込む or 音声ファイルを置く •
オーディオトラック ◦ 歌唱・演奏を録音した クリップ で構成される • インストゥルメント (MIDI) トラック ◦ 音符を打ち込んだ クリップ で構成される オーディオプラグイン(楽器・エフェクター)を 使って演奏できる
MIDI よく聞く単語だけどこれは一体どういうもの? • 演奏命令が標準化されたもの ◦ MIDIキーボードやMIDIシンセサイザーとPCの間の やり取りに使うバイナリフォーマット • 標準MIDIファイル (SMF):
音楽データファイル オーディオデータはbitmapみたいなもの、MIDIはSVGみたいなもの
オーディオプラグイン オーディオデータ and/or MIDIデータなど※を受け取ってオーディオ等を合成する • 楽器とエフェクターがある ◦ 種類がいろいろある • ソフトウェアで、フォーマット(API)がある
◦ VST(3), AudioUnit (v2, v3), CLAP, LV2, ... • パラメーターを操作して、加工する音を調整する • 大抵はそれぞれのプラグインがGUIを持っていて、 GUIから操作できる ※正確にはMIDIではなく独自規格の入力を受け付ける
DAWのインストゥルメント(MIDI)の打ち込み • インストゥルメント(MIDI)トラックのクリップをピアノロールで編集する • ノート(音符)をピアノロールに置いていく • ドラムパートの編集: ステップシーケンサーのクリップをループ • ノートには
音階 (key)、 長さ (length, duration)、 音量 (velocity) がある※ ※音量はトラックにもあるのが一般的 (volume)
DAWのインストゥルメント(MIDI)の打ち込み • インストゥルメント(MIDI)トラックのクリップをピアノロールで編集する • ノート(音符)をピアノロールに置いていく • ドラムパートの編集: ステップシーケンサーのクリップをループ • ノートには
音階 (key)、 長さ (length, duration)、 音量 (velocity) がある※ ※音量はトラックにもあるのが一般的 (volume) トラック
「音楽を作る」と何が出来上がるのか • 現代では、WAV, MP3, FLACなどを最終的に出力(レンダリング)する • 打ち込み作業では「音楽のプロジェクトファイル」を作る ※ ◦ DAW特有のもの
◦ 「あらゆるDAWがサポートする音楽データの共通フォーマット」は存在しない • MIDIファイルは表現力が弱いのでインポート/エクスポートできる程度 ◦ 20世紀のDTMではポピュラーだった ◦ 今でもたまに「STEMファイル」として使われる ※お絵かきソフトのプロジェクトファイルと png/jpgみたいな関係
Hands-On
▓ セットアップ • DAWをセットアップする ◦ 入手・インストールする ◦ オーディオ環境を設定する ◦ 新規プロジェクトを作成する
• オーディオプラグインをセットアップする ◦ 入手・インストールする ▪ インストーラーが自動的にインストールする or 手作業でプラグインバンドルのディレクトリを $HOME 以下にコピーする: • Windows: %HOME%¥AppData¥Local¥Programs¥Common¥VST3¥ • Linux: ~/.vst3/ など • macOS: ~/Library/Audio/Plug-Ins/{VST3 | CLAP | LV2 | Components}/ ◦ DAWにプラグインを認識させる
▓ DAWを起動して楽曲プロジェクトを作る • まず起動してみる ◦ 最初だけはセットアップがいろいろ動くことが多い (IDEと同じ) • DAWの打ち込みの多くは「プロジェクト」を作るところから ◦
空白プロジェクトで始める DAWも、テンプレートを選ぶ DAWもある (IDEと同じ) • プロジェクトを作ると、トラックリストやピアノロールが表示される ◦ 内容がわからないタブやグループだらけだけど気にしない (IDEと同じ) • インストールされているプラグインの一覧を確認する ◦ 最初にインストールされているプラグインを「スキャン」する必要がある DAWもある
(オーディオデバイスの設定) • Windowsの場合、ASIO4ALLのセットアップが必要になることもある ◦ ASIO: アプリケーションからオーディオデバイスを低遅延で排他的に使う技術 • DAWでオーディオデバイスを設定することになる
▓ インストゥルメントトラックを作る • トラックを作る ◦ 新規プロジェクトで空白のトラックが用意されている DAWも多い • トラックを選択したときにピアノロールが出てきたら、そこに打ち込める •
出てこなければ、インストゥルメントクリップ や MIDIクリップ を作る ◦ この手順が不要なDAWもある ◦ 両方あるDAWなら「インストゥルメントクリップ」のほう ◦ ドラム楽器にしたい場合はステップシーケンサーのクリップかもしれない( DAW次第)
(Reaper - new project)
(Reaper - select instrument plugin)
(Waveform - new project)
▓ プラグインのGUIから音を出す • トラックで使うインストゥルメントプラグインを選択する ◦ DAWによってやり方は異なる(前出) リストからドラッグ、ポップアップメニューを出せる、 etc... • GUIを表示する
◦ DAWから開閉できる; プラグインのGUIは単一ウィンドウのnon-modalなダイアログが基本 • 音を出してみる ◦ GUI上に鍵盤があれば、そこから音が出る可能性が高い ◦ なければ(無いものもある)、 DAWのピアノロールの左側にある鍵盤から音が出る • 音が出ないとき ◦ DTMあるある ◦ さまざまな原因があるので「 [DAW] 音が出ない」などで調べる
(Sforzando + GeneralUser-GS.sf2)
(Surge XT / Vital: プリセットを選択)
(インストゥルメントプラグインの種類) • サンプラー ◦ 楽器の録音データを任意の音階で鳴らせるようにしたもの ◦ いわゆる生音(ナマオト)系の楽器に多い ◦ サンプラーには音源データの共通フォーマットがある (Kontakt,
SFZ, SF2, Decent Sampler...) ◦ 自分でダウンロードしてきて使う前提のものもある ◦ いろいろ入っている「総合音源」はこれが多い • シンセサイザー ◦ パラメーターや短いWAV波形データにさまざまな加工を加えて音を合成するもの ◦ シンセサイザーの音色はパラメーターの集合体として「プリセット」から選べる ◦ 自作しても良いし、誰かが作ったプリセットを使うのもアリ ※厳密にはサンプラーも synthesisしているからシンセサイザー
▓ ピアノロールに音符を配置する • ピアノロールのグリッドの上でドラッグするとその範囲が音符になる ◦ 操作はDAWによる ◦ (ついでに)ピアノロールの拡大縮小、スクロールなどの操作に慣れる ◦ お絵かきソフトと同じ感じで「選択ツール」と「編集ツール」があることが多い
• ピアノロールの左側にある鍵盤をホールド(ドラッグ)しても音が出る ◦ インストゥルメント プラグインを選択していないと音が出ない ◦ 音量を0にしていたりミュートしていたりしても音が出ない • 音符を調整する ◦ ノートをドラッグすると移動できる(音階・位置の調整) ◦ 和音にする(縦に並べられる) ◦ 音の長さを調整する : 大抵はノートの左右端をドラッグすると変えられる
▓ 再生・停止・一時停止する • 再生して打ち込んだ音を確認する ◦ 再生ボタンを押す ◦ 大抵はスペースキーでもいける ◦ 通常は現在の再生位置が縦線で表示される
• 一時停止あるいは停止する ◦ 停止ボタン、一時停止ボタンを押す(違いがないことも) ◦ 一時停止から続いて再生すると続きの演奏になる(先頭に戻さないといけない)ことも ◦ 縦線を先頭までドラッグすると移動できる / Home/Endキーで一気に動かせることも
▓ 複数のトラックを扱う 別の楽器のパートを打ち込むのは別のトラックで行う必要がある • 新しいトラックで新しいクリップを作る • クリップの縦位置を他のパートと合わせる • 最初のトラックと同様にインストゥルメント プラグインを選択する
• 音符を打ち込む • 再生する: 2パートが同時に鳴ればOK! • ミュート、ソロ再生を指定できる ◦ パートが増えてくると、打ち込んだ音を確認したいときに邪魔になる • トラックのヴォリューム(音量)やパン(左右の定位)を変更できる
▓いろいろな音を知る 楽器には名前があり、どんな楽器がどんな音を出すのか知っていると探しやすい • 音楽のジャンル別のスコア(楽譜)を見てみる ◦ ロックバンド編成 (guitar, bass, drum, key...)
◦ ジャズ(gt, b, dr, piano, trumpet, saxophone...) ◦ 管弦楽(木管楽器、金管楽器、弦楽器、打楽器 …) • 「◯◯でよく使われている音」 • General MIDI ◦ アコースティック楽器からシンセ、 SFXまで128種類を規定したMIDI標準のひとつ • 有名なシンセサイザーやその音なども共通語 ◦ Roland TR-808, TB-303, YAMAHA DX-7, 初音ミク
(楽器を入手する) • プラグインを入手する ◦ 商用プラグインと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/, ...
▓ 音楽のパラメーターを変える • 演奏全体で固定の設定値と演奏中に変更できるパラメーターがある ◦ 固定値は主にGUIで設定する • プラグインのパラメーターやノートの音量(ベロシティ)を操作する ◦ ピアノロールの下にコントロール
パネルを展開するタイプ ◦ トラックの下にサブトラック(あるいは「オートメーショントラック」)を積むタイプ
(音を調整するパラメーターの名前と効果を知る) オーディオプラグインのパラメーターとして使われることが多い単語: • 音量(ゲイン/ヴォリューム) • パン (定位: ステレオにおける左右の音量比 ) •
エフェクトパラメーター ※楽器による ◦ ローパスフィルター、ハイパスフィルター ◦ ヴィブラート、トレモロ ◦ ヴォーカルのブレシネス、ブライトネス、グロウル etc. etc. • エンベロープ、ADSR(アタック、ディケイ(減衰)、サステイン、リリース) AbletonのLearning Synthsがとてもわかりやすいのでおすすめ
None
(MIDIイベントを置く) ノート以外のイベントとして MIDIイベントを入力できるDAWが多い MIDI 1.0メッセージ: • (0x80 ノートオフ) • (0x90
ノートオン) • 0xA0 キープレッシャー • 0xB0 コントロールチェンジ • 0xC0 プログラムチェンジ(音色変更) • 0xD0 チャンネルプレッシャー • 0xE0 ピッチベンド • (0xF0 SysEx)
▓ エフェクトプラグインを使う エフェクトプラグインを使うと、任意の楽器の出音に同じ効果を与えられる • エフェクターの種類を知る ◦ リバーブ(残響)、ディレイ(やまびこ)、コーラス(広がり) ◦ コンプレッサー(音量の均一化) ◦
イコライザー、(ハイパス/ローパス)フィルター(周波数帯別の音量調整) ◦ ディストーション(歪み)、フェイザー(位相効果) • インストゥルメントプラグインの後にエフェクトプラグインを追加してみる ※エフェクト機能がインストゥルメントプラグインに搭載されていることも多い
▓ テンポを変える • 楽曲のテンポは全パートで1つ • テンポトラック(あるいはマスタートラック)として存在している ◦ テンポの他に拍子の指定やコード(和音)の指定が混在することもある • BPM
(beats per minutes) という単位がよく使われる ◦ 初期値はBPM = 120 (4分音符が1分間に120回 = 1秒に2拍)の場合が多い • 変更・指定方法はDAW次第 ※Zrythm, Waveformでは テンポトラックがデフォルトで非表示
▓ MIDIキーボードを使う 慣れてくると鍵盤などで打ち込んだほうがずっと早い(かも) • MIDIキーボードをPCでセットアップする ◦ ソフトウェアMIDIキーボードもある: https://vmpk.sourceforge.io/ など •
使用するMIDIキーボードをDAWで選択する • 演奏対象としたいトラックを選んで MIDIデバイスを接続する • 演奏して音が出ることを確認する ◦ そもそもトラックから音は出ている ? • 演奏をレコーディングする ◦ 記録したい位置を選び、レコーディング開始する (打ち込み内容に追加されるので注意)
▓ ドラムパートを打ち込む ドラムの打ち込みにはステップシーケンサーがよく使われる • ドラムのインストゥルメントプラグインのトラックを作る ◦ 全部を1トラックにする, or ◦ 数種類ごとにトラックを作る 例
: 左右手足ごとに • 使っているDAWでステップシーケンサーの クリップの機能があるか調べる ◦ あればそれを使うと楽なことが多い ◦ 無ければピアノロールに打ち込む • ドラムパートは繰り返しが基本 →クリップを引き伸ばしてループ再生させる
▓ STEM (MIDIファイル)を取り込んで音を割り当てる • 新規プロジェクトを作成する • MIDIファイルを「プロジェクトに」インポートする ◦ トラックにインポートすると(できる場合もある)、 1トラック分しか展開されない
• インポートされたトラックにインストゥルメントプラグインを割り当てる • 再生してみる ◦ 音量などが小さくて音が聞こえない場合もあり得る
(他人が作った音楽を真似て打ち込む) たいていの人は最初から作曲まではできないので、道具の使い方を覚えるところから • バンドスコアから打ち込む ◦ ギターは表情豊かに再現するのはとても難しい ◦ ヴォーカルは歌唱合成AIを使うか録音(して加工)する • クラシック:
IMSLP (https://imslp.org/) に著作権の切れた楽譜が多数ある ◦ パート数が多くて大変 ◦ 義務教育で習った範囲では正しく読めない楽器もある • ゲームなどの音楽 ◦ 耳コピできるなら(修行にはなる) 最近のものはクラシックなみに大変 成果物を公開するときは著作権に気をつける (公開できるサイト/利用方法もある)
▓ オーディオファイルのトラックを作る ヴォーカルパートなどを作る場合、録音されたオーディオファイルをはめ込む • オーディオトラックを作る • オーディオファイル(.wavなど)をドラッグなどでペーストするetc. • ピッチ(音程)が他のパートと合わない場合は補正する(できるはず) •
長さが他のパートと合わない場合はストレッチする(できるはず)
音楽ソフト開発
音声を扱うソフトウェア • 音楽制作用ソフトウェア ◦ DAW、DJソフト、歌唱合成エディター、ライブコーディング環境 ◦ オーディオプラグイン ◦ MIDIキーボードなどのユーティリティ •
メディアプレイヤー、メディアレコーダー • 通話、AI音声アシスタント ◦ エフェクトをかけられる場合もある • ゲーム
(ガチ) オーディオプログラマーの技術スタック オーディオ処理, "DSP" (digital signal processing, 信号処理) デバイスアクセス(オーディオ、MIDIなど) オーディオプラグイン(プラグインの機能、フォーマット)の理解
リアルタイム処理 音楽情報(musicology: 音楽データ構造、コード理論・分析など) シンセサイザー、エフェクター(種類、構成要素など) GUI
オーディオ処理とそれに向いている言語 • オーディオ処理は一般的にリアルタイム性が重視される ◦ リアルタイム性が無いと再生がもたつき、パート間のタイミングがずれる ◦ 録音処理が失敗してもミュージシャンは気軽にリテイクできない • リアルタイム処理 =
「必ず」締切を守ること ◦ 平均処理時間ではなく最も遅い処理時間でも締切を守っていることが重要 ◦ 「最速」である必要はない • リアルタイム性は簡単に損なわれる ◦ GC (stop the world)、JITコンパイル(実行時にCPUコードに変換)、I/O、ロック(標準mutexなど) ... → C, C++, Rust, Zig, あるいはオーディオ処理用の言語を使って実装する ※ すべての音楽ソフトでリアルタイム処理が求められるわけではないし、 リアルタイム性が必要な処理はリアルタイムスレッドに隔離する
オーディオプラグイン開発 • オーディオプラグインの原理: オーディオや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を作るようなもの)
せんでん • Androidで動かせるプラグインフォーマットが無いので作ってます https://github.com/atsushieno/aap-core