Examples for wav audio simulation.

This commit is contained in:
Holger Vogt 2024-08-04 16:43:25 +02:00
parent a7184842af
commit d3510667e5
12 changed files with 259 additions and 0 deletions

View File

@ -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

View File

@ -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.

BIN
examples/wave/git-fuzz9.wav Normal file

Binary file not shown.

BIN
examples/wave/gits.wav Normal file

Binary file not shown.

BIN
examples/wave/jhfface.pdf Normal file

Binary file not shown.

View File

@ -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

View File

@ -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

2
examples/wave/nowave.wav Normal file
View File

@ -0,0 +1,2 @@
This is not a wave file.
It is a test vehicle.

View File

@ -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

13
examples/wave/rcsim.cir Normal file
View File

@ -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

24
examples/wave/sndtst.cir Normal file
View File

@ -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

Binary file not shown.