Python音乐合成器中振荡器
略述
数字声音
首先,音符是数字声音将产生的声音。简而言之,数字声音只是从计算机以一定速度传送给扬声器的数字序列。
关于CD音频,每秒会通过一些电路(DAC)将44100个数字(每个值都在-32,768到32,767之间)馈送到扬声器,这意味着CD音频采样率为44,100Hz,位深度为16位(有符号整数)。
因此,要生成声音,我们要做的就是创建一个有意义的整数流,并将该流指向扬声器或文件。这种指向的细微差别可以由库来处理。
延迟迭代
延迟迭代就像普通迭代一样,但是仅在需要时才评估值,例如,仅在按下键时才需要播放音符,因此可以在按下键时评估音符的值,而不是在此之前。
对于序列的延迟迭代,我们可以使用两种不同的Python功能:
生成器
迭代器
所有生成器都是迭代器,而对象只有在其类定义中实现了__next__和__iter__函数时,它才是迭代器。可以使用生成器表达式来实现生成器,例如:
看起来像列表推导式,但带有常规方括号或生成器函数,例如:
这是一个具有yield而不是return的函数,这就是使其成为生成器的原因。一旦有了生成器或迭代器,就可以通过调用其上的下一个函数从其获取值,如下所示:
使用生成器和迭代器,我们可以生成无限的整数流,这些整数流可以馈送到扬声器或文件之类的某些输出,如果没有这些功能,则内存需求将非常高。
合成器
合成器是一种可以从头开始产生(合成)自己声音的东西。合成器是一种电子仪器,可以是模拟的或数字的。
合成器可以具有不同种类的控制器,例如压敏垫或键盘,这些控制器将控制信号发送到合成器,然后合成器将声音合成,然后将声音发送到扬声器进行播放。
为了简化合成器,可以理解为它由产生声音的组件(例如振荡器)和对声音进行塑形的组件(例如包络线和LFO(低频振荡器))组成,甚至可能还包括为声音添加效果的组件(例如颤音, 或颤音)。
振荡器
振荡器可能是合成器最重要的组成部分,它是生成一系列在一定间隔后重复的数字序列的组件。 最简单的振荡器是产生正弦波的振荡器。
正弦波以2π的时间周期重复,因此,如果我们必须以512 Hz的采样率生成1 Hz的信号,则必须在0到2π之间的数字线上创建512个分度,并且在每个分度处应用数学正弦函数,它为我们提供了该分频的正弦波输出样本。
由于我们不想一次生成所有样本,因此我们可以在需要下一个样本时,将输入到sin的步长增加一个步长,因此可以通过以下方式计算步长:
使用math和itertools库,我们现在可以使用上述公式创建一个正弦波发生器。
上面的函数返回一个生成器,因此要评估生成器的前512个样本,我们可以使用以下代码
在上面的代码段中,我正在使用Python列表推到式来获取以512 Hz采样的1 Hz正弦波的前512个采样。
这是它的外观:
注意:对于所有其他曲线图和波形生成,我将使用44,100 Hz的采样率。
振荡器参数
在振荡器中,有几个参数是可以控制的,最明显的是振荡器的频率,改变它会给我们带来不同的提示。 例如:当调至音乐会音高时,即当A4的频率为440 Hz时,中音C或C4的频率为261.625565 Hz。
除了频率以外,我们还可以控制振幅,这样可以给我们带来诸如颤音的效果,或者仅仅是普通的旧音量控制。我们可以通过将振荡器的输出值乘以0到1之间的数字来控制它。
另一个不太明显的相位是相位,它可以给我们带来诸如移相器的效果。这可以通过在正弦函数输入中添加一个介于0到360之间的值的相位角来实现。
上面的所有三个图都是通过使用此函数获得的:
我们的振荡器正好适合4条线,但是如果我们可以即时调整这三个参数,那就更好了,即,无需在每次调整时都创建新的发生器,这将使我们能够将振荡器与 其他振荡器获得各种有趣的声音,这涵盖了合成器中发生的很多事情。
代码构建振荡器 | 方波声音 | 锯齿波声音 | 三角波声音 | 频域波形 | 叠加波 | 保存 | 完整代码
详情参阅 - 亚图跨际
Python音乐合成器中振荡器相关推荐
- Arturia Prophet Mac音频插件:将Prophet 5,Prophet VS,Prophet Hybrid三种不同音乐合成器于一体
Prophet 5和Prophet VS设定了标准并重新定义了现代合成器.我们为您带来了这些经典. Prophet 5是市场上第一款完全可编程的合成器.迄今为止,这种革命性合成器已成为所有其他合成器的 ...
- 计算机弹音乐百度百科,电子音乐合成器
电子音乐合成器又简称电子合成器,是由电子设备代替乐队进行演奏和进行自动化编曲的一种电子化设备.用合成器制作声音的方法很多,起先是把若干个正弦波振荡器连在一起,改变各自的频率.振幅,就可以产生不同音色. ...
- 青少年的音乐合成器原理指南
介绍 本文是对音乐合成原理的(相对)简要介绍.解释了合成器的每个基本组件,以及这些组件如何链接在一起以产生有趣声音的描述和示例.所讨论的原则并不是任何特定合成平台所独有的,而是适用于一般的音乐合成. ...
- 还在找Mac版本的音乐合成器吗?看这里~
Arturia OB-Xa V for Mac是一款忠于原始声音的音乐合成器,这款软件拥有80年代流行到现代的风格,这款软件使用可视浏览器进行无缝预设选择,拥有超过400个预设,各类个人语音声像效果, ...
- Reaktor 6 for Mac(音乐合成器软件)v6.3.0永久激活版
Native Instruments Reaktor 6 for Mac是一款运行在Mac平台上的音乐合成器软件,具有尖端的DSP和高保真声音. Reaktor 6拥有现代化的界面,改进的结构编辑以及 ...
- ruby和python_Ruby,Python和Java中的Web服务
ruby和python 今天,我不得不准备一些示例来说明Web服务是可互操作的. 因此,我已经使用Metro使用Java创建了一个简单的Web服务,并在Tomcat上启动了它. 然后尝试使用Pytho ...
- Ruby,Python和Java中的Web服务
今天,我不得不准备一些示例来说明Web服务是可互操作的. 因此,我已经使用Metro使用Java创建了一个简单的Web服务,并在Tomcat上启动了它. 然后尝试使用Python和Ruby消耗它们. ...
- 浅谈音乐与计算机,浅析电脑音乐在音乐教育中的应用
一.电脑音乐概述 从传统意义上讲,电脑音乐与MIDI是同一个概念,其核心技术是计算机音序软件的运用和电子乐器的数字化(MIDI的含义为"乐器之间的数字接口").从FM调频到PCM采 ...
- 计算机合成音乐的交换标准,音乐合成器
简介 音乐合成器(Musical Synthesizer) 用来产生并修改正弦波形并叠加,然后通过声音产生器和扬声器发出特定的声音.泛音的合成决定声音音质. C机声卡上的音乐合成器能合成音乐,可模仿许 ...
最新文章
- 好多Javascript日期选择器呀--1
- aop point 只能获取到map嘛_面试被问了几百遍的 IoC 和 AOP ,还在傻傻搞不清楚?...
- MySQL下优化SQL的一般步骤
- 为什么3年的Java高级程序员薪水仅仅8k-10k,而一个Linux底层C语言程序员两年经验就敢要1...
- 微型计算机课程介绍,微机原理及应用课程教学大纲教案
- Java中创建对象的四种方式
- html如何播放h264视频,浏览器 – 我如何播放H264视频?
- SPRING IN ACTION 第4版笔记-第二章-001-用@Autowired\@ComponentScan、@Configuration、@Component实现自动装载bean...
- MOSS Farm Architecture
- Cheese 游戏编程:第 4 部分 (转自MSDN)
- 怎样利用php记录时间差,使用PHP计算出时间差的实现方法
- 使用XMLHttpRequest
- java毕业设计宠物领养饲养交流管理平台Mybatis+系统+数据库+调试部署
- python自制一款职位分析器,一键生成岗位分析报告
- 记一次hsql解析大json的全过程
- 2018年10月中华人民共和国县以上行政区划代码(身份证地区码/身份证前缀)
- 笔记本电脑禁用自带键盘
- html 公告栏 上下滚动,jQuery实现上下滚动公告栏详细实例
- 用Python爬取淘宝4403条大裤衩数据进行分析,终于找到可以入手的那一条
- 外地驾照迁入北京流程
热门文章
- 家庭问题(family) 题解
- Winclone Pro 7 for mac(分区备份还原工具)汉化版
- Adobe Photoshop CC 2023(PS2023)安装教程与下载方式
- 【技巧】Microsoft Edge 调节视频播放速度的方法
- nvme固态必须uefi启动吗_【Ubuntu】UEFI安装Windows 10和Ubuntu 18.04双系统(深度爬坑)...
- 【算法基础——第八讲】离散化
- 使用Prettier格式化代码
- 用Python写一款属于自己的 简易zip压缩软件 附完成图(适合初学者)
- Android 基础知识4-2.8 TableLayout(表格布局)详解
- windows7虚拟拔号服务器,ADSL采用虚拟拨号上网,使用Windows 7如何设置PPPoE宽带连接...