From e7f45e65b5685702c8f98bf94d0cf508acc96ca1 Mon Sep 17 00:00:00 2001 From: Takamitsu Endo Date: Wed, 23 Oct 2024 18:31:30 +0900 Subject: [PATCH] Add SpectralPhaser manual --- docs/_config.yml | 2 + docs/index.html | 52 +- docs/index.md | 20 +- .../manual/SpectralPhaser/SpectralPhaser.json | 14 + .../SpectralPhaser/SpectralPhaser_en.html | 888 ++++++++++++++++++ .../SpectralPhaser/SpectralPhaser_en.md | 203 ++++ .../SpectralPhaser/SpectralPhaser_ja.html | 883 +++++++++++++++++ .../SpectralPhaser/SpectralPhaser_ja.md | 200 ++++ .../SpectralPhaser/img/SpectralPhaser.drawio | 154 +++ .../SpectralPhaser/img/SpectralPhaser.png | Bin 0 -> 26854 bytes .../SpectralPhaser/img/SpectralPhaser.svg | 3 + ...VST_Compatible_Logo_Steinberg_negative.svg | 82 ++ 12 files changed, 2489 insertions(+), 12 deletions(-) create mode 100644 docs/manual/SpectralPhaser/SpectralPhaser.json create mode 100644 docs/manual/SpectralPhaser/SpectralPhaser_en.html create mode 100644 docs/manual/SpectralPhaser/SpectralPhaser_en.md create mode 100644 docs/manual/SpectralPhaser/SpectralPhaser_ja.html create mode 100644 docs/manual/SpectralPhaser/SpectralPhaser_ja.md create mode 100644 docs/manual/SpectralPhaser/img/SpectralPhaser.drawio create mode 100644 docs/manual/SpectralPhaser/img/SpectralPhaser.png create mode 100644 docs/manual/SpectralPhaser/img/SpectralPhaser.svg create mode 100644 docs/manual/SpectralPhaser/img/VST_Compatible_Logo_Steinberg_negative.svg diff --git a/docs/_config.yml b/docs/_config.yml index e66be3d1..4f4c29db 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -60,6 +60,8 @@ exclude: - manual/RingModSpacer/RingModSpacer_ja.md - manual/SevenDelay/SevenDelay_en.md - manual/SevenDelay/SevenDelay_ja.md +- manual/SpectralPhaser/SpectralPhaser_en.md +- manual/SpectralPhaser/SpectralPhaser_ja.md - manual/SyncSawSynth/SyncSawSynth_en.md - manual/SyncSawSynth/SyncSawSynth_ja.md - manual/TrapezoidSynth/TrapezoidSynth_en.md diff --git a/docs/index.html b/docs/index.html index e3edf9cf..3a4eccaf 100644 --- a/docs/index.html +++ b/docs/index.html @@ -5,7 +5,7 @@ - + index – Uhhyou Plugins @@ -284,7 +284,7 @@

- Update: 2024-10-12 + Update: 2024-10-23

