diff --git a/examples/wave/README.examples b/examples/wave/README.examples new file mode 100644 index 000000000..e5301009a --- /dev/null +++ b/examples/wave/README.examples @@ -0,0 +1,35 @@ +README.examples, slightly adapted to the new ngspice wav capability, +taken from http://gareus.org/oss/spicesound/examples +Simulation either as batch mode +ngspice -b xxx.cir +or in control mode +ngspice xxx.cir + +output of jimi_fuzz-snd.cir, ready to compare +git-fuzz64.mp3 +git-fuzz64.wav + +input for jimi_fuzz-snd.cir +gits.wav + +circuit of fuzzer in jimi_fuzz-snd.cir +jhfface.pdf + +just a simulation file of the fuzzer circuit +jimi_fuzz.cir + +guitar input, fuzzified output on the left, +original on the right channel +jimi_fuzz-snd.cir + +bandpass RC filter, input sweep_sin20_20k_5s48k.wav +rcfilter.cir + +just a simulation file for the RC filter +rcsim.cir + +wav simulation input (gits.wav) is output +sndtst.cir + +input to rcfilter.cir +sweep_sin20_20k_5s48k.wav diff --git a/examples/wave/README.wavsim b/examples/wave/README.wavsim new file mode 100644 index 000000000..0058d10bc --- /dev/null +++ b/examples/wave/README.wavsim @@ -0,0 +1,30 @@ +This branch, based on ngspice-32+ from pre-master branch on 25.07.2020, +contains functions to read, simulate and output wav audio files. + +The origin of the code stems from +http://gareus.org/oss/spicesound/start +http://gareus.org/oss/spicesound/examples +mady by Robin Gareus, enhanced by Hannu Vuolasaho at +https://sourceforge.net/p/ngspice/patches/13/ + +It uses the external libraries libsndfile and libsamplerate-0.1.9. + +The current setup has been tested only with MSVC 2019 on Windows 10. + +libsndfile has been downloaded from http://www.mega-nerd.com/libsndfile/ as +http://www.mega-nerd.com/libsndfile/files/libsndfile-1.0.28-w64-setup.exe + +libsamplerate-0.1.9 has been downloaded from http://www.mega-nerd.com/SRC/download.html as +http://www.mega-nerd.com/SRC/libsamplerate-0.1.9.tar.gz, and compiled +with mingw gcc 10.2 for 64 bit Windows 10. libsamplerate.lib has been created +from libsamplerate.def by command +lib /def:libsamplerate-0.def /out:libsamplerate-0.lib /machine:x64 +in the Visual Studio 2019 Developer Command Prompt. + +The usage is described in +http://gareus.org/oss/spicesound/start + +A complete package for Windows will be made available from the ngspice web pages. +Test on Linux and macOS will follow. + + diff --git a/examples/wave/git-fuzz9.wav b/examples/wave/git-fuzz9.wav new file mode 100644 index 000000000..c57fbcab4 Binary files /dev/null and b/examples/wave/git-fuzz9.wav differ diff --git a/examples/wave/gits.wav b/examples/wave/gits.wav new file mode 100644 index 000000000..5c12189d9 Binary files /dev/null and b/examples/wave/gits.wav differ diff --git a/examples/wave/jhfface.pdf b/examples/wave/jhfface.pdf new file mode 100644 index 000000000..3b3ac5cf9 Binary files /dev/null and b/examples/wave/jhfface.pdf differ diff --git a/examples/wave/jimi_fuzz-snd.cir b/examples/wave/jimi_fuzz-snd.cir new file mode 100644 index 000000000..2c182ba1a --- /dev/null +++ b/examples/wave/jimi_fuzz-snd.cir @@ -0,0 +1,77 @@ +* jimi hendrix fuzz face - by J. Dunlop +* +* this netlist does not model the power-supply +* as in the original device. a zener and cap +* were left out next to the "battery". +* +* input : V2 - pin 10 +* output: R50/51 - pin 9 +* +* Pots: +* R50+R51 = 500k [Vol] +* R100+R101 = 1k [Fuzz] +* +*---------------------------------------------- +* SPICE 3 - NETLIST +.options + +*------------- Models ------------------------- +.model NPN NPN(Is=1.0e-16) + +*---------------------------------------------- + +V_V2 10 0 dc 0.0 file(gits.wav) snd(0 0 0.5 0 0 32) +R_R50 9 0 200k +R_R51 3 9 300k +R_R100 6 5 100 +R_R101 5 0 900 +R_R4 1 8 43k +R_R6 4 11 10k +C_C4 4 3 0.01u IC=0 +C_C6 5 0 1u +Q_Q2 11 8 6 NPN +R_R5 1 4 330 +Q_Q1 8 7 0 NPN +C_C3 7 6 47p IC=0 +R_R3 7 6 68k +C_C2 7 0 1n IC=0 +C_C1 2 10 2.2u +R_R1 10 0 180k +R_R2 2 7 100 +V_V1 1 0 dc 9.0 + +*---------------------------------------------- + +*.sndparam /tmp/melon-fuzz8.wav 48000 wav32 1.0 0.0 +**.sndparam git-fuzz9.wav 48000 wav32 3.5 0.0 2 +**.sndprint tran v(10) v(9) +*.tran 2.0833333333333e-05 5.0 0 2.0833333333333e-05 +*.tran 1.3020833e-06 25.0 0 1.3020833e-06 +*.tran 1.3020833e-06 7.5 0 1.3020833e-06 + +*.tran 2.6041666e-06 2.0 0 2.6041666e-06 +* /16 +*.tran 1.3020833e-06 3.0 0.1 1.3020833e-06 +.tran 6.5104166e-07 3.0 0.1 6.5104166e-07 +*.tran 3.25520833e-07 3.0 0 3.25520833e-07 +*.tran 1.627604166e-07 3.0 0 1.627604166e-07 +*.tran 8.138020833e-08 0.5 0 8.138020833e-08 +*.tran 4.069010416e-08 0.5 0 4.069010416e-08 +.op + +.control +if $?batchmode +else + save v(10) v(9) + sndparam $inputdir/git-fuzz9.wav 48000 wav32 3.5 0.0 2 + tran 6.5104166e-07 3.0 0.1 6.5104166e-07 +* tran 1.3020833e-06 3.0 0.1 1.3020833e-06 +* tran 2.0833333333333e-05 5.0 0 2.0833333333333e-05 + rusage + sndprint v(10) v(9) + rusage time +end +.endc + + +.END diff --git a/examples/wave/jimi_fuzz.cir b/examples/wave/jimi_fuzz.cir new file mode 100644 index 000000000..6d3c74c56 --- /dev/null +++ b/examples/wave/jimi_fuzz.cir @@ -0,0 +1,49 @@ +* jimi hendrix fuzz face - by J. Dunlop +* +* this netlist does not model the power-supply +* as in the original device. a zener and cap +* were left out next to the "battery". +* +* input : V2 - pin 10 +* output: R50/51 - pin 9 +* +* Pots: +* R50+R51 = 500k [Vol] +* R100+R101 = 1k [Fuzz] +* +*---------------------------------------------- +* SPICE 3 - NETLIST +.options + +*------------- Models ------------------------- +.model NPN NPN(Is=1.0e-16) + +*---------------------------------------------- + +V_V2 10 0 dc 0.0 sine(0.0 0.3 440.0 0 0) +R_R50 9 0 400k +R_R51 3 9 100k +R_R100 6 5 950 +R_R101 5 0 50 +R_R4 1 8 43k +R_R6 4 11 10k +C_C4 4 3 0.01u IC=0 +C_C6 5 0 1u +Q_Q2 11 8 6 NPN +R_R5 1 4 330 +Q_Q1 8 7 0 NPN +C_C3 7 6 47p IC=0 +R_R3 7 6 68k +C_C2 7 0 1n IC=0 +C_C1 2 10 2.2u +R_R1 10 0 180k +R_R2 2 7 100 +V_V1 1 0 dc 9.0 + +*---------------------------------------------- + +.print tran v(10) v(9) +.tran 2.0833333333333e-05 5.0 0 2.0833333333333e-05 +.op + +.END diff --git a/examples/wave/nowave.wav b/examples/wave/nowave.wav new file mode 100644 index 000000000..9d8486dee --- /dev/null +++ b/examples/wave/nowave.wav @@ -0,0 +1,2 @@ +This is not a wave file. +It is a test vehicle. diff --git a/examples/wave/rcfilter.cir b/examples/wave/rcfilter.cir new file mode 100644 index 000000000..376f8eea1 --- /dev/null +++ b/examples/wave/rcfilter.cir @@ -0,0 +1,29 @@ +capacitive bandpass filter + +v1 1 0 file ..\exampleswav\sweep_sin20_20k_5s48k.wav snd(0 0 1.0 0 0 1.0) +r1 1 2 200 +c1 2 0 5u +c2 2 33 1u +rload 33 0 1k +B3 3 0 v = v(33) * 3 + +.sndparam ..\exampleswav\test-filter.wav 48000 wav24 1.0 0.0 1.0 +.sndprint tran v(1) v(3) +.tran 2.08333e-05 5.0 0 2.08333e-05 +.op + +.control +if $?batchmode +else + save v(1) v(3) + sndparam ..\exampleswav\test-filter.wav 48000 wav24 1.0 0.0 1.0 + tran 2.08333e-05 5.0 0 2.08333e-05 + rusage + sndprint v(1) v(3) + rusage +end +.endc + + + +.end diff --git a/examples/wave/rcsim.cir b/examples/wave/rcsim.cir new file mode 100644 index 000000000..780b068ab --- /dev/null +++ b/examples/wave/rcsim.cir @@ -0,0 +1,13 @@ +capacitive bandpass filter +v1 1 0 dc 0 ac 1 ; sin +r1 1 2 200 +c1 2 0 5u +c2 2 3 1u +rload 3 0 1k +.ac lin 50 20 1000 +.plot ac v(3) +.control +run +plot db(v(3)) xlog xlimit 10 1000 +.endc +.end diff --git a/examples/wave/sndtst.cir b/examples/wave/sndtst.cir new file mode 100644 index 000000000..8108d7231 --- /dev/null +++ b/examples/wave/sndtst.cir @@ -0,0 +1,24 @@ +simple audio test + +V_V2 1 0 file ..\exampleswav\gits.wav snd 0 0 1.0 0 0 32 +R_R1 1 0 1M + +.sndparam ..\exampleswav\test-io.wav 48000 wav24 1.0 0.0 1.0 +.sndprint tran v(1) +.tran 2.08333e-05 2.0 0 2.08333e-05 +.op + +.control +if $?batchmode +else + sndparam ..\exampleswav\test-io.wav 48000 wav24 1.0 0.0 1.0 + tran 6.5104166e-07 3.0 0.1 6.5104166e-07 + rusage + sndprint v(1) + rusage +end +.endc + + + +.END diff --git a/examples/wave/sweep_sin20_20k_5s48k.wav b/examples/wave/sweep_sin20_20k_5s48k.wav new file mode 100644 index 000000000..61ddb9ac0 Binary files /dev/null and b/examples/wave/sweep_sin20_20k_5s48k.wav differ