Update: 2024-09-28
SyncSawSynth は10次までのPTR鋸歯波オシレータが使える32ボイスのポリフォニックシンセサイザです。主にハードシンクと周波数変調で電池が切れかけのおもちゃのような音を作る用途に向いています。もちろん普通の音も出ます。
full
- VST 3 をダウンロード (github.com) macOS
- VST 3 をダウンロード (github.com) full
パッケージには次のビルドが含まれています。
Linux ビルドは Ubuntu 24.04 でビルドしています。もし Ubuntu 24.04 以外のディストリビューションを使っているときは、プラグインが読み込まれないなどの不具合が起こることがあります。この場合はビルド手順に沿ってソースコードからビルドしてください。
macOS で使用するときは macOS
パッケージのダウンロードを推奨します。また Apple Developer Program
に加入していないので、インストール時に Gatekeeper
を迂回するように設定する必要があります。詳細は
インストール -> macOS
の節を参照してください。
何かあれば GitHub
のリポジトリに issue を作るか ryukau@gmail.com
までお気軽にどうぞ。
paypal.me/ryukau から開発資金を投げ銭することもできます。
名前が .vst3
で終わるディレクトリを OS
ごとに決められた位置に配置してください。
/Program Files/Common Files/VST3/
に配置します。$HOME/.vst3/
に配置します。/Library/Audio/Plug-ins/VST3/
あるいは
/Users/$USERNAME/Library/Audio/Plug-ins/VST3/
に配置します。DAW によっては上記とは別に VST3 をインストールできるディレクトリを提供していることがあります。詳しくは利用している DAW のマニュアルを参照してください。
注意: プリセットの無いプラグインもあります。
プリセットはページの最上部のリンクからダウンロードできるプラグインパッケージに含まれています。以下はプリセットのインストール手順です。
presets
ディレクトリ内の Uhhyou
ディレクトリを OS ごとに決められたディレクトリに配置。以下は OS ごとのプリセットの配置先の一覧です。
/Users/$USERNAME/Documents/VST3 Presets
$HOME/.vst3/presets
/Users/$USERNAME/Library/Audio/Presets
プリセットディレクトリの名前はプラグインと同じである必要があります。配置先のディレクトリが無いときは作成してください。
プラグインが DAW に認識されないときは C++ redistributable
をインストールしてみてください。インストーラは次のリンクからダウンロードできます。ファイル名は
vc_redist.x64.exe
です。
Ubuntu 24.04 では次のパッケージのインストールが必要です。
sudo apt install libxcb-cursor0 libxkbcommon-x11-0
もし DAW がプラグインを認識しないときは、下のリンクの
Package Requirements
を参考にして VST3
に必要なパッケージがすべてインストールされているか確認してください。
REAPER の Linux 版がプラグインを認識しないときは
~/.config/REAPER/reaper-vstplugins64.ini
を削除して
REAPER を再起動してみてください。
重要: full
パッケージは動作未確認です。以下のファイルは codesign
されていないので削除する必要があるかもしれません。
Contents/Resources/Documentation
Contents/x86_64-linux
Contents/x86_64-win
macOS
パッケージでは上記のファイルの削除は不要です。また、すべてのパッケージは
codesign
コマンドの ad-hoc signing
の状態になっています。
プラグインの初回起動時に「破損している」という趣旨のメッセージが表示されることがあります。この場合は、ターミナルを開いて、解凍した
.vst3
ディレクトリに次のコマンドのどちらか、あるいは両方を適用してみてください。
/path/to/PluginName.vst3
の部分はインストールしたプラグインのパスに置き換えてください。
xattr -rd com.apple.quarantine /path/to/PluginName.vst3
xattr -rc /path/to/PluginName.vst3
プラグインは署名されていない (unsigned) 、または公証されていない (un-notarized) アプリケーションとして認識されることがあります。この場合は、警告メッセージが表示された後に、システム環境設定を開いて「セキュリティとプライバシー」 → 「一般」の「このまま開く」ボタンを押してください。以下にリンクした Apple 公式のヘルプページにスクリーンショット付きで同じ手順が掲載されています。「ノータリゼーションを受けていない App や未確認の開発元の App を開きたい場合」を参照してください。
ここまでの手順を経てまだ動かないときはインストール先を
/Library/Audio/Plug-ins/VST3/
あるいは
/Users/$USERNAME/Library/Audio/Plug-ins/VST3/
のいずれか使っていなかったほうに変えてみてください。
上記の方法がすべて上手くいかなかったときは以下の手順を試してみてください。
sudo spctl --master-disable
を実行。上記の手順を実行するとシステムのセキュリティが弱くなるので注意してください。元に戻すには以下の手順を実行してください。
sudo spctl --master-enable
を実行。codesign
の適用注意 この節の内容は macOS
パッケージには関連しないと考えられますが未検証です。 (GitHub の
issue)
full
パッケージを利用する場合は以下のコマンドを適用することで利用できるかもしれません。
sudo codesign --force --deep -s - /path/to/PluginName.vst3
codesign
の利用には Xcode
のインストールが必要となるかもしれません。
初回設定時は手動で次のファイルを作成してください。
/Users/ユーザ名/AppData/Roaming/UhhyouPlugins/style/style.json
。$XDG_CONFIG_HOME/UhhyouPlugins/style/style.json
。
$XDG_CONFIG_HOME
が空のときは
$HOME/.config/UhhyouPlugins/style/style.json
。/Users/$USERNAME/Library/Preferences/UhhyouPlugins/style/style.json
。プラグインのウィンドウを開くたびに style.json
が読み込まれて更新されます。
既存の色のテーマを次のリンクに掲載しています。
style.json
にコピペして使ってください。
style.json
の設定例です。
{
"fontFamily": "Tinos",
"fontBold": true,
"fontItalic": true,
"foreground": "#000000",
"foregroundButtonOn": "#000000",
"foregroundInactive": "#8a8a8a",
"background": "#ffffff",
"boxBackground": "#ffffff",
"border": "#000000",
"borderCheckbox": "#000000",
"borderLabel": "#000000",
"unfocused": "#dddddd",
"highlightMain": "#0ba4f1",
"highlightAccent": "#13c136",
"highlightButton": "#fcc04f",
"highlightWarning": "#fc8080",
"overlay": "#00000088",
"overlayHighlight": "#00ff0033"
}
以下はフォントオプションの一覧です。
fontFamily
: フォントファミリ名。fontBold
: ボールドスタイル (太字) を
true
で有効、 false
で無効。fontItalic
: イタリックスタイル (斜体) を
true
で有効、 false
で無効。カスタムフォントを使用するには、プラグインディレクトリの
*.vst3/Contents/Resources/Fonts
に *.ttf
ファイルを配置します。
注意: fontFamily
、
fontBold
、 fontItalic
で設定したフォントファミリ名とスタイルの組み合わせが
*.vst3/Contents/Resources/Fonts
以下のいずれかの
*.ttf
ファイルに含まれていないときは VSTGUI
が指定するデフォルトフォントが使用されます。
fontFamily
が長さ 0 の文字列 ""
のときはフォールバックとして "Tinos"
に設定されます。長さが 1
以上かつ、存在しないフォントファミリ名が指定されると VSTGUI
が指定するデフォルトフォントが使用されます。
ボールドあるいはイタリック以外のスタイルは VSTGUI がサポートしていないので動作確認していません。該当する例としては Noto フォントの Demi Light や、 Roboto フォントの Thin や Black などがあります。
16 進数カラーコードを使っています。
プラグインはカラーコードの 1 文字目を無視します。よって
?102938
や \n11335577
も有効なカラーコードです。
2 文字目以降のカラーコードの値に 0-9a-f
以外の文字を使わないでください。
以下は設定できる色の一覧です。設定に抜けがあるとデフォルトの色が使われます。
foreground
: 文字の色。foregroundButtonOn
:
オンになっているボタンの文字の色。 foreground
か
boxBackground
のいずれかと同じ値にすることを推奨します。foregroundInactive
:
非アクティブなタブの文字の色。background
: 背景色。boxBackground
: 矩形の UI 部品の内側の背景色。border
: 縁の色。borderCheckbox
: チェックボックスの縁の色。borderLabel
:
パラメータセクションのラベルの左右の直線の色。unfocused
:
つまみがフォーカスされていないときの色。highlightMain
:
フォーカスされたときの色。スライダの値の表示にも使用されます。highlightAccent
:
フォーカスされたときの色。一部のプラグインをカラフルにするために使用されます。highlightButton
:
ボタンがフォーカスされたときの色。highlightWarning
: 変更に注意を要する UI
がフォーカスされたときの色。overlay
: オーバーレイの色。overlayHighlight
:
フォーカスを示すオーバーレイの色。パラメータが割り当てられているコントロールの上で 右クリック すると、 DAW から提供されるコンテキストメニューが開きます。
つまみと数値スライダでは次の操作ができます。
アタックの長さによって音量エンベロープのピーク値が変わります。音量エンベロープのアタックが小さいとき、ピークは通常より少し高くなることがあります。
Dirty Filter にチェックを入れるとノートオンによってプチノイズが出ることがあります。
パラメータの組み合わせによっては直流信号が乗るときがあります。ディストーションなどをかけると面白い音になることがあるので、直流は切っていません。安全のためには SyncSawSynth の後にハイパスフィルタを通すことが望ましいです。またオシロスコープで出力を監視することをお勧めします。
図が小さいときはブラウザのショートカット Ctrl + マウスホイール や、右クリックから「画像だけを表示」などで拡大できます。
図で示されているのは大まかな信号の流れです。実装と厳密に対応しているわけではないので注意してください。
SyncSawSynth のオシレータは内部に 2 つのオシレータを持っています。 1 つは波形生成のために使われ、もう 1 つはハードシンクをトリガするために使われています。ハードシンクに関する用語として、波形生成のためのオシレータのことをスレーブ、トリガに使われるオシレータのことをマスタと呼んでいます。
オシレータの音量。範囲は 0.0 から 1.0 。
オシレータのピッチ。範囲は -24.0 から 24.0 。単位は半音。
値は floor
関数で整数に丸められます。例えば 6.3 なら 6
、 -11.5 なら -12 になります。
オシレータのピッチ。範囲は -100.0 から 100.0 。単位はセント。
Sync
の値は SyncType
の値によって意味が変わります。 Sync
の値の範囲は 0.01
から 16.0 です。
SyncType
は次の4つから選択できます。
Off
Ratio
Fixed-Master
Fixed-Slave
Off
を選ぶとマスタ周波数を 0 Hz
にすることでハードシンクを無効にします。ただし Modulation
の Osc*->Sync1
が 0
より大きいときはマスタ位相が動くのでハードシンクがかかることがあります。
SyncType
が Off
のときは、 Sync
の値は使われません。
Ratio
を選ぶと音程をマスタ周波数に使います。スレーブ周波数はマスタ周波数に
Sync
の値をかけ合わせた値になります。また
Ratio
のときだけ To Freq/Sync
の変調先が入れ替わります。
Fixed-Master
を選ぶと音程をスレーブ周波数に使います。マスタ周波数は
Sync
の値のみによって決まります。
Fixed-Slave
を選ぶと音程をマスタ周波数に使います。スレーブ周波数は
Sync
の値のみによって決まります。
Fixed-Master
と Fixed-Slave
で使われる
Sync
の値を周波数に変換する式は次の通りです。
frequency = 2 * Sync^3
オシレータの波形。
0 から 10 次までの PTR 鋸歯波オシレータとサイン波が選べます。
オシレータの位相。範囲は 0.0 から 1.0 。
Lock
にチェックを入れるとノートオンのたびに位相がリセットされます。
Osc2
の Invert
にチェックを入れると、
Osc2
の出力の正負の符号を変えることで位相を反転します。
チェックを入れるとノートごとに位相の異なる同じ高さの音を重ねます。CPU負荷も2倍になります。
最大同時発音数。この値を減らすとCPU負荷を減らすことができます。
Osc1
の出力による Osc1
のマスタ周波数の変調。範囲は 0.0 から 1.0 。
Osc1
の出力による Osc2
のスレーブ周波数の変調。範囲は 0.0 から 1.0 。
Osc2
の出力による Osc1
のマスタ周波数の変調。範囲は 0.0 から 1.0 。
変調用の AD エンベロープのアタック。範囲は 0.0 から 4.0 。単位は秒。
AD エンベロープの式です。
env(t) := t^a * exp(-b * t)
t: 時間。
a, b: 適当な定数。
変調用の AD エンベロープの特性。範囲は 1.0 から 96.0 。
Curve
の値に応じてディケイの長さが決まります。
AD エンベロープによる Osc1
のスレーブ周波数の変調。範囲は 0.0 から 16.0 。
AD エンベロープによる Osc1
のマスタ周波数の変調。範囲は 0.0 から 16.0 。
AD エンベロープによる Osc2
のスレーブ周波数の変調。範囲は 0.0 から 16.0 。
AD エンベロープによる Osc2
のマスタ周波数の変調。範囲は 0.0 から 16.0 。
LFO の周波数。範囲は 0.01 から 20.0 。単位は Hz 。
LFO とピンクノイズのミックスの比率。範囲は 0.0 から 1.0 。
値が 0.0 のときに LFO のみ、 1.0 のときにピンクノイズのみになります。
ピンクノイズによる変調はスパイクを生じることがあるので注意してください。スパイクを避けるには
To Sync/Freq
の値を 1.0
より小さく設定してください。スパイクは0dBを超えないようにクリップされています。
LFO/ノイズによる Osc1
のスレーブ周波数の変調。範囲は
0.0 から 16.0 。
LFO/ノイズによる Osc1
のマスタ周波数の変調。範囲は 0.0
から 16.0 。
LFO/ノイズによる Osc2
のスレーブ周波数の変調。範囲は
0.0 から 16.0 。
LFO/ノイズによる Osc2
のマスタ周波数の変調。範囲は
0.0 から 16.0 。
シンセサイザの出力音量。範囲は 0.0 から 1.0 。
音量エンベロープのアタックの長さ。範囲は 0.0001 から 16.0 。単位は秒。
音量エンベロープのディケイの長さ。範囲は 0.0001 から 16.0 。単位は秒。
音量エンベロープのサステインの大きさ。範囲は 0.0 から 1.0 。
音量エンベロープのリリースの長さ。範囲は 0.0001 から 16.0 。単位は秒。
音量エンベロープの特性。範囲は 0.0 から 1.0 。
素の音量エンベロープと tanh によって飽和させたエンベロープとを線形補間しています。
gainEnv(t) := expEnv(t) * (tanh(3 * Curve * expEnv(t)) - expEnv(t))
フィルタのカットオフ周波数。範囲は 20.0 から 20000.0 。単位は Hz 。
2 次フィルタのレゾナンス。範囲は 0.001 から 1.0 。
値を最小にすると音量がかなり小さくなります。
フィルタセクションのフィードバック。範囲は 0.0 から 1.0 。
直列につないだ 4 つの 2 次フィルタの出力を 1 つ目のフィルタにフィードバックしています。
フィルタのサチュレーション。範囲は 0.01 から 8.0 。
フィードバックと入力を足し合わせた値をウェーブシェーパに入力するときにかけ合わせる値です。
filterIn = shaper(Sat * (input - Feed * filterOut))
チェックを外すとノートオンのたびにフィルタのバッファをクリアします。
チェックを入れている間はノートオンのたびに音の始まりにプチノイズが乗ることがあります。
フィルタの種類。
LP
: ローパスHP
: ハイパスBP
: バンドパスNotch
: ノッチ (バンドストップ)Bypass
: フィルタの迂回フィルタのサチュレーションに使うウェーブシェーパの種類。
HardClip(x) := clamp(x, -1.0, 1.0)
Tanh(x) := tanh(x)
ShaperA(x) := sin(2 * pi * x) / (1 + 10 * x * x)
ShaperB(x) := 0.7439087749328765 * x^3 * exp(-abs(x))
フィルタエンベロープのアタックの長さ。範囲は 0.0001 から 16.0 。単位は秒。
フィルタエンベロープのディケイの長さ。範囲は 0.0001 から 16.0 。単位は秒。
フィルタエンベロープのサステインの大きさ。範囲は 0.0 から 1.0 。
フィルタエンベロープのリリースの長さ。範囲は 0.0001 から 16.0 。単位は秒。
フィルタエンベロープによるカットオフ周波数の変調。範囲は -1.0 から 1.0 。
フィルタエンベロープによるレゾナンスの変調。範囲は 0.0 から 1.0 。
ノートの MIDI ノート番号によるカットオフ周波数の変調。範囲は -1.0 から 1.0 。
ノートの MIDI ノート番号によるフィードバックの変調。範囲は -1.0 から 1.0 。
style.json
によりプラグインがクラッシュするバグを修正。foregroundInactive
の色を変更。virtual
を追加。style.json
でカスタムフォントを設定するオプションを追加。bypass
パラメータの挙動を修正。この修正によって、ホストがミュート中のプラグインにノートを送り続けても、ミュート解除とともにそれまでに送られたノートがすべて再生されなくなった。このバグは
VST 3 の bypass
パラメータを正しく実装しているホストでのみ発生していた。SyncSawSynth のライセンスは GPLv3 です。 GPLv3 の詳細と、利用したライブラリのライセンスは次のリンクにまとめています。
リンクが切れているときは ryukau@gmail.com
にメールを送ってください。
VST is a trademark of Steinberg Media Technologies GmbH, registered in Europe and other countries.