Table of Contents @@ -303,6 +303,8 @@
  • Synthesizers
  • Effects
  • +
  • SpectralPhaser
  • DoubleLoopCymbal
  • VST® 3 プラグインを公開しています。

    -

    何かあれば GitHub - のリポジトリに issue を投げるか ryukau@gmail.com - にメールを送信してもらえれば対応します。お気軽にお問い合わせください。

    +

    何かあれば GitHub + リポジトリの discussion に投稿するか、 + ryukau@gmail.com + にメールを送信してもらえれば対応します。バグ報告は GitHub リポジトリの + issueにどうぞ。お気軽にお問い合わせください。

    paypal.me/ryukau から開発資金を投げ銭することもできます。

    This page is publishing VST® 3 plugins.

    -

    If you find a bug, feel free to report the issue at GitHub repository or - send email to ryukau@gmail.com. Note that I’m not native - in English.

    +

    To make a contact, feel free to post on the + discussion page on GitHub repository. If you find a bug, open a issue at + GitHub repository or send email to ryukau@gmail.com. + Note that I’m not native in English.

    You can fund the development via paypal.me/ryukau.

    RingModSpacerリング モッド スペーサ SevenDelayセブン ディレイ + class="pluginlist"> + SpectralPhaserスペクトラル フェイザ + UltrasonicRingModウルトラソニック リング モッド

    +

    +
    + Image of SpectralPhaser graphical user interface. +
    +

    SpectralPhaser + は周波数領域でマスクをかけることでフェイザのような音が出るエフェクタです。 + FFT に加えて、高速 Walsh-Hadamard 変換 (FWHT) 、 Haar + 変換が使えます。

    + +

    SpectralPhaser is an effect that produces a phaser-like sound by + applying a mask in the frequency domain. In addition to FFT, fast + Walsh-Hadamard transform (FWHT) and Haar transform are available.

    +

    diff --git a/docs/index.md b/docs/index.md index b4478679..8c3882d5 100644 --- a/docs/index.md +++ b/docs/index.md @@ -24,13 +24,13 @@ span.pluginlist { # Uhhyou Plugins [VST®](#vst_logo) 3 プラグインを公開しています。 -何かあれば [GitHub のリポジトリ](https://github.com/ryukau/VSTPlugins)に issue を投げるか `ryukau@gmail.com` にメールを送信してもらえれば対応します。お気軽にお問い合わせください。 +何かあれば [GitHub リポジトリの discussion に投稿](https://github.com/ryukau/VSTPlugins/discussions)するか、 `ryukau@gmail.com` にメールを送信してもらえれば対応します。バグ報告は [GitHub リポジトリの issue ](https://github.com/ryukau/VSTPlugins)にどうぞ。お気軽にお問い合わせください。 [paypal.me/ryukau](https://www.paypal.com/paypalme/ryukau) から開発資金を投げ銭することもできます。 This page is publishing [VST®](#vst_logo) 3 plugins. -If you find a bug, feel free to report the issue at [GitHub repository](https://github.com/ryukau/VSTPlugins) or send email to `ryukau@gmail.com`. Note that I'm not native in English. +To make a contact, feel free to [post on the discussion page on GitHub repository](https://github.com/ryukau/VSTPlugins/discussions). If you find a bug, [open a issue at GitHub repository](https://github.com/ryukau/VSTPlugins/issues) or send email to `ryukau@gmail.com`. Note that I'm not native in English. You can fund the development via [paypal.me/ryukau](https://www.paypal.com/paypalme/ryukau). @@ -196,11 +196,27 @@ All the plugin download link can be found at release page on following link. SevenDelayセブン ディレイ + +SpectralPhaserスペクトラル フェイザ + UltrasonicRingModウルトラソニック リング モッド

    +### SpectralPhaser +
    +Image of SpectralPhaser graphical user interface. +
    + +SpectralPhaser は周波数領域でマスクをかけることでフェイザのような音が出るエフェクタです。 FFT に加えて、高速 Walsh-Hadamard 変換 (FWHT) 、 Haar 変換が使えます。 + +- [SpectralPhaser のマニュアル (日本語)](manual/SpectralPhaser/SpectralPhaser_ja.html) + +SpectralPhaser is an effect that produces a phaser-like sound by applying a mask in the frequency domain. In addition to FFT, fast Walsh-Hadamard transform (FWHT) and Haar transform are available. + +- [SpectralPhaser Manual (English)](manual/SpectralPhaser/SpectralPhaser_en.html) + ### DoubleLoopCymbal
    Image of DoubleLoopCymbal graphical user interface. diff --git a/docs/manual/SpectralPhaser/SpectralPhaser.json b/docs/manual/SpectralPhaser/SpectralPhaser.json new file mode 100644 index 00000000..2dbfe3e4 --- /dev/null +++ b/docs/manual/SpectralPhaser/SpectralPhaser.json @@ -0,0 +1,14 @@ +{ + "SpectralPhaser": { + "latest_version": "0.1.0", + "urls": { + "plugin_url": [ + "https://github.com/ryukau/VSTPlugins/releases/download/UhhyouPlugins0.64.0/SpectralPhaser_0.1.0.zip" + ], + "preset_url": [] + }, + "changelog": { + "0.1.0": { "en": ["Initial release."], "ja": ["初期リリース。"] } + } + } +} diff --git a/docs/manual/SpectralPhaser/SpectralPhaser_en.html b/docs/manual/SpectralPhaser/SpectralPhaser_en.html new file mode 100644 index 00000000..6484ba53 --- /dev/null +++ b/docs/manual/SpectralPhaser/SpectralPhaser_en.html @@ -0,0 +1,888 @@ + + + + + + + + + SpectralPhaser_en – Uhhyou Plugins + + + + + + +
    +

    Back to Index

    +

    + Update: 2024-10-23 +

    +
    + Table of Contents + +
    +
    +

    +

    +

    SpectralPhaser is an effect that produces a phaser-like sound by + applying a mask in the frequency domain. In addition to FFT, fast + Walsh-Hadamard transform (FWHT) and Haar transform are available.

    + +

    Note: Presets produce the expected sound only if + the sampling rate is 48000 Hz.

    +

    full package contains following builds.

    +
      +
    • Windows (x86_64)
    • +
    • Linux (x86_64)
    • +
    • macOS (Universal 2)
    • +
    +

    Linux build is built on Ubuntu 24.04. If you are using distribution + other than Ubuntu 24.04, plugin will not likely to run. In this case, + please take a look at build + instruction.

    +

    macOS package is recommended for macOS user. I can’t + purchase Apple Developer Program, therefore installation requires a + workaround to bypass Gatekeeper. Details of workaround are written in + Installation -> macOS Specific + section.

    +

    +

    Feel free to contact me on GitHub + repository or ryukau@gmail.com.

    +

    You can fund the development through paypal.me/ryukau.

    +

    +

    +

    Move *.vst3 directory to:

    +
      +
    • /Program Files/Common Files/VST3/ for Windows.
    • +
    • $HOME/.vst3/ for Linux.
    • +
    • /Users/$USERNAME/Library/Audio/Plug-ins/VST3/ for + macOS.
    • +
    +

    DAW may provides additional VST3 directory. For more information, + please refer to the manual of the DAW.

    +

    +

    Notice: Some plugins don’t have presets provided + by Uhhyou Plugins.

    +

    Presets are included in the plugin package linked at the top of + this page. To install presets, follow the steps below.

    +
      +
    1. Download plugin from a link at the top of this page.
    2. +
    3. Extract downloaded zip file.
    4. +
    5. Open presets directory placed in extracted + package.
    6. +
    7. Move Uhhyou directory into an OS specific preset + directory (see below).
    8. +
    +

    Below is a list of preset directories for each OS.

    +
      +
    • Windows : + /Users/$USERNAME/Documents/VST3 Presets
    • +
    • Linux : $HOME/.vst3/presets
    • +
    • macOS : /Users/$USERNAME/Library/Audio/Presets
    • +
    +

    Preset directory name must be the same as the plugin. If preset + directory does not exist, create it.

    + +

    +

    If DAW doesn’t recognize the plugin, try installing C++ + redistributable (vc_redist.x64.exe). Installer can be + found in the link below.

    + +

    +

    On Ubuntu 24.04, those packages are required.

    +
    sudo apt install libxcb-cursor0  libxkbcommon-x11-0
    +

    If DAW doesn’t recognize the plugin, take a look at + Package Requirements section of the link below and make + sure all the VST3 related package is installed.

    + +

    REAPER on Linux may not recognize the plugin. A workaround is to + delete a file ~/.config/REAPER/reaper-vstplugins64.ini + and restart REAPER.

    +

    +

    Important: full package is not + confirmed working. When using full, try removing + following files.

    +
      +
    • Contents/Resources/Documentation
    • +
    • Contents/x86_64-linux
    • +
    • Contents/x86_64-win
    • +
    +

    macOS package doesn’t contain above files. Also, all + packages are in “ad-hoc signing” state set by codesign + command.

    +

    +

    When trying to run plugin first time, following message may appear + on macOS.

    +
    <PluginName>.vst3 is damaged and can't be opened. You should move it to the Trash.
    +

    In this case, open terminal and try running one or both of + following command to unzipped .vst3 directory. Replace + /path/to/PluginName.vst3 according to your install + location.

    +
    xattr -rd com.apple.quarantine /path/to/PluginName.vst3
    +xattr -rc /path/to/PluginName.vst3
    +

    +

    Plugin may be considered as unsigned/un-notarized application. In + this case, open System Preferences, go to Security & Privacy → + General, then click the Open Anyway button. The offcial Apple help + page linked below has screenshots for the procedure. See “If you want + to open an app that hasn’t been notarized or is from an unidentified + developer” section.

    + +

    If the plugin is still not working, try changing install location + to /Library/Audio/Plug-ins/VST3/ or + /Users/$USERNAME/Library/Audio/Plug-ins/VST3/ whichever + still haven’t tried.

    +

    If all the above methods do not work, try following the steps + below.

    +
      +
    1. Open terminal and run + sudo spctl --master-disable.
    2. +
    3. Go to System Preferences → Security and Privacy → General → Allow + apps downloaded from, then select “Anywhere”.
    4. +
    +

    Beware that steps above degrades security of your system. To revert + the settings, follow the steps below.

    +
      +
    1. Go to System Preferences → Security and Privacy → General → Allow + apps downloaded from, then select option to “App Store and identified + developers”.
    2. +
    3. Open terminal and run + sudo spctl --master-enable.
    4. +
    +

    +

    Note This section may not relevant to + macOS packages. However it’s not verified. (GitHub + issue)

    +

    To use full package, following command might be + used.

    +
    sudo codesign --force --deep -s - /path/to/PluginName.vst3
    +

    codesign might not be available without installing Xcode.

    +

    + +

    +

    At first time, create color config file to:

    +
      +
    • /Users/USERNAME/AppData/Roaming/UhhyouPlugins/style/style.json + on Windows.
    • +
    • $XDG_CONFIG_HOME/UhhyouPlugins/style/style.json on + Linux. +
        +
      • If $XDG_CONFIG_HOME is empty, make + $HOME/.config/UhhyouPlugins/style/style.json.
      • +
    • +
    • /Users/$USERNAME/Library/Preferences/UhhyouPlugins/style/style.json + on macOS.
    • +
    +

    style.json will be loaded for each time a plugin + window opens.

    +

    Several color themes are available on the link below. To use, copy + the text to style.json.

    + +

    Below is an example of 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"
    +}
    +

    +

    Following is a list of font options.

    +
      +
    • fontFamily: Font family name.
    • +
    • fontBold: Enable bold style when + true, disable when false.
    • +
    • fontItalic: Enable italic style when + true, disable when false.
    • +
    +

    System font can be used as fontFamily. To use + different fonts for different plugins, place *.ttf file + into custom font path: + *.vst3/Contents/Resources/Fonts.

    +

    Notice: If the combination of + fontFamily, fontBold, + fontItalic does not exist in custom font path, default + font of VSTGUI is used.

    +

    If fontFamily is set to empty string "", + then "Tinos" + is used as fallback. If the length is greater than 1 and the font + family name doesn’t exist, default font of VSTGUI is used.

    +

    Styles other than bold, italic or bold-italic are not supported by + VSTGUI. For example, “Thin”, “Light”, “Medium”, and “Black” weights + cannot be used.

    +

    +

    Hex color codes are used.

    +
      +
    • 6 digit color is RGB.
    • +
    • 8 digit color is RGBA.
    • +
    +

    First letter # is conventional. Plugins ignore the + first letter of color code, thus ?102938, + \n11335577 are valid.

    +

    Do not use characters outside of 0-9a-f for color + value.

    +

    Following is a list of color options. If an option is missing, + default color will be used.

    +
      +
    • foreground: Text color.
    • +
    • foregroundButtonOn: Text color of active toggle + button. Recommend to use the same value of foreground or + boxBackground.
    • +
    • foregroundInactive: Text color of inactive + components. Currently, only used for TabView.
    • +
    • background: Background color.
    • +
    • boxBackground: Background color of inside of box + shaped components (Barbox, Button, Checkbox, OptionMenu, TextKnob, + VSlider).
    • +
    • border: Border color of box shaped components.
    • +
    • borderCheckbox: Border color of CheckBox.
    • +
    • borderLabel: Line color of parameter section + label.
    • +
    • unfocused: Color to fill unfocused components. + Currently, only used for knobs.
    • +
    • highlightMain: Color to indicate focus is on a + component. Highlight colors are also used for value of slider + components (BarBox and VSlider).
    • +
    • highlightAccent: Same as highlightMain. + Used for cosmetics.
    • +
    • highlightButton: Color to indicate focus is on a + button.
    • +
    • highlightWarning: Same as highlightMain, + but only used for parameters which requires extra caution.
    • +
    • overlay: Overlay color. Used to overlay texts and + indicators.
    • +
    • overlayHighlight: Overlay color to highlight current + focus.
    • +
    +

    +

    Right Click on the controls pops up a context menu + provided by DAW.

    +

    Knob and slider provides following controls:

    +
      +
    • Ctrl + Left Click: Reset value.
    • +
    • Shift + Left Drag: Fine adjustment.
    • +
    • Middle Click : Rotate through minimum, default and + maximum value.
    • +
    • Shift + Middle Click : Take floor of current + value. +
        +
      • Note: For decibel (dB) parameters, + floor is applied after the value is converted to amplitude.
      • +
    • +
    +

    +

    If the image is small, use Ctrl + Mouse Wheel + or “View Image” on right click menu to scale.

    +

    Diagram only shows overview. It’s not exact implementation.

    +

    +

    +

    Characters inside of square brackets [] represents unit. Following + is a list of units used in SpectralPhaser.

    +
      +
    • [dB] : Decibel.
    • +
    +

    +
    +
    Output [dB]
    +
    +

    Output gain.

    +
    +
    Dry/Wet
    +
    +

    Mixing ratio of input and effect output.

    +

    0 is input only, 1 is effect output only.

    +
    +
    Side Chain
    +
    +

    When enabled, the sidechain input is used for frequency + masking.

    +

    SpectralPhaser could be used as a vocoder when both + Side Chain and Latency are enabled. In this + case, set Frame Size to around 2048. If + Frame Size is small, the effect will be weaker.

    +

    The vocoder mode is not suitable for real-time use because latency + is high.

    +
    +
    Latency
    +
    +

    When enabled, Frame Size will be used as latency in + samples.

    +
    +
    +

    +
    +
    Waveform
    +
    +

    LFO waveform.

    +
    +
    Wave Mod.
    +
    +

    LFO waveform modifier.

    +
    +
    Phase
    +
    +

    Initial phase of LFO.

    +
    +
    Stereo
    +
    +

    Phase offset of LFOs between left and right channels.

    +
    +
    Rate
    +
    +

    LFO frequency multiplier.

    +

    This can be useful to slightly shift the tempo sync timing.

    +
    +
    Sync.
    +
    +

    Interval of LFO tempo synchronization.

    +

    2 numbers corresponds to the numerals in time signatur. + (left/right = upper/lower).

    +
      +
    • Left number correspond to upper numeral of time signature.
    • +
    • Right number correspond to lower numeral of time signature
    • +
    +

    The plugin receives musical time as beats, where a beat has a + relative length depending on the time signature. Here are some + examples:

    +
      +
    • 1 / 1 synchronizes to 1 bar.
    • +
    • 1 / 4 synchronizes to 1 beat (a quarter note), when time signature + is N / 4.
    • +
    • 1 / 6 synchronizes to 1 beat, when time signature is N / 6.
    • +
    • 3 / 16 synchronizes to 3 / 4 beat (a dotted 8th note), when time + signature is N / 4.
    • +
    +

    When time signature is changed, there may be a momentary loss of + sync immediately after the change.

    +
    +
    +

    +
    +
    Transform
    +
    +

    Type of time to frequency transformation.

    +

    FFT is the normal choice, FWHT and Haar will sound rough.

    +

    Attention: Changing Transform stops + the sound for duration of Frame Size. This is because the + buffer is reset to avoid loud bursts.

    +
    +
    Frame Size
    +
    +

    Length of a frame over which a transform is performed.

    +

    Frame Size also represents delay time in samples.

    +

    When Latency is enabled, Frame Size will + be used as latency in samples.

    +

    When Frame Size is large and DAW buffer size is small, + the sound may stutter. In this case, reduce Frame Size to + reduce CPU load.

    +
    +
    Feedback
    +
    +

    Feedback gain of delay.

    +
    +
    +

    +

    LFO modulation can be changed by the small knobs on right side of + parameter value.

    +
    +
    Waveform
    +
    +

    Waveform of frequency mask.

    +
    +
    Mix
    +
    +

    Mixing ratio of frequency mask.

    +

    0 means no masking, 1 means full masking.

    +
    +
    Phase
    +
    +

    Phase of the frequency mask waveform.

    +

    Modulating Phase with an LFO produces a sound similar + to a phaser.

    +
    +
    Freq.
    +
    +

    Frequency of frequency mask waveform.

    +

    Higher the Freq., more notches.

    +

    Setting Freq. to 0 disables frequency masking.

    +
    +
    Threshold
    +
    +

    When a value in a frequency mask is less than + Threshold, the corresponding frequency is set to + zero.

    +
    +
    Rotation
    +
    +

    Amount of phase rotation in the frequency domain.

    +

    This only applies when Transform is FFT; when other + orthogonal transforms are selected, Rotation is used as + an amount to swap frequency components.

    +
    +
    Spectral Shift
    +
    +

    Frequency shift amount for each feedback.

    +
    +
    Octave Down
    +
    +

    Amount of octave down effect. Octave down is applied for each + feedback.

    +

    Depending on the settings, the effect may not be noticeable. To get + the effect, try setting Feedback to 1 and + Octave Down to around 0.1.

    +
    +
    +

    +
      +
    • 0.1.0 +
        +
      • Initial release.
      • +
    • +
    +

    +

    N/A.

    +

    +

    SpectralPhaser is licensed under GPLv3. Complete licenses are + linked below.

    + +

    If the link above doesn’t work, please send email to + ryukau@gmail.com.

    +

    +

    VST is a trademark of Steinberg Media Technologies GmbH, registered + in Europe and other countries.

    + + + + + diff --git a/docs/manual/SpectralPhaser/SpectralPhaser_en.md b/docs/manual/SpectralPhaser/SpectralPhaser_en.md new file mode 100644 index 00000000..47969a44 --- /dev/null +++ b/docs/manual/SpectralPhaser/SpectralPhaser_en.md @@ -0,0 +1,203 @@ +--- +lang: en +... + +# SpectralPhaser +![](img/SpectralPhaser.png) + +SpectralPhaser is an effect that produces a phaser-like sound by applying a mask in the frequency domain. In addition to FFT, fast Walsh-Hadamard transform (FWHT) and Haar transform are available. + +{% for target, download_url in latest_download_url["SpectralPhaser"].items() %} +- [Download SpectralPhaser {{ latest_version["SpectralPhaser"] }} `{{ target }}` - VST 3 (github.com)]({{ download_url }}) VST compatible logo. +{%- endfor %} +{%- if preset_download_url["SpectralPhaser"]|length != 0%} +- [Download Presets (github.com)]({{ preset_download_url["SpectralPhaser"] }}) +{%- endif %} + +**Note**: Presets produce the expected sound only if the sampling rate is 48000 Hz. + +{{ section["package"] }} + +{{ section["contact_installation_guiconfig"] }} + +## Controls +{{ section["gui_common"] }} + +{{ section["gui_knob"] }} + +## Block Diagram +If the image is small, use Ctrl + Mouse Wheel or "View Image" on right click menu to scale. + +Diagram only shows overview. It's not exact implementation. + +![](img/SpectralPhaser.svg) + +## Parameters +Characters inside of square brackets \[\] represents unit. Following is a list of units used in SpectralPhaser. + +- \[dB\] : Decibel. + +### Mix +Output \[dB\] + +: Output gain. + +Dry/Wet + +: Mixing ratio of input and effect output. + + 0 is input only, 1 is effect output only. + +Side Chain + +: When enabled, the sidechain input is used for frequency masking. + + SpectralPhaser could be used as a vocoder when both `Side Chain` and `Latency` are enabled. In this case, set `Frame Size` to around 2048. If `Frame Size` is small, the effect will be weaker. + + The vocoder mode is not suitable for real-time use because latency is high. + +Latency + +: When enabled, `Frame Size` will be used as latency in samples. + +### LFO +Waveform + +: LFO waveform. + +Wave Mod. + +: LFO waveform modifier. + +Phase + +: Initial phase of LFO. + +Stereo + +: Phase offset of LFOs between left and right channels. + +Rate + +: LFO frequency multiplier. + + This can be useful to slightly shift the tempo sync timing. + +Sync. + +: Interval of LFO tempo synchronization. + + 2 numbers corresponds to the numerals in time signatur. (`left/right` = `upper/lower`). + + - Left number correspond to upper numeral of time signature. + - Right number correspond to lower numeral of time signature + + The plugin receives musical time as beats, where a beat has a relative length depending on the time signature. Here are some examples: + + - 1 / 1 synchronizes to 1 bar. + - 1 / 4 synchronizes to 1 beat (a quarter note), when time signature is N / 4. + - 1 / 6 synchronizes to 1 beat, when time signature is N / 6. + - 3 / 16 synchronizes to 3 / 4 beat (a dotted 8th note), when time signature is N / 4. + + When time signature is changed, there may be a momentary loss of sync immediately after the change. + +### Delay +Transform + +: Type of time to frequency transformation. + + FFT is the normal choice, FWHT and Haar will sound rough. + + **Attention**: Changing `Transform` stops the sound for duration of `Frame Size`. This is because the buffer is reset to avoid loud bursts. + +Frame Size + +: Length of a frame over which a transform is performed. + + `Frame Size` also represents delay time in samples. + + When `Latency` is enabled, `Frame Size` will be used as latency in samples. + + When `Frame Size` is large and DAW buffer size is small, the sound may stutter. In this case, reduce `Frame Size` to reduce CPU load. + +Feedback + +: Feedback gain of delay. + +### Mask +LFO modulation can be changed by the small knobs on right side of parameter value. + +Waveform + +: Waveform of frequency mask. + +Mix + +: Mixing ratio of frequency mask. + + 0 means no masking, 1 means full masking. + +Phase + +: Phase of the frequency mask waveform. + + Modulating `Phase` with an LFO produces a sound similar to a phaser. + +Freq. + +: Frequency of frequency mask waveform. + + Higher the `Freq.`, more notches. + + Setting `Freq.` to 0 disables frequency masking. + +Threshold + +: When a value in a frequency mask is less than `Threshold`, the corresponding frequency is set to zero. + +Rotation + +: Amount of phase rotation in the frequency domain. + + This only applies when `Transform` is FFT; when other orthogonal transforms are selected, `Rotation` is used as an amount to swap frequency components. + +Spectral Shift + +: Frequency shift amount for each feedback. + +Octave Down + +: Amount of octave down effect. Octave down is applied for each feedback. + + Depending on the settings, the effect may not be noticeable. To get the effect, try setting `Feedback` to 1 and `Octave Down` to around 0.1. + +## Change Log +{%- for version, logs in changelog["SpectralPhaser"].items() %} +- {{version}} + {%- for log in logs["en"] %} + - {{ log }} + {%- endfor %} +{%- endfor %} + +## Old Versions +{%- if old_download_link["SpectralPhaser"]|length == 0 %} +N/A. +{%- else %} + {%- for x in old_download_link["SpectralPhaser"] %} +- [SpectralPhaser {{ x["version"] }} - VST 3 (github.com)]({{ x["url"] }}) + {%- endfor %} +{%- endif %} + +## License +SpectralPhaser is licensed under GPLv3. Complete licenses are linked below. + +- [https://github.com/ryukau/VSTPlugins/tree/master/License](https://github.com/ryukau/VSTPlugins/tree/master/License) + +If the link above doesn't work, please send email to `ryukau@gmail.com`. + +### About VST +VST is a trademark of Steinberg Media Technologies GmbH, registered in Europe and other countries. diff --git a/docs/manual/SpectralPhaser/SpectralPhaser_ja.html b/docs/manual/SpectralPhaser/SpectralPhaser_ja.html new file mode 100644 index 00000000..6be40c4d --- /dev/null +++ b/docs/manual/SpectralPhaser/SpectralPhaser_ja.html @@ -0,0 +1,883 @@ + + + + + + + + + SpectralPhaser_ja – Uhhyou Plugins + + + + + + +
    +

    Back to Index

    +

    + Update: 2024-10-23 +

    +
    + Table of Contents + +
    +
    +

    +

    +

    SpectralPhaserスペクトラル フェイザ + は周波数領域でマスクをかけることでフェイザのような音が出るエフェクタです。 + FFT に加えて、高速 Walsh-Hadamard 変換 (FWHT) 、 Haar + 変換といった直行変換が使えます。

    + +

    注意: プリセットはサンプリング周波数が 48000 Hz + でなければ想定された音が出ません。

    +

    full パッケージには次のビルドが含まれています。

    +
      +
    • Windows (x86_64)
    • +
    • Linux (x86_64)
    • +
    • macOS (Universal 2)
    • +
    +

    Linux ビルドは Ubuntu 24.04 でビルドしています。もし Ubuntu 24.04 + 以外のディストリビューションを使っているときは、プラグインが読み込まれないなどの不具合が起こることがあります。この場合はビルド手順に沿ってソースコードからビルドしてください。

    +

    macOS で使用するときは macOS + パッケージのダウンロードを推奨します。また Apple Developer Program + に加入していないので、インストール時に Gatekeeper + を迂回するように設定する必要があります。詳細は + インストール -> macOS + の節を参照してください。

    +

    +

    何かあれば GitHub + のリポジトリに issue を作るか ryukau@gmail.com + までお気軽にどうぞ。

    +

    paypal.me/ryukau + から開発資金を投げ銭することもできます。

    +

    +

    +

    名前が .vst3 で終わるディレクトリを OS + ごとに決められた位置に配置してください。

    +
      +
    • Windows では /Program Files/Common Files/VST3/ + に配置します。
    • +
    • Linux では $HOME/.vst3/ に配置します。
    • +
    • macOS では /Library/Audio/Plug-ins/VST3/ あるいは + /Users/$USERNAME/Library/Audio/Plug-ins/VST3/ + に配置します。
    • +
    +

    DAW によっては上記とは別に VST3 + をインストールできるディレクトリを提供していることがあります。詳しくは利用している + DAW のマニュアルを参照してください。

    +

    +

    注意: プリセットの無いプラグインもあります。

    +

    プリセットはページの最上部のリンクからダウンロードできるプラグインパッケージに含まれています。以下はプリセットのインストール手順です。

    +
      +
    1. ページの最上部のリンクからプラグインをダウンロード。
    2. +
    3. ダウンロードした zip ファイルを解凍。
    4. +
    5. presets ディレクトリ内の Uhhyou + ディレクトリを OS ごとに決められたディレクトリに配置。
    6. +
    +

    以下は OS ごとのプリセットの配置先の一覧です。

    +
      +
    • Windows : + /Users/$USERNAME/Documents/VST3 Presets
    • +
    • Linux : $HOME/.vst3/presets
    • +
    • macOS : /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/ + のいずれか使っていなかったほうに変えてみてください。

    +

    上記の方法がすべて上手くいかなかったときは以下の手順を試してみてください。

    +
      +
    1. ターミナルを開いて sudo spctl --master-disable + を実行。
    2. +
    3. システム環境設定を開いて「セキュリティとプライバシー」 → 「一般」 + → + 「ダウンロードしたアプリケーションの実行許可」と辿り、「全てのアプリケーションを許可」を選択。
    4. +
    +

    上記の手順を実行するとシステムのセキュリティが弱くなるので注意してください。元に戻すには以下の手順を実行してください。

    +
      +
    1. システム環境設定を開いて「セキュリティとプライバシー」 → 「一般」 + → 「ダウンロードしたアプリケーションの実行許可」と辿り、「App Store + と認証済みの開発元からのアプリケーションを許可」を選択。
    2. +
    3. ターミナルを開いて sudo spctl --master-enable + を実行。
    4. +
    +

    +

    注意 この節の内容は macOS + パッケージには関連しないと考えられますが未検証です。 (GitHub の + issue)

    +

    full + パッケージを利用する場合は以下のコマンドを適用することで利用できるかもしれません。

    +
    sudo codesign --force --deep -s - /path/to/PluginName.vst3
    +

    codesign の利用には Xcode + のインストールが必要となるかもしれません。

    +

    + +

    +

    初回設定時は手動で次のファイルを作成してください。

    +
      +
    • Windows では + /Users/ユーザ名/AppData/Roaming/UhhyouPlugins/style/style.json + 。
    • +
    • Linux では + $XDG_CONFIG_HOME/UhhyouPlugins/style/style.json 。 +
        +
      • $XDG_CONFIG_HOME が空のときは + $HOME/.config/UhhyouPlugins/style/style.json
      • +
    • +
    • macOS では + /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 、 + fontBoldfontItalic + で設定したフォントファミリ名とスタイルの組み合わせが + *.vst3/Contents/Resources/Fonts 以下のいずれかの + *.ttf ファイルに含まれていないときは VSTGUI + が指定するデフォルトフォントが使用されます。

    +

    fontFamily が長さ 0 の文字列 "" + のときはフォールバックとして "Tinos" + に設定されます。長さが 1 + 以上かつ、存在しないフォントファミリ名が指定されると VSTGUI + が指定するデフォルトフォントが使用されます。

    +

    ボールドあるいはイタリック以外のスタイルは VSTGUI + がサポートしていないので動作確認していません。該当する例としては Noto + フォントの Demi Light や、 Roboto フォントの Thin や Black + などがあります。

    +

    +

    16 進数カラーコードを使っています。

    +
      +
    • 6 桁の色は RGB 。
    • +
    • 8 桁の色は RGBA 。
    • +
    +

    プラグインはカラーコードの 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 + から提供されるコンテキストメニューが開きます。

    +

    つまみと数値スライダでは次の操作ができます。

    +
      +
    • Ctrl + 左クリック : 値のリセット。
    • +
    • Shift + 左ドラッグ : 細かい値の変更。
    • +
    • ホイールクリック : + 最小値、デフォルト値、最大値の切り替え。
    • +
    • Shift + ホイールクリック : + 現在値の小数点以下を切り捨て。 +
        +
      • 注意: + デシベル表記のパラメータは、振幅に変換された後の値について切り捨て。
      • +
    • +
    +

    +

    図が小さいときはブラウザのショートカット Ctrl + + マウスホイール + や、右クリックから「画像だけを表示」などで拡大できます。

    +

    図で示されているのは大まかな信号の流れです。実装と厳密に対応しているわけではないので注意してください。

    +

    +

    +

    角かっこ [] で囲まれているのは単位です。以下は単位の一覧です。

    +
      +
    • [dB] : デシベル (decibel) 。
    • +
    +

    +
    +
    Output [dB]
    +
    +

    出力ゲインです。

    +
    +
    Dry/Wet
    +
    +

    入力と、エフェクトのかかった出力の比率です。

    +

    0 のとき入力のみ、 1 のときエフェクト出力のみになります。

    +
    +
    Side Chain
    +
    +

    有効にするとサイドチェイン入力を周波数マスクに使います。

    +

    Latency + と同時に有効にすることでボコーダーになります。このとき + Frame Size は 2048 あたりに設定してください。 + Frame Size が小さいと効果が薄くなります。

    +

    ボコーダーとしての使用は大きなレイテンシが出るため、リアルタイム向けではありません。

    +
    +
    Latency
    +
    +

    有効にすると Frame Size + で設定したサンプル数をレイテンシとして DAW に伝えます。

    +
    +
    +

    +
    +
    Waveform
    +
    +

    LFO の波形です。

    +
    +
    Wave Mod.
    +
    +

    LFO の波形を変えるパラメータです。

    +
    +
    Phase
    +
    +

    LFO の初期位相です。

    +
    +
    Stereo
    +
    +

    LFO の位相を左右でずらす量です。

    +
    +
    Rate
    +
    +

    LFO の周波数の倍率です。

    +

    テンポシンクを少しずらしたいときなどに使えます。

    +
    +
    Sync.
    +
    +

    LFO の周波数の同期間隔です。

    +

    左右の数は、それぞれ拍子記号の上下の数字と対応しています。 + (左 / 右 = 上 / 下)

    +

    プラグインは音楽的な経過時間を拍数として受け取ります。そして 1 + 拍は拍子記号によって長さが相対的に変わります。以下に例をいくつか挙げます。

    +
      +
    • 1 / 1 のとき 1 小節に同期。
    • +
    • 拍子が N / 4 であれば Sync. が 1 / 4 のとき 1 拍 (4 + 分音符) に同期。
    • +
    • 拍子が N / 6 であれば Sync. が 1 / 6 のとき 1 + 拍に同期。
    • +
    • 拍子が N / 4 であれば Sync. が 3 / 16 のとき 3 / 4 拍 + (付点 8 分音符) に同期。
    • +
    +

    曲中で拍子記号が変わると、変わった直後に一時的に同期がずれることがあります。

    +
    +
    +

    +
    +
    Transform
    +
    +

    直行変換の種類です。

    +

    通常は FFT を選んでください。 FWHT と Haar + はざらざらとした音になります。

    +

    注意: Transform を変更すると + Frame Size + の長さだけ音が止まります。爆発的に大きい音を避けるためにバッファがリセットされることが原因です。

    +
    +
    Frame Size
    +
    +

    直行変換を行うフレームの長さで、単位はサンプル数です。

    +

    この値がそのままディレイ時間になります。

    +

    Latency を有効にしたときは Frame Size + と同じサンプル数のレイテンシを DAW に伝えます。

    +

    Frame Size が大きく、 DAW + のバッファサイズが小さいとき、音がぶつぶつと途切れるようになることがあるかもしれません。このときは計算が間に合っていないので + Frame Size を小さくしてください。

    +
    +
    Feedback
    +
    +

    ディレイのフィードバックです。

    +
    +
    +

    +

    パラメータの右側の小さいつまみで LFO + による変調量を変えられます。

    +
    +
    Waveform
    +
    +

    周波数マスクの波形です。

    +
    +
    Mix
    +
    +

    周波数マスクをかける割合です。

    +

    0 のときマスクなし、 1 のとき完全にマスクします。

    +
    +
    Phase
    +
    +

    周波数マスクの波形の位相です。

    +

    Phase を LFO + で変調するとフェイザと似たような音が出ます。

    +
    +
    Freq.
    +
    +

    周波数マスクの波形の周波数です。

    +

    Freq. が高くなるほど、ノッチの数が多くなります。

    +

    Freq. を 0 にすると周波数マスクが無効になります。

    +
    +
    Threshold
    +
    +

    周波数マスクの値が Threshold + よりも小さいとき、その周波数を 0 にします。

    +
    +
    Rotation
    +
    +

    周波数領域で位相を回転する量です。

    +

    というのは Transform が FFT + のときだけで、他の直行変換が選択されているときは Rotation + に応じて周波数成分の入れ替えが行われます。

    +
    +
    Spectral Shift
    +
    +

    フィードバックごとに周波数成分をシフトする量です。

    +
    +
    Octave Down
    +
    +

    フィードバックごとに周波数成分を約 1 + オクターブ下に移す割合です。

    +

    設定によっては効果があまり出ません。 Feedback を 1 、 + Octave Down を 0.1 あたりに設定すると効果が出ます。

    +
    +
    +

    +
      +
    • 0.1.0 +
        +
      • 初期リリース。
      • +
    • +
    +

    +

    旧バージョンはありません。

    +

    +

    SpectralPhaser のライセンスは GPLv3 です。 GPLv3 + の詳細と、利用したライブラリのライセンスは次のリンクにまとめています。

    + +

    リンクが切れているときは ryukau@gmail.com + にメールを送ってください。

    +

    +

    VST is a trademark of Steinberg Media Technologies GmbH, registered + in Europe and other countries.

    + + + + + diff --git a/docs/manual/SpectralPhaser/SpectralPhaser_ja.md b/docs/manual/SpectralPhaser/SpectralPhaser_ja.md new file mode 100644 index 00000000..320095a0 --- /dev/null +++ b/docs/manual/SpectralPhaser/SpectralPhaser_ja.md @@ -0,0 +1,200 @@ +--- +lang: ja +... + +# SpectralPhaser +![](img/SpectralPhaser.png) + +SpectralPhaserスペクトラル フェイザ は周波数領域でマスクをかけることでフェイザのような音が出るエフェクタです。 FFT に加えて、高速 Walsh-Hadamard 変換 (FWHT) 、 Haar 変換といった直行変換が使えます。 + +{% for target, download_url in latest_download_url["SpectralPhaser"].items() %} +- [SpectralPhaser {{ latest_version["SpectralPhaser"] }} `{{ target }}` - VST 3 をダウンロード (github.com)]({{ download_url }}) VST compatible logo. +{%- endfor %} +{%- if preset_download_url["SpectralPhaser"]|length != 0%} +- [プリセットをダウンロード (github.com)]({{ preset_download_url["SpectralPhaser"] }}) +{%- endif %} + +**注意**: プリセットはサンプリング周波数が 48000 Hz でなければ想定された音が出ません。 + +{{ section["package"] }} + +{{ section["contact_installation_guiconfig"] }} + +## 操作 +{{ section["gui_common"] }} + +{{ section["gui_knob"] }} + +## ブロック線図 +図が小さいときはブラウザのショートカット Ctrl + マウスホイール や、右クリックから「画像だけを表示」などで拡大できます。 + +図で示されているのは大まかな信号の流れです。実装と厳密に対応しているわけではないので注意してください。 + +![](img/SpectralPhaser.svg) + +## パラメータ +角かっこ \[\] で囲まれているのは単位です。以下は単位の一覧です。 + +- \[dB\] : デシベル (decibel) 。 + +### Mix +Output \[dB\] + +: 出力ゲインです。 + +Dry/Wet + +: 入力と、エフェクトのかかった出力の比率です。 + + 0 のとき入力のみ、 1 のときエフェクト出力のみになります。 + +Side Chain + +: 有効にするとサイドチェイン入力を周波数マスクに使います。 + + `Latency` と同時に有効にすることでボコーダーになります。このとき `Frame Size` は 2048 あたりに設定してください。 `Frame Size` が小さいと効果が薄くなります。 + + ボコーダーとしての使用は大きなレイテンシが出るため、リアルタイム向けではありません。 + +Latency + +: 有効にすると `Frame Size` で設定したサンプル数をレイテンシとして DAW に伝えます。 + +### LFO +Waveform + +: LFO の波形です。 + +Wave Mod. + +: LFO の波形を変えるパラメータです。 + +Phase + +: LFO の初期位相です。 + +Stereo + +: LFO の位相を左右でずらす量です。 + +Rate + +: LFO の周波数の倍率です。 + + テンポシンクを少しずらしたいときなどに使えます。 + +Sync. + +: LFO の周波数の同期間隔です。 + + 左右の数は、それぞれ拍子記号の上下の数字と対応しています。 (`左 / 右` = `上 / 下`) + + プラグインは音楽的な経過時間を拍数として受け取ります。そして 1 拍は拍子記号によって長さが相対的に変わります。以下に例をいくつか挙げます。 + + - 1 / 1 のとき 1 小節に同期。 + - 拍子が N / 4 であれば `Sync.` が 1 / 4 のとき 1 拍 (4 分音符) に同期。 + - 拍子が N / 6 であれば `Sync.` が 1 / 6 のとき 1 拍に同期。 + - 拍子が N / 4 であれば `Sync.` が 3 / 16 のとき 3 / 4 拍 (付点 8 分音符) に同期。 + + 曲中で拍子記号が変わると、変わった直後に一時的に同期がずれることがあります。 + +### Delay +Transform + +: 直行変換の種類です。 + + 通常は FFT を選んでください。 FWHT と Haar はざらざらとした音になります。 + + **注意**: `Transform` を変更すると `Frame Size` の長さだけ音が止まります。爆発的に大きい音を避けるためにバッファがリセットされることが原因です。 + +Frame Size + +: 直行変換を行うフレームの長さで、単位はサンプル数です。 + + この値がそのままディレイ時間になります。 + + `Latency` を有効にしたときは `Frame Size` と同じサンプル数のレイテンシを DAW に伝えます。 + + `Frame Size` が大きく、 DAW のバッファサイズが小さいとき、音がぶつぶつと途切れるようになることがあるかもしれません。このときは計算が間に合っていないので `Frame Size` を小さくしてください。 + +Feedback + +: ディレイのフィードバックです。 + +### Mask +パラメータの右側の小さいつまみで LFO による変調量を変えられます。 + +Waveform + +: 周波数マスクの波形です。 + +Mix + +: 周波数マスクをかける割合です。 + + 0 のときマスクなし、 1 のとき完全にマスクします。 + +Phase + +: 周波数マスクの波形の位相です。 + + `Phase` を LFO で変調するとフェイザと似たような音が出ます。 + +Freq. + +: 周波数マスクの波形の周波数です。 + + `Freq.` が高くなるほど、ノッチの数が多くなります。 + + `Freq.` を 0 にすると周波数マスクが無効になります。 + +Threshold + +: 周波数マスクの値が `Threshold` よりも小さいとき、その周波数を 0 にします。 + +Rotation + +: 周波数領域で位相を回転する量です。 + + というのは `Transform` が FFT のときだけで、他の直行変換が選択されているときは `Rotation` に応じて周波数成分の入れ替えが行われます。 + +Spectral Shift + +: フィードバックごとに周波数成分をシフトする量です。 + +Octave Down + +: フィードバックごとに周波数成分を約 1 オクターブ下に移す割合です。 + + 設定によっては効果があまり出ません。 `Feedback` を 1 、 `Octave Down` を 0.1 あたりに設定すると効果が出ます。 + +## チェンジログ +{%- for version, logs in changelog["SpectralPhaser"].items() %} +- {{version}} + {%- for log in logs["ja"] %} + - {{ log }} + {%- endfor %} +{%- endfor %} + +## 旧バージョン +{%- if old_download_link["SpectralPhaser"]|length == 0 %} +旧バージョンはありません。 +{%- else %} + {%- for x in old_download_link["SpectralPhaser"] %} +- [SpectralPhaser {{ x["version"] }} - VST 3 (github.com)]({{ x["url"] }}) + {%- endfor %} +{%- endif %} + +## ライセンス +SpectralPhaser のライセンスは GPLv3 です。 GPLv3 の詳細と、利用したライブラリのライセンスは次のリンクにまとめています。 + +- [https://github.com/ryukau/VSTPlugins/tree/master/License](https://github.com/ryukau/VSTPlugins/tree/master/License) + +リンクが切れているときは `ryukau@gmail.com` にメールを送ってください。 + +### VST® について +VST is a trademark of Steinberg Media Technologies GmbH, registered in Europe and other countries. diff --git a/docs/manual/SpectralPhaser/img/SpectralPhaser.drawio b/docs/manual/SpectralPhaser/img/SpectralPhaser.drawio new file mode 100644 index 00000000..b65171ed --- /dev/null +++ b/docs/manual/SpectralPhaser/img/SpectralPhaser.drawio @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/manual/SpectralPhaser/img/SpectralPhaser.png b/docs/manual/SpectralPhaser/img/SpectralPhaser.png new file mode 100644 index 0000000000000000000000000000000000000000..cef4eff7512a023ae7e10728889e34a6dd4bc2a8 GIT binary patch literal 26854 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 literal 0 HcmV?d00001 diff --git a/docs/manual/SpectralPhaser/img/SpectralPhaser.svg b/docs/manual/SpectralPhaser/img/SpectralPhaser.svg new file mode 100644 index 00000000..2e9b2d8a --- /dev/null +++ b/docs/manual/SpectralPhaser/img/SpectralPhaser.svg @@ -0,0 +1,3 @@ + + +
    Fwd. Transform
    Fwd. Transform
    SpectralPhaser
    SpectralPhaser
    Output
    Output
    Input
    Input
    LFO
    LFO
    Bwd. Transform
    Bwd. Transform
    Feedback
    Feedback
    Mask
    Mask
    1 Frame Delay
    1 Frame Delay
    Frequency Domain
    Frequency Domain
    \ No newline at end of file diff --git a/docs/manual/SpectralPhaser/img/VST_Compatible_Logo_Steinberg_negative.svg b/docs/manual/SpectralPhaser/img/VST_Compatible_Logo_Steinberg_negative.svg new file mode 100644 index 00000000..f03d67ac --- /dev/null +++ b/docs/manual/SpectralPhaser/img/VST_Compatible_Logo_Steinberg_negative.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +