Synths

Synths are used by the wave channel to define the shape of its waveform and how that shape changes over time.

A synth is defined by a sequence of 16 waveforms. In LSDJ waveforms can be drawn by hand, or can be generated by tweaking the softsynth’s parameters.

If you update the synth’s waves or its parameters, the synth’s wave synth overwrite lock in its parent song will be updated appropriately. Modifying the wave frames manually will enable the lock, while modifying its parameters will disable the lock.

Usage Examples

# Get the raw waveforms for synth $3
waves = song.synths[0x3].waves

# Get the end volume for synth $9
vol = song.synths[0x9].end.volume

API Reference

class pylsdj.Synth(song, index)
distortion

use "clip" or "wrap" distortion

end

parameters for the end of the sound, represented as a SynthSoundParams object

filter_resonance

boosts the signal around the cutoff frequency, to change how bright or dull the wave sounds

filter_type

the type of filter applied to the waveform; one of "lowpass", "highpass", "bandpass", "allpass"

index

the synth’s index within its parent song’s synth table

phase_type

compresses the waveform horizontally; one of "normal", "resync", "resync2"

song

the synth’s parent Song

start

parameters for the start of the sound, represented as a SynthSoundParams object

wave_synth_overwrite_lock

if True, the synth’s waveforms override its synth parameters; if False, its synth parameters override its waveforms

waveform

the synth’s waveform type; one of "sawtooth", "square", "sine"

waves

a list of the synth’s waveforms, each of which is a list of bytes

class pylsdj.SynthSoundParams(params, overwrite_lock)
filter_cutoff

the filter’s cutoff frequency

phase_amount

the amount of phase shift, 0 = no phase, 0x1f = maximum phase

vertical_shift

the amount to shift the waveform vertically

volume

the wave’s volume