您的位置 首页 应用

进步开发功率和质量?用SPICE仿真音效

我在网上查找音效电路原理图时想到,如果能在出图前先用通用模拟电路仿真器(SPICE)进行模拟检验,可能会提高开发效率和质量。但由于任何电子模拟器都无法读取并输出音频文件,所以我用Pythons波形

  我在网上查找音效电路原理图时想到,如果能在出图前先用通用模仿电路仿真器(SPICE)进行模仿查验,可能会进步开发功率和质量。但因为任何电子模仿器都无法读取并输出音频文件,所以我用Pythons波形模块编写程序,完成读取波形文件而且输出一段时刻–电压点的序列。Ngspice的文件源设备能够读取这一大串点序列,并输出和音频信号相匹配的电压波形,之后作为效果电路的输入。

  为了能听到输出音频,还需别的一个程序将输出盯梢转化成波形文件,这儿我仍是借助于这个Pythons波形模块来完成。

  畸变效应

过载效果器250

  过载效果器250是最简略的畸变效应之一,以吉他效果而广为人知。原理图如图所示。作业原理很简略,首要需求一个沟通耦合电容和偏置电路,因为供电选用单向电压。

  运算扩大器被用作非反相扩大器扩大弱小的输入信号。R5电位计操控增益。输出方位有别的一个沟通耦合电容器和两个削波信号二极管。信号幅值越大,二极管的削波和畸变就越显着。

  测验音频信号是一段纯洁的吉他动静,来源于用户Khoon命名的freesound.org安排,没有专利答应费用,从根本上说这个归于共用的。

  首要是通过500千欧R5电阻输出较为平缓的畸变。考虑到运算扩大器的扩大效应,输入幅值的挑选尤为重要。这段录音中输入幅值为10 毫伏。从波形上咱们发现,削波效果适当显着,因此在播映前需求查看输出音量。

  如下图所示,逐步减小R5的阻值会进步增益和畸变:

  音频编辑器显现的失真的频谱效应:

原始纯洁吉他声信号频谱

尖锐畸变信号频谱

  以上分别是原始纯洁吉他声信号和尖锐畸变信号的频谱,差异不是很显着。一些低频信号被沟通耦合电容器过滤,因为畸变新增了高频信号。能量添加超出了整个带宽,但这仅仅SPICE到wav格局声音文件转化过程中的过渡表象。为了防止削波,这儿挑选最大信号增益来获取最大样本值,然后改动信号音量。

  实践电路与之比较略有不同,不过这种模仿自身依然很能阐明问题。

  在所需时刻上,仿真与实践存在不同。在44100赫兹的采样频率下,大约需求5秒来仿真1秒的音频文件。如需求长时刻的仿真并记载数据,能够运用SPICE声明记载下输出波形。

  含糊效应

含糊电路

  第二部分为含糊电路,除了运算扩大器部分被分立晶体管所替代外,其他与之前的失真电路十分类似。

  输入电压幅值对这部分电路的输出影响也很显着。

  下面是1毫伏输入幅值下的仿真成果:

  10毫伏输入幅值仿真成果为:

  因为类似的二极管削波结构,其仿真成果与畸变电路相差不大。

  二极管削波器

  二极管削波器的波形比料想的要滑润得多。当然这也取决于信号电压和二极管参数。

用一对1N4148进行削波之后的1V 400Hz信号仿真

二极管削波之后的正弦波频谱

  但即便如此,这个相对滑润的削波信号也包括许多高频谐波。

  源码

  源码拜见这儿:

  README

  SPICE audio tools

  This repository has two programs for importing wav file to SPICE and

  exporting the output as a wav file.

  1. wavtospice.py

  - This tool converts a wav file with a list of values, which can be read

  using ngspices file source. If wav file has multiple channels only the values

  of the first channel are returned.

  - Usage: python wavtospice.py

  - Ngspice must have been compiled with xspice support. File source can be used

  like follows:

  a1 %v([in]) filesrc

  .model filesrc filesource (file="values" amploffset=[0] amplscale=[1]

  + timeoffset=0 timescale=1

  + timerelative=false amplstep=false)

  See ngspice manual for possible options.

  2. spicetowav.py

  - This tool converts ngspice output to wav file. Compatibility with other

  simulators is untested.

  - Simulation must be setup to print the output values.

  Run the ngspice in batch mode using the command line flag -b and direct

  output to a file.

  - Usage: python spicetowav.py [clipping voltage].

  Clipping voltage is optional and if it's unspecified wav is written

  with maximum amplitude such that clipping doesn't occur.

  # Example

  Following commands can be used to get output from lowpass filter example file

  when run on Linux:

  $ python wavtospice.py file.wav inputvalues

  $ ngspice -b examples/lowpass.cir > spice_output

  $ python spicetowav.py spice_output output.wav

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/117794.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部