- Notifications
You must be signed in to change notification settings - Fork16
Procedural engine sound generator controlled via GUI or CLI
License
NotificationsYou must be signed in to change notification settings
DasEtwas/enginesound
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
GUI Application used to generate purely synthetic engine sounds with advanced options written in Rust
loosely based onthis paper
- Variable engine parameters
- Mono WAV recording
- RON SerDe of engine parameters
- Pseudorealistic acoustic pipe/chamber simulation (speed of sound, pipe end reflection) based on the above paper
- Advanced clap-rs powered CLI
- Intake, Exhaust and Engine vibrations mixing
- Resonance dampening (can save your audio equipment and ears)
- Compilation of the GUI is enabled by default ("gui" feature, use
--no-default-features
to disable) - GUI made with conrod/glium
- Real-time preview of parameters with
cpal
audio streaming - Real-time interactive parameter sliders with small descriptions
- Record/Stop button
- Dropping a config into the window loads the config
- Save button to save the current parameters into a timestamped file in the current working directory
- Reset sampler button to kill resonances in all acoustic chambers
- Headless mode which does not start audio streaming or a GUI
- Config argument to specify the file containing RON-serialized parameters
- Volume/rpm/length arguments to control master volume/engine rpm/recording length
- Crossfade argument which cuts the recording in half, swaps the halves and crossfades the middle x seconds (reduces output length by x/2 seconds), used to make seamless loops
- Warmup time argument to wait for the resonances in the acoustic chambers to be established before recording
Engine Sound Generator 1.3.0https://github.com/DasEtwas/GUI Application used to generate purely synthetic engine sounds with advanced options in real-time, written in Rust.It features real-time recording of the engine, a CLI, automatic crossfading to create seamless loops in the CLI,realtime frequency domain display through FFT, and preset saving/loading capabilities.USAGE: enginesound [FLAGS] [OPTIONS]FLAGS: --help Prints help information -h, --headless CLI mode without GUI or audio playback -V, --version Prints version informationOPTIONS: -c, --config <config> Sets the input file to load as an engine config -f, --crossfade <crossfade> Crossfades the recording in the middle end-to-start to create a seamless loop, although adjusting the recording's length to the rpm is recommended. The value sets the size of the crossfade, where the final output is decreased in length by crossfade_time/2. -o, --output <output_file> Sets the output .wav file path -l, --length <reclen> Sets the time to record in seconds. The formula for the recommended time to record to get a seamless loop is as follows: let wavelength = 120.0 / rpm; let crossfade = wavelength * 2.0; let reclen = audio_length + crossfade / 2.0; -r, --rpm <rpm> Engine RPM -q, --samplerate <samplerate> Generator sample rate [default: 48000] -v, --volume <volume> Sets the master volume [default: 0.1] -w, --warmup_time <warmup_time> Sets the time to wait in seconds before recording
Generated using the config shown above while adjusting the RPM manually:Audio file
rpm = 1300wavelength = 120 / rpmaverage_len = 3.2 // secondscycles = ceil(average_len / wavelength)crossfade = 2 * wavelengthlength = wavelength * cycles + crossfade / 2warmup = 2 // secondsfade_length = crossfadevolume = 0.5 // 50%enginesound.exe -h -c config_file.esc -o output_file.wav -f $fade_length -l $length -w $warmup -r $rpm -v $volume
On Ubuntu, these dependencies must be installed for the crate to compile (thanks,leosh64):sudo apt-get install libasound2-dev libxcb-shape0-dev libxcb-xfixes0-dev
MIT License
About
Procedural engine sound generator controlled via GUI or CLI
Resources
License
Stars
Watchers
Forks
Packages0
No packages published