preliminary wavetable generation
This commit is contained in:
BIN
scripts/__pycache__/example_wavetable.cpython-311.pyc
Normal file
BIN
scripts/__pycache__/example_wavetable.cpython-311.pyc
Normal file
Binary file not shown.
3
scripts/example_wavetable.py
Normal file
3
scripts/example_wavetable.py
Normal file
@@ -0,0 +1,3 @@
|
||||
|
||||
def process(phase):
|
||||
print("im from process")
|
||||
41
scripts/generate_wavetable.py
Normal file
41
scripts/generate_wavetable.py
Normal file
@@ -0,0 +1,41 @@
|
||||
|
||||
# this is a script for generating a wavetable file
|
||||
# a wavetable file consists of a one-dimensional array of samples representing one period of a waveform
|
||||
# metadata includes:
|
||||
# - file version (for program compatibility)
|
||||
# - binary format (float, double, int32, etc.)
|
||||
# - domain (normal is a phase from x=0 to x=2pi)
|
||||
# - range (depending on datatypes, e.g. float=[-1,1], int32=[-2^15, 2^15-1])
|
||||
# - waveform RMS (for loudness normalization)
|
||||
# the synth program uses the filename, not any metadata
|
||||
|
||||
# this script uses the function defined in example_wavetable.py to calculate samples
|
||||
# if you want a custom wavetable, copy/edit/modify the example function (desmos is great for brainstorming)
|
||||
|
||||
import example_wavetable
|
||||
|
||||
def createFile():
|
||||
print("creating file")
|
||||
return 1
|
||||
|
||||
def writeMetadata(file):
|
||||
print("im writing metadata")
|
||||
|
||||
def generateWavetable(file):
|
||||
print("im generating the wavetable")
|
||||
example_wavetable.process()
|
||||
|
||||
def closeFile(file):
|
||||
print("finishing up")
|
||||
|
||||
def main():
|
||||
print("Hello main")
|
||||
file = createFile()
|
||||
writeMetadata(file)
|
||||
generateWavetable(file)
|
||||
closeFile(file)
|
||||
print("done")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -81,6 +81,7 @@ float Voice::process(float* params, bool& scopeTrigger) {
|
||||
float velocityGain = std::lerp(velocityCenter, velocity_, velocitySensitivity);
|
||||
|
||||
float gain = gainEnv * getParam(ParamId::Osc1VolumeDepth) * velocityGain;
|
||||
gain *= (100.0f - static_cast<float>(note_)) * 0.005f + 0.75;
|
||||
|
||||
// sample generation
|
||||
uint8_t osc1Wave = (static_cast<uint8_t>(std::round(getParam(ParamId::Osc1WaveSelector1))));
|
||||
|
||||
Reference in New Issue
Block a user