@byomakase/omakase-audio-effects
v1.0.1
Published
Audio effects library for Omakase Player
Downloads
88
Readme
Omakase audio effects
Omakase audio effects is a library designed to enrich Omakase player with more complex audio effects. The effects can be used both with sidecar audios and main audio as well as with mono, stereo or surround audio.
Equalizer effect
Equalizer effect is based on biquad filters and supports up to 8 frequency bands. Lowest and highest band support different filters.
The following parameters are exposed:
| name | arguments | description |
| ---------------------------------------------- | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| OmpAudioEffectBandGainsParam | gains: number[] | A list of gains to be applied on a per-band basis. The length must equal the number of bands. Minimum value is –40 and maximum is 40. |
| OmpAudioEffectBandBoundaryFrequenciesParam | bandBoundaryFrequencies: number[] | A list of frequencies representing the borders between the bands. Minimum and maximum allowed borders are 20 and 20000 Hz respectively. It creates one more band (the end frequencies are unchangeable). |
| OmpAudioEffectLowFilterTypeParam | lowFilterType: LowFilterType | Type of filter applied to the lowest (first) band. |
| OmpAudioEffectHighFilterTypeParam | highFilterType: HighFilterType | Type of filter applied to the highest (last) band. |
| |
Equalizer Types
type LowFilterType = "highpass" | "lowshelf" | "peaking";
type HighFilterType = "lowpass" | "highshelf" | "peaking";Equalizer effect can be registered to Omakase core with:
omakasePlayer.audio.registerAudioEffect(
OmpEqualizerEffectType,
OmpEqualizerEffectFactory
);You can create effect definition using static method:
const eqDef = OmpEqualizerEffect.createDef(
id: string,
bandBoundaryFrequencies?: number[],
bandGains?: number[],
lowFilterType?: LowFilterType,
highFilterType?: HighFilterType
)Pitch Shifter Effect
Pitch shifter effect is based on audio worklet node. It supports up to 4.99 semitone shift in base audio frequency in either direction
The following parameters are exposed:
| name | arguments | description |
| ----------------------------------------- | ---------------------------- | --------------------------------------------------------------------------------------------------------------- |
| OmpAudioEffectSemitonesPitchParam | semitonesPitch: number | Semitone part of the total base audio frequency shift. Minimal value is -4 and the maximal one is 4 |
| OmpAudioEffectSemitoneCentsPitchParam | semitoneCentsPitch: number | Semitone cents part of the total base audio frequency shift. Minimal value is -99 and the maximal one is 99 |
Pitch shifter effect can be registered to Omakase core with:
omakasePlayer.audio.registerAudioEffect(
OmpPitchEffectType,
OmpPitchEffectFactory()
);Since the worklet is using soundtouch.js code, it is fetched from the CDN. If you want to host your own script you can provide the url as an argument to OmpPitchEffectFactory.
You can create effect definition using static method:
OmpPitchEffect.createDef(
id: string,
semitonesPitch?: number,
semitoneCentsPitch?: number
)Formant Shifter Effect
Formant shifter effect is based on audio worklet node. It supports up to 12.99 semitone shift in formant frequency in either direction.
The following parameters are exposed:
| name | arguments | description |
| ------------------------------------------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------ |
| OmpAudioEffectSemitonesFormantParam | semitonesFormant: number | Semitone part of the total formant frequency shift. Minimal value is -12 and the maximal one is 12 |
| OmpAudioEffectSemitoneCentsFormantParam | semitoneCentsFormant: number | Semitone cents part of the total formant frequency shift. Minimal value is -99 and the maximal one is 99 |
Pitch shifter effect can be registered to Omakase core with:
omakasePlayer.audio.registerAudioEffect(
OmpFormantEffectType,
OmpFormantEffectFactory
);You can create effect definition using static method:
OmpFormantEffect.createDef(
id: string,
semitonesFormant?: number,
semitoneCentsFormant?: number
)Usage example
let effectGraphDef = DefaultOmpAudioEffectsGraphDef.create(
OmpEqualizerEffect.createDef("eq").outputTo("pitch"),
OmpPitchEffect.createDef("pitch")
omakasePlayer.audio.setMainAudioEffectsGraphs(effectGraphDef, {slot: 'source'})
);