if(($ACT == 'edit' || $ACT == 'preview') && $INFO['editable']){ ?> } else { ?> } ?>
Various examples - work in progress. see spicesound for syntax and overview.
A simple bandpass filter.
the file rcfilter.cir
reads
capacitive bandpass filter v1 1 0 file /tmp/test.wav snd(0 0 1.0 0 0 1) r1 1 2 200 c1 2 0 5u c2 2 3 1u rload 3 0 1k .sndparam /tmp/test-filter.wav 48000 wav24 1.0 0.0 1 .sndprint tran v(1) v(3) .tran 2.08333e-05 5.0 0 2.08333e-05 .op .end
This processes the first 5 seconds (the 5.0
in the .tran
line) of the input file /tmp/test.wav (using the first channel - the last 0 in v1
..snd
..0
line) writing /tmp/test-filter.wav
which is a stereo file. first channel: unprocessed signal v(1)
and 2nd channel: processed signal v(3)
decreasing the time-step yields much better results: 1/96000 or 1/48000/4 ..
.tran 1.04166e-05 5.0 0 1.04166e-05 .tran 5.20833e-06 5.0 0 5.20833e-06 .tran 2.08333e-06 5.0 0 2.08333e-06
I've used aliki to generate a frequency sweep from 20Hz to 20kHz: sweep_sin20_20k_5s48k.wav.gz - screenshots were made with rezound: the plotted result files show the original sound in the top and the processed audio in the bottom waveform. the spectrum plot was done with ngSpice iplot
.
removing capacitor c1
yields a high-pass filter which I found useful for testing the frequency response and ngSpice's timing accuracy.
Produced with jimi_fuzz-snd.cir and gits.wav.gz (unzip to /tmp/gits.wav
and run ngspince -b jimi_fuzz-snd.cir
). processed at 1s/(64*48k).
The output contains the original sound in the left and the fuzz-processed audio in the right channel. Original here is a test-clamp audio output, which includes ngspice resampling: it's not a copy from the source-file data.
Be aware that this example simulates an old fuzz distortion; recorded direct-in without any further processing. Therefore the weird sound is somewhat expected ;) - the circuit still needs fine-tuning: eg. tweak the input voltage range of the guitar and fuzz/volume potentiometers.
foxx.oregano.gz is modeled after:
NOTEs:
Beware: it's not yet debugged…