class RemiAudio::DSP::Schroeder

Overview

Produces a Schroeder-style plate reverberation effect.

This reverb implementation is based on Freeverb, a public domain reverb implementation by Jezar at Dreampoint.

Defined in:

remiaudio/dsp/reverbs/schroeder-presets.cr
remiaudio/dsp/reverbs/schroeder.cr

Constant Summary

APF_TUNING_L1 = 556
APF_TUNING_L2 = 441
APF_TUNING_L3 = 341
APF_TUNING_L4 = 225
APF_TUNING_R1 = 556 + STEREO_SPREAD
APF_TUNING_R2 = 441 + STEREO_SPREAD
APF_TUNING_R3 = 341 + STEREO_SPREAD
APF_TUNING_R4 = 225 + STEREO_SPREAD
CF_TUNING_L1 = 1116
CF_TUNING_L2 = 1188
CF_TUNING_L3 = 1277
CF_TUNING_L4 = 1356
CF_TUNING_L5 = 1422
CF_TUNING_L6 = 1491
CF_TUNING_L7 = 1557
CF_TUNING_L8 = 1617
CF_TUNING_R1 = 1116 + STEREO_SPREAD
CF_TUNING_R2 = 1188 + STEREO_SPREAD
CF_TUNING_R3 = 1277 + STEREO_SPREAD
CF_TUNING_R4 = 1356 + STEREO_SPREAD
CF_TUNING_R5 = 1422 + STEREO_SPREAD
CF_TUNING_R6 = 1491 + STEREO_SPREAD
CF_TUNING_R7 = 1557 + STEREO_SPREAD
CF_TUNING_R8 = 1617 + STEREO_SPREAD
DAMPING_MAX = 2.0
DAMPING_MIN = 0.01
DEFAULT_DAMPING = 0.5
DEFAULT_ROOM = 0.5
DEFAULT_WET = 1.0 / SCALE_WET
DEFAULT_WIDTH = 1.0
FIXED_GAIN = 0.015
OFFSET_ROOM = 0.7
PRESETS = {PresetNames::GmDefault => Preset.new(roomSize: 0.5, damping: 0.5, width: 1.0), PresetNames::Room => Preset.new(roomSize: 0.3, damping: 0.3, width: 0.94), PresetNames::Hall => Preset.new(roomSize: 0.9, damping: 0.7, width: 1.1)}

Pre-constructed Preset instances for MVerb that correspond to the names in PresetNames.

ROOM_MAX = 0.99
ROOM_MIN = 0.01
SCALE_DAMPING = 0.4
SCALE_ROOM = 0.28
SCALE_WET = 3.0
STEREO_SPREAD = 23
WET_MAX = 1.0
WET_MIN = 0.0
WIDTH_MAX = 1.5
WIDTH_MIN = 0.0

Constructors

Class Method Summary

Instance Method Summary

Instance methods inherited from class RemiAudio::DSP::Reverb

mute : Nil mute, process(inputLeft : Array(Float64) | Slice(Float64), inputRight : Array(Float64) | Slice(Float64), outputLeft : Array(Float64) | Slice(Float64), outputRight : Array(Float64) | Slice(Float64)) : Nil process, usePreset(preset : Reverb::Preset) : Nil usePreset

Constructor Detail

def self.new(sampleRate, goldenRatioFeedback : Bool = false) #

[View source]

Class Method Detail

def self.checkDamping(value) : Nil #

[View source]
def self.checkRoomSize(value) : Nil #

[View source]
def self.checkWet(value) : Nil #

[View source]
def self.checkWidth(value) : Nil #

[View source]

Instance Method Detail

def damping : Float64 #

[View source]
def damping=(val : Float64) #

[View source]
def inputGain : Float64 #

[View source]
def mute : Nil #

[View source]
def process(inputLeft : Array(Float64) | Slice(Float64), inputRight : Array(Float64) | Slice(Float64), outputLeft : Array(Float64) | Slice(Float64), outputRight : Array(Float64) | Slice(Float64)) : Nil #

[View source]
def roomSize : Float64 #

[View source]
def roomSize=(val : Float64) #

[View source]
def updateInternalParams(*, numFrames : Int32 = 0) #

[View source]
def usePreset(preset : Reverb::Preset) : Nil #

[View source]
def wet : Float64 #

[View source]
def wet=(val : Float64) #

[View source]
def width : Float64 #

[View source]
def width=(val : Float64) #

[View source]