PWM: Difference between revisions
PWMの原理、音響的効果、LFO・Envelope変調、アナログ・デジタル実装を詳説 |
NekoDensen (talk | contribs) Marked this version for translation |
||
| Line 2: | Line 2: | ||
<translate> | <translate> | ||
<!--T:1--> | |||
'''PWM'''(Pulse Width Modulation、パルス幅変調)は、パルス波の[[<tvar name=1>Special:MyLanguage/Pulse width</tvar>|Pulse width]]を時間的に変化させる変調方式である。 | '''PWM'''(Pulse Width Modulation、パルス幅変調)は、パルス波の[[<tvar name=1>Special:MyLanguage/Pulse width</tvar>|Pulse width]]を時間的に変化させる変調方式である。 | ||
<!--T:2--> | |||
シンセサイザーでは、[[<tvar name=2>Special:MyLanguage/Pulse wave</tvar>|パルス波]]のDuty cycleをLFOやエンベロープなどで変化させ、倍音構成を時間的に動かす手法を指すことが多い。1基のオシレーターだけでも厚みや動きを感じる音色を作れるため、アナログシンセサイザーの代表的な波形変調手法となっている。 | シンセサイザーでは、[[<tvar name=2>Special:MyLanguage/Pulse wave</tvar>|パルス波]]のDuty cycleをLFOやエンベロープなどで変化させ、倍音構成を時間的に動かす手法を指すことが多い。1基のオシレーターだけでも厚みや動きを感じる音色を作れるため、アナログシンセサイザーの代表的な波形変調手法となっている。 | ||
<!--T:3--> | |||
PWMという語は電子工学全般でも使用され、スイッチング電源、モーター制御、LED調光、[[<tvar name=3>Special:MyLanguage/Class D amplifier</tvar>|Class Dアンプ]]などでは別の目的でPulse Widthを制御する。この記事では主に音響・シンセシス用途を扱う。 | PWMという語は電子工学全般でも使用され、スイッチング電源、モーター制御、LED調光、[[<tvar name=3>Special:MyLanguage/Class D amplifier</tvar>|Class Dアンプ]]などでは別の目的でPulse Widthを制御する。この記事では主に音響・シンセシス用途を扱う。 | ||
<!--T:4--> | |||
== 基本原理 == | == 基本原理 == | ||
一定周波数のPulse waveで、High区間とLow区間の比率を時間的に変化させる。 | 一定周波数のPulse waveで、High区間とLow区間の比率を時間的に変化させる。 | ||
<!--T:5--> | |||
たとえば、 | たとえば、 | ||
<code>50% → 40% → 30% → 40% → 50% → 60% → 70% → ...</code> | <!--T:6--> | ||
<code>50% → 40% → 30% → 40% → 50% → 60% → 70% → ...</code> | |||
<!--T:7--> | |||
のようにDuty cycleを動かす。 | のようにDuty cycleを動かす。 | ||
<!--T:8--> | |||
基本周波数が一定なら音高の周期そのものは保たれる一方、各倍音の振幅が変化するため音色が変化する。 | 基本周波数が一定なら音高の周期そのものは保たれる一方、各倍音の振幅が変化するため音色が変化する。 | ||
<!--T:9--> | |||
== Pulse widthとの違い == | == Pulse widthとの違い == | ||
[[<tvar name=4>Special:MyLanguage/Pulse width</tvar>|Pulse width]]はある瞬間のパルス幅またはDuty cycleを表すパラメーターである。 | [[<tvar name=4>Special:MyLanguage/Pulse width</tvar>|Pulse width]]はある瞬間のパルス幅またはDuty cycleを表すパラメーターである。 | ||
<!--T:10--> | |||
PWMは、そのPulse widthを'''時間的に変化させる操作'''である。 | PWMは、そのPulse widthを'''時間的に変化させる操作'''である。 | ||
<!--T:11--> | |||
したがって、 | したがって、 | ||
<!--T:12--> | |||
* PW = 波形形状の静的パラメーター | * PW = 波形形状の静的パラメーター | ||
* PWM = PWへ時間変化を与える変調 | * PWM = PWへ時間変化を与える変調 | ||
<!--T:13--> | |||
と整理できる。 | と整理できる。 | ||
<!--T:14--> | |||
ただしシンセサイザーのパネルでは「PWM」ノブが変調量を示す場合と、Pulse Widthそのものを示す場合があり、メーカーごとの表記を確認する必要がある。 | ただしシンセサイザーのパネルでは「PWM」ノブが変調量を示す場合と、Pulse Widthそのものを示す場合があり、メーカーごとの表記を確認する必要がある。 | ||
<!--T:15--> | |||
== 音響的効果 == | == 音響的効果 == | ||
50% DutyのSquare waveは奇数次倍音のみを持つ。 | 50% DutyのSquare waveは奇数次倍音のみを持つ。 | ||
<!--T:16--> | |||
Duty cycleを50%から外すと偶数次倍音も現れ、各倍音の強さがPulse widthに応じて変化する。 | Duty cycleを50%から外すと偶数次倍音も現れ、各倍音の強さがPulse widthに応じて変化する。 | ||
<!--T:17--> | |||
PWMではこのスペクトル変化が連続的に起こる。 | PWMではこのスペクトル変化が連続的に起こる。 | ||
<!--T:18--> | |||
その結果、 | その結果、 | ||
<!--T:19--> | |||
* 音色の揺らぎ | * 音色の揺らぎ | ||
* 厚み | * 厚み | ||
| Line 48: | Line 67: | ||
* 鼻にかかったような周期変化 | * 鼻にかかったような周期変化 | ||
<!--T:20--> | |||
などを作ることができる。 | などを作ることができる。 | ||
<!--T:21--> | |||
Moog Werkstatt-01の解説でも、Pulse widthによってPulse波の形状と倍音バランスが変わり、VCO MOD SOURCEをPulse Widthへ送ることで時間変調できることが説明されている。<ref name="moog-werkstatt-pwm">[https://api.moogmusic.com/sites/default/files/2018-04/Werkstatt_01_Manual.pdf Moog Werkstatt-01 User Manual]</ref> | Moog Werkstatt-01の解説でも、Pulse widthによってPulse波の形状と倍音バランスが変わり、VCO MOD SOURCEをPulse Widthへ送ることで時間変調できることが説明されている。<ref name="moog-werkstatt-pwm">[https://api.moogmusic.com/sites/default/files/2018-04/Werkstatt_01_Manual.pdf Moog Werkstatt-01 User Manual]</ref> | ||
<!--T:22--> | |||
== LFOによるPWM == | == LFOによるPWM == | ||
最も典型的なPWMは[[<tvar name=5>Special:MyLanguage/LFO</tvar>|LFO]]をPulse Widthへ入力する方法である。 | 最も典型的なPWMは[[<tvar name=5>Special:MyLanguage/LFO</tvar>|LFO]]をPulse Widthへ入力する方法である。 | ||
<!--T:23--> | |||
サイン波や三角波LFOを使うと、Pulse Widthが一定周期で狭くなったり広くなったりする。 | サイン波や三角波LFOを使うと、Pulse Widthが一定周期で狭くなったり広くなったりする。 | ||
<!--T:24--> | |||
たとえば中心50%、変調幅±20%なら、 | たとえば中心50%、変調幅±20%なら、 | ||
<code>30% ↔ 70%</code> | <!--T:25--> | ||
<code>30% ↔ 70%</code> | |||
<!--T:26--> | |||
の範囲で周期的に変化する。 | の範囲で周期的に変化する。 | ||
<!--T:27--> | |||
LFO Rateは音色変化の速度、Amount/DepthはPulse Widthの変化幅を決める。 | LFO Rateは音色変化の速度、Amount/DepthはPulse Widthの変化幅を決める。 | ||
<!--T:28--> | |||
== EnvelopeによるPWM == | == EnvelopeによるPWM == | ||
[[<tvar name=6>Special:MyLanguage/Envelope</tvar>|エンベロープ]]をPulse Widthへ送ると、ノート開始から時間に沿ってDuty cycleを変化させられる。 | [[<tvar name=6>Special:MyLanguage/Envelope</tvar>|エンベロープ]]をPulse Widthへ送ると、ノート開始から時間に沿ってDuty cycleを変化させられる。 | ||
<!--T:29--> | |||
たとえば、 | たとえば、 | ||
<!--T:30--> | |||
* AttackでPulseを広げる | * AttackでPulseを広げる | ||
* Decayで50%へ戻す | * Decayで50%へ戻す | ||
* Releaseで狭くする | * Releaseで狭くする | ||
<!--T:31--> | |||
といった時間変化が可能である。 | といった時間変化が可能である。 | ||
<!--T:32--> | |||
LFOが周期変調を作るのに対し、Envelopeは演奏イベントに同期した一方向または多段階の波形変化を作る。 | LFOが周期変調を作るのに対し、Envelopeは演奏イベントに同期した一方向または多段階の波形変化を作る。 | ||
<!--T:33--> | |||
== 手動PWM == | == 手動PWM == | ||
Pulse Widthノブを演奏中に動かすことも広義にはPulse Width modulationである。 | Pulse Widthノブを演奏中に動かすことも広義にはPulse Width modulationである。 | ||
<!--T:34--> | |||
また、Mod wheel、Aftertouch、Velocity、Macro control、MIDI CCなどをPulse Widthへ割り当てれば、演奏表現としてPWMを制御できる。 | また、Mod wheel、Aftertouch、Velocity、Macro control、MIDI CCなどをPulse Widthへ割り当てれば、演奏表現としてPWMを制御できる。 | ||
<!--T:35--> | |||
== PWMとデチューン == | == PWMとデチューン == | ||
PWMの厚みは、複数オシレーターをデチューンして得る厚みとは原理が異なる。 | PWMの厚みは、複数オシレーターをデチューンして得る厚みとは原理が異なる。 | ||
<!--T:36--> | |||
デチューンでは複数の近接周波数が干渉してビートを生む。 | デチューンでは複数の近接周波数が干渉してビートを生む。 | ||
<!--T:37--> | |||
PWMでは単一オシレーターでも波形の倍音振幅が時間的に変化するため、基本周波数を増やさずに動きを作れる。 | PWMでは単一オシレーターでも波形の倍音振幅が時間的に変化するため、基本周波数を増やさずに動きを作れる。 | ||
<!--T:38--> | |||
ただし実際のパッチではPWMと複数オシレーター、ユニゾン、コーラスを併用することも多い。 | ただし実際のパッチではPWMと複数オシレーター、ユニゾン、コーラスを併用することも多い。 | ||
<!--T:39--> | |||
== PWMとフィルター変調 == | == PWMとフィルター変調 == | ||
PWMとフィルターカットオフ変調はいずれも音色を時間変化させるが、作用点が異なる。 | PWMとフィルターカットオフ変調はいずれも音色を時間変化させるが、作用点が異なる。 | ||
<!--T:40--> | |||
PWMは'''オシレーター波形そのもののスペクトル'''を変える。 | PWMは'''オシレーター波形そのもののスペクトル'''を変える。 | ||
<!--T:41--> | |||
フィルター変調は、オシレーターから出た既存スペクトルを周波数選択的に減衰させる。 | フィルター変調は、オシレーターから出た既存スペクトルを周波数選択的に減衰させる。 | ||
<!--T:42--> | |||
そのため同じLFOを両方へ送っても異なる結果になる。 | そのため同じLFOを両方へ送っても異なる結果になる。 | ||
<!--T:43--> | |||
== 変調中心 == | == 変調中心 == | ||
PWMでは中心Pulse Widthが重要である。 | PWMでは中心Pulse Widthが重要である。 | ||
<!--T:44--> | |||
50%を中心に対称変調する場合、 | 50%を中心に対称変調する場合、 | ||
<code>50% ± 20%</code> | <!--T:45--> | ||
<code>50% ± 20%</code> | |||
<!--T:46--> | |||
なら30〜70%を往復する。 | なら30〜70%を往復する。 | ||
<!--T:47--> | |||
中心を25%にすると、 | 中心を25%にすると、 | ||
<code>25% ± 15%</code> | <!--T:48--> | ||
<code>25% ± 15%</code> | |||
<!--T:49--> | |||
なら10〜40%を往復し、50% Squareとは異なるスペクトル領域を動く。 | なら10〜40%を往復し、50% Squareとは異なるスペクトル領域を動く。 | ||
<!--T:50--> | |||
音色は「変調量」だけでなく、中心値によって大きく変わる。 | 音色は「変調量」だけでなく、中心値によって大きく変わる。 | ||
<!--T:51--> | |||
== 変調範囲と極端値 == | == 変調範囲と極端値 == | ||
Pulse widthが0%または100%へ近づくと交流成分が小さくなり、実装によっては音量が落ちたり無音に近づく。 | Pulse widthが0%または100%へ近づくと交流成分が小さくなり、実装によっては音量が落ちたり無音に近づく。 | ||
<!--T:52--> | |||
そのためシンセサイザーでは変調範囲を内部的に制限することがある。 | そのためシンセサイザーでは変調範囲を内部的に制限することがある。 | ||
<!--T:53--> | |||
また、LFO Depthを大きく設定するとPulse widthが許容範囲を超える可能性があり、 | また、LFO Depthを大きく設定するとPulse widthが許容範囲を超える可能性があり、 | ||
<!--T:54--> | |||
* clamp | * clamp | ||
* wrap | * wrap | ||
| Line 130: | Line 184: | ||
* saturation | * saturation | ||
<!--T:55--> | |||
などの処理を行う実装もある。 | などの処理を行う実装もある。 | ||
<!--T:56--> | |||
== アナログシンセサイザー == | == アナログシンセサイザー == | ||
アナログVCOでは、三角波またはノコギリ波と比較閾値からPulse waveを作る方式がよく用いられる。 | アナログVCOでは、三角波またはノコギリ波と比較閾値からPulse waveを作る方式がよく用いられる。 | ||
<!--T:57--> | |||
比較閾値をCVで動かすと、Pulseの切り替わり位置が変化し、Duty cycleが変わる。 | 比較閾値をCVで動かすと、Pulseの切り替わり位置が変化し、Duty cycleが変わる。 | ||
<!--T:58--> | |||
LFOやEnvelopeをそのCVへ送ればPWMとなる。 | LFOやEnvelopeをそのCVへ送ればPWMとなる。 | ||
<!--T:59--> | |||
この方式ではPulse Widthが連続的な制御電圧で直接変調できるため、アナログモジュレーションとの親和性が高い。 | この方式ではPulse Widthが連続的な制御電圧で直接変調できるため、アナログモジュレーションとの親和性が高い。 | ||
<!--T:60--> | |||
== デジタルシンセサイザー == | == デジタルシンセサイザー == | ||
デジタルではPulse Widthの変調によって時変スペクトルが生じるため、静的なPulse waveよりanti-alias処理が複雑になる場合がある。 | デジタルではPulse Widthの変調によって時変スペクトルが生じるため、静的なPulse waveよりanti-alias処理が複雑になる場合がある。 | ||
<!--T:61--> | |||
代表的な実装には、 | 代表的な実装には、 | ||
<!--T:62--> | |||
* band-limited wavetable interpolation | * band-limited wavetable interpolation | ||
* BLEP / PolyBLEP | * BLEP / PolyBLEP | ||
| Line 153: | Line 215: | ||
* wavetable phase warp | * wavetable phase warp | ||
<!--T:63--> | |||
などがある。 | などがある。 | ||
<!--T:64--> | |||
単にサンプル列のHigh/Low切り替え位置を動かすだけでは、不連続点から高周波成分が発生しaliasingを生じやすい。 | 単にサンプル列のHigh/Low切り替え位置を動かすだけでは、不連続点から高周波成分が発生しaliasingを生じやすい。 | ||
<!--T:65--> | |||
== Ableton Liveでの例 == | == Ableton Liveでの例 == | ||
Ableton LiveのAnalogではRectangular oscillatorのPulse WidthをLFOで変調できる。 | Ableton LiveのAnalogではRectangular oscillatorのPulse WidthをLFOで変調できる。 | ||
<!--T:66--> | |||
またWavetableではClassic oscillator effectのPWによって波形のPulse Widthを変形でき、通常のPulse/Square以外のwavetableにも類似の時間軸変形を適用できる。<ref name="ableton-pwm">[https://www.ableton.com/en/manual/live-instrument-reference/ Ableton Live 12 Manual, Wavetable oscillator effects]</ref> | またWavetableではClassic oscillator effectのPWによって波形のPulse Widthを変形でき、通常のPulse/Square以外のwavetableにも類似の時間軸変形を適用できる。<ref name="ableton-pwm">[https://www.ableton.com/en/manual/live-instrument-reference/ Ableton Live 12 Manual, Wavetable oscillator effects]</ref> | ||
<!--T:67--> | |||
これは「PWM」という言葉が、現代のデジタルシンセサイザーでは古典的Pulse oscillator以外のwaveshapingへ拡張される場合がある例でもある。 | これは「PWM」という言葉が、現代のデジタルシンセサイザーでは古典的Pulse oscillator以外のwaveshapingへ拡張される場合がある例でもある。 | ||
<!--T:68--> | |||
== LFO速度 == | == LFO速度 == | ||
PWMのLFOが低周波なら、耳は主に周期的な音色変化として知覚する。 | PWMのLFOが低周波なら、耳は主に周期的な音色変化として知覚する。 | ||
<!--T:69--> | |||
変調速度をオーディオ帯域まで上げると、単純な「ゆっくりしたPulse Width変化」ではなく、新しい側帯波を含む複雑な変調として振る舞う。 | 変調速度をオーディオ帯域まで上げると、単純な「ゆっくりしたPulse Width変化」ではなく、新しい側帯波を含む複雑な変調として振る舞う。 | ||
<!--T:70--> | |||
この領域ではPWMはwaveshapingやphase modulationに近いスペクトル変化を生じ得る。 | この領域ではPWMはwaveshapingやphase modulationに近いスペクトル変化を生じ得る。 | ||
<!--T:71--> | |||
== ステレオPWM == | == ステレオPWM == | ||
左右チャンネルや複数VoiceでPWMの位相、Rate、Depthをずらすと、ステレオ方向にも動きを持たせられる。 | 左右チャンネルや複数VoiceでPWMの位相、Rate、Depthをずらすと、ステレオ方向にも動きを持たせられる。 | ||
<!--T:72--> | |||
ただしステレオ化そのものはPulse Width modulationの必須要素ではなく、複数VoiceやPan modulationを組み合わせた実装である。 | ただしステレオ化そのものはPulse Width modulationの必須要素ではなく、複数VoiceやPan modulationを組み合わせた実装である。 | ||
<!--T:73--> | |||
== Class DアンプにおけるPWM == | == Class DアンプにおけるPWM == | ||
[[<tvar name=7>Special:MyLanguage/Class D amplifier</tvar>|Class Dアンプ]]では、オーディオ信号を高周波スイッチング波形のDuty cycleへ変換するPWM方式が用いられることがある。 | [[<tvar name=7>Special:MyLanguage/Class D amplifier</tvar>|Class Dアンプ]]では、オーディオ信号を高周波スイッチング波形のDuty cycleへ変換するPWM方式が用いられることがある。 | ||
<!--T:74--> | |||
この用途では、Pulse Widthの変化は'''音色を作るためのオシレーター波形変調'''ではなく、アナログ振幅情報を高効率なスイッチング信号へ符号化するために使われる。 | この用途では、Pulse Widthの変化は'''音色を作るためのオシレーター波形変調'''ではなく、アナログ振幅情報を高効率なスイッチング信号へ符号化するために使われる。 | ||
<!--T:75--> | |||
したがって、シンセサイザーのPWMとClass DのPWMは数学的に共通する部分を持つが、目的と動作周波数が大きく異なる。 | したがって、シンセサイザーのPWMとClass DのPWMは数学的に共通する部分を持つが、目的と動作周波数が大きく異なる。 | ||
<!--T:76--> | |||
== その他の電子工学用途 == | == その他の電子工学用途 == | ||
PWMは、 | PWMは、 | ||
<!--T:77--> | |||
* モーター速度制御 | * モーター速度制御 | ||
* LED調光 | * LED調光 | ||
| Line 193: | Line 270: | ||
* ヒーター制御 | * ヒーター制御 | ||
<!--T:78--> | |||
などでも使用される。 | などでも使用される。 | ||
<!--T:79--> | |||
これらでは平均電力や平均電圧を制御することが主目的であり、オーディオシンセシスとは用途が異なる。 | これらでは平均電力や平均電圧を制御することが主目的であり、オーディオシンセシスとは用途が異なる。 | ||
<!--T:80--> | |||
== 関連項目 == | == 関連項目 == | ||
* [[<tvar name=8>Special:MyLanguage/Pulse width</tvar>|Pulse width]] | * [[<tvar name=8>Special:MyLanguage/Pulse width</tvar>|Pulse width]] | ||
| Line 209: | Line 289: | ||
* [[<tvar name=17>Special:MyLanguage/Aliasing</tvar>|エイリアシング]] | * [[<tvar name=17>Special:MyLanguage/Aliasing</tvar>|エイリアシング]] | ||
<!--T:81--> | |||
== 参考資料 == | == 参考資料 == | ||
<references /> | <references /> | ||
<!--T:82--> | |||
* [https://api.moogmusic.com/sites/default/files/2018-04/Werkstatt_01_Manual.pdf Moog Werkstatt-01 User Manual] | * [https://api.moogmusic.com/sites/default/files/2018-04/Werkstatt_01_Manual.pdf Moog Werkstatt-01 User Manual] | ||
* [https://www.ableton.com/en/manual/live-instrument-reference/ Ableton Live 12 Manual, Wavetable] | * [https://www.ableton.com/en/manual/live-instrument-reference/ Ableton Live 12 Manual, Wavetable] | ||
* [https://downloads.ableton.com/manuals/81/ableton_live_manual_en.pdf Ableton Live Manual 8.1, Analog] | * [https://downloads.ableton.com/manuals/81/ableton_live_manual_en.pdf Ableton Live Manual 8.1, Analog] | ||
</translate> | </translate> | ||
Latest revision as of 06:38, 9 October 2026
PWM(Pulse Width Modulation、パルス幅変調)は、パルス波のPulse widthを時間的に変化させる変調方式である。
シンセサイザーでは、パルス波のDuty cycleをLFOやエンベロープなどで変化させ、倍音構成を時間的に動かす手法を指すことが多い。1基のオシレーターだけでも厚みや動きを感じる音色を作れるため、アナログシンセサイザーの代表的な波形変調手法となっている。
PWMという語は電子工学全般でも使用され、スイッチング電源、モーター制御、LED調光、Class Dアンプなどでは別の目的でPulse Widthを制御する。この記事では主に音響・シンセシス用途を扱う。
基本原理
一定周波数のPulse waveで、High区間とLow区間の比率を時間的に変化させる。
たとえば、
50% → 40% → 30% → 40% → 50% → 60% → 70% → ...
のようにDuty cycleを動かす。
基本周波数が一定なら音高の周期そのものは保たれる一方、各倍音の振幅が変化するため音色が変化する。
Pulse widthとの違い
Pulse widthはある瞬間のパルス幅またはDuty cycleを表すパラメーターである。
PWMは、そのPulse widthを時間的に変化させる操作である。
したがって、
- PW = 波形形状の静的パラメーター
- PWM = PWへ時間変化を与える変調
と整理できる。
ただしシンセサイザーのパネルでは「PWM」ノブが変調量を示す場合と、Pulse Widthそのものを示す場合があり、メーカーごとの表記を確認する必要がある。
音響的効果
50% DutyのSquare waveは奇数次倍音のみを持つ。
Duty cycleを50%から外すと偶数次倍音も現れ、各倍音の強さがPulse widthに応じて変化する。
PWMではこのスペクトル変化が連続的に起こる。
その結果、
- 音色の揺らぎ
- 厚み
- コーラス的な動き
- ストリングス的な広がり
- 鼻にかかったような周期変化
などを作ることができる。
Moog Werkstatt-01の解説でも、Pulse widthによってPulse波の形状と倍音バランスが変わり、VCO MOD SOURCEをPulse Widthへ送ることで時間変調できることが説明されている。[1]
LFOによるPWM
最も典型的なPWMはLFOをPulse Widthへ入力する方法である。
サイン波や三角波LFOを使うと、Pulse Widthが一定周期で狭くなったり広くなったりする。
たとえば中心50%、変調幅±20%なら、
30% ↔ 70%
の範囲で周期的に変化する。
LFO Rateは音色変化の速度、Amount/DepthはPulse Widthの変化幅を決める。
EnvelopeによるPWM
エンベロープをPulse Widthへ送ると、ノート開始から時間に沿ってDuty cycleを変化させられる。
たとえば、
- AttackでPulseを広げる
- Decayで50%へ戻す
- Releaseで狭くする
といった時間変化が可能である。
LFOが周期変調を作るのに対し、Envelopeは演奏イベントに同期した一方向または多段階の波形変化を作る。
手動PWM
Pulse Widthノブを演奏中に動かすことも広義にはPulse Width modulationである。
また、Mod wheel、Aftertouch、Velocity、Macro control、MIDI CCなどをPulse Widthへ割り当てれば、演奏表現としてPWMを制御できる。
PWMとデチューン
PWMの厚みは、複数オシレーターをデチューンして得る厚みとは原理が異なる。
デチューンでは複数の近接周波数が干渉してビートを生む。
PWMでは単一オシレーターでも波形の倍音振幅が時間的に変化するため、基本周波数を増やさずに動きを作れる。
ただし実際のパッチではPWMと複数オシレーター、ユニゾン、コーラスを併用することも多い。
PWMとフィルター変調
PWMとフィルターカットオフ変調はいずれも音色を時間変化させるが、作用点が異なる。
PWMはオシレーター波形そのもののスペクトルを変える。
フィルター変調は、オシレーターから出た既存スペクトルを周波数選択的に減衰させる。
そのため同じLFOを両方へ送っても異なる結果になる。
変調中心
PWMでは中心Pulse Widthが重要である。
50%を中心に対称変調する場合、
50% ± 20%
なら30〜70%を往復する。
中心を25%にすると、
25% ± 15%
なら10〜40%を往復し、50% Squareとは異なるスペクトル領域を動く。
音色は「変調量」だけでなく、中心値によって大きく変わる。
変調範囲と極端値
Pulse widthが0%または100%へ近づくと交流成分が小さくなり、実装によっては音量が落ちたり無音に近づく。
そのためシンセサイザーでは変調範囲を内部的に制限することがある。
また、LFO Depthを大きく設定するとPulse widthが許容範囲を超える可能性があり、
- clamp
- wrap
- fold
- saturation
などの処理を行う実装もある。
アナログシンセサイザー
アナログVCOでは、三角波またはノコギリ波と比較閾値からPulse waveを作る方式がよく用いられる。
比較閾値をCVで動かすと、Pulseの切り替わり位置が変化し、Duty cycleが変わる。
LFOやEnvelopeをそのCVへ送ればPWMとなる。
この方式ではPulse Widthが連続的な制御電圧で直接変調できるため、アナログモジュレーションとの親和性が高い。
デジタルシンセサイザー
デジタルではPulse Widthの変調によって時変スペクトルが生じるため、静的なPulse waveよりanti-alias処理が複雑になる場合がある。
代表的な実装には、
- band-limited wavetable interpolation
- BLEP / PolyBLEP
- BLIT
- oversampling
- minBLEP
- wavetable phase warp
などがある。
単にサンプル列のHigh/Low切り替え位置を動かすだけでは、不連続点から高周波成分が発生しaliasingを生じやすい。
Ableton Liveでの例
Ableton LiveのAnalogではRectangular oscillatorのPulse WidthをLFOで変調できる。
またWavetableではClassic oscillator effectのPWによって波形のPulse Widthを変形でき、通常のPulse/Square以外のwavetableにも類似の時間軸変形を適用できる。[2]
これは「PWM」という言葉が、現代のデジタルシンセサイザーでは古典的Pulse oscillator以外のwaveshapingへ拡張される場合がある例でもある。
LFO速度
PWMのLFOが低周波なら、耳は主に周期的な音色変化として知覚する。
変調速度をオーディオ帯域まで上げると、単純な「ゆっくりしたPulse Width変化」ではなく、新しい側帯波を含む複雑な変調として振る舞う。
この領域ではPWMはwaveshapingやphase modulationに近いスペクトル変化を生じ得る。
ステレオPWM
左右チャンネルや複数VoiceでPWMの位相、Rate、Depthをずらすと、ステレオ方向にも動きを持たせられる。
ただしステレオ化そのものはPulse Width modulationの必須要素ではなく、複数VoiceやPan modulationを組み合わせた実装である。
Class DアンプにおけるPWM
Class Dアンプでは、オーディオ信号を高周波スイッチング波形のDuty cycleへ変換するPWM方式が用いられることがある。
この用途では、Pulse Widthの変化は音色を作るためのオシレーター波形変調ではなく、アナログ振幅情報を高効率なスイッチング信号へ符号化するために使われる。
したがって、シンセサイザーのPWMとClass DのPWMは数学的に共通する部分を持つが、目的と動作周波数が大きく異なる。
その他の電子工学用途
PWMは、
- モーター速度制御
- LED調光
- スイッチング電源
- DC-DCコンバーター
- サーボ制御
- ヒーター制御
などでも使用される。
これらでは平均電力や平均電圧を制御することが主目的であり、オーディオシンセシスとは用途が異なる。