问题标签 [synthesizer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
724 浏览

vhdl - 索引值 0 到 8 可能超出前缀范围 1 到 8 - VHDL

在我的代码中,我定义了这个向量:

所以我有一个输入 0:7,当它达到 0 时我解决了一个计数器问题。但是我的合成器给了我这个警告:

索引值 0 到 8 可能超出前缀范围 1 到 8

它会产生错误吗?或者它只是警告如果我使用索引 0,它会产生错误?

0 投票
1 回答
833 浏览

javascript - 网络音频合成:如何处理在攻击或释放阶段更改滤波器截止?

我正在使用 WebAudio 构建 Roland Juno-106 合成器的仿真。现场 WIP 版本在这里

如果在起音或释放期间改变了截止频率或包络调制量,而滤波器同时被包络调制,我对如何处理更新滤波器感到困惑。该代码位于此处。当前的实现没有像模拟合成器那样响应,但我不太清楚如何计算它。

在真正的合成器中,滤波器会立即改变,这取决于频率截止、包络调制量和包络中的当前阶段,但斜坡上升或下降也会平稳地继续。

我将如何为这种行为建模?

0 投票
1 回答
212 浏览

javascript - scriptProcessorNode 振荡器频率

我正在研究一个网络音频随机振荡器,并且在使用 scriptProcessorNode 时遇到了问题。我的算法使用随机游走来确定波形中的动态断点,然后在它们之间进行插值。

随着断点在 x 轴上移动,我认为振荡波形的频率会发生变化,但只是有一个过滤效果,而且频率似乎只是由 scriptProcessorNode 缓冲区大小决定的,它必须是 256 之间的 2 的幂和 16384。

如何更改 scriptProcessorNode 振荡器的频率?

这是我的综合代码:

这是一个工作示例的链接:http: //andrewbernste.in/bernie/gendy011.html

这一切都基于 Iannis Xenakis 的 GENDY 随机综合程序。

谢谢!

0 投票
0 回答
26 浏览

java - Java:在定时循环期间更新 GUI 元素

在家里,扩展了今年冬天的课堂作业,试图让它在运行时更新一个 GUI 元素,以显示他循环的进度。

预期的功能是,当它通过字符串时,处理每个字符,从 GUI 类传入的 JLable在每次循环迭代时更新以显示通过字符串的进度。但是,发生的情况是它只会在循环之后更改标签上显示的内容,在最终Thread.sleep (1000)过期之后(我不知道它是在合成器关闭之前还是之后,不要认为它会相关:/)。

在这一点上,我想就如何让 JLabel 的“进度”在循环到期之前更改为“应该显示”文本提出建议——一些与我的问题无关的代码已被删除以保护效率。

0 投票
1 回答
1186 浏览

python - 是否有一些轻量级的 python 库来播放带有复音的音乐片段?

查看 4 音符复音,其中音符是采样音频(wav/mp3/ogg 文件)。是否有一些异步音频库,我可以告诉库播放音频文件(完成,或一定长度),而不会阻塞?虽然之前的音频片段仍在播放,但我可以再次调用库来播放另一个音符,同样不会阻塞。因此我实现了复音,并且可以演奏多达 4 个音符的和弦?

我正在寻找一种适用于运行 Linux 的非常低端 ARM9 (260MHz) + 64MB RAM 类型的设备的方法。我试图使软件尽可能精简,因此无法想象在其上放置一个全面的软件合成器。此外,我的简单 4 音符复音“穷人合成器”的用户交互需要以编程方式实现。

到目前为止,我发现的唯一不错的选择似乎是 SDL,但不清楚它是否能满足我的需求并满足低权限约束。

编辑:

找到了这个SO Q&A,但我希望有一个更优雅的解决方案,从那以后的 3 年里出现了。

0 投票
1 回答
461 浏览

android - Android Studio midi 合成器编译错误,协议缓冲区

我已经使用 git 下载了一个 midi 合成器库:

git 克隆https://code.google.com/p/music-synthesizer-for-android/

在 android studio 中,我将其添加为模块,并在 build.gradle 文件中将模块类型更改为 library。我安装了Google Protocol Buffers Plugin,指定了一个输出文件夹,然后重新启动了 Android Studio。构建项目导致以下错误。

我应该改变什么才能成功构建项目?

0 投票
2 回答
69 浏览

audio - 您会为服务器端合成器推荐什么设置?

简而言之,我想创建一个网站,该网站根据客户端在类似合成器的界面中给出的输入输出音频流。就像每个访问这个站点的人都将拥有完全相同的音频流和界面状态,我希望所有工作都由服务器完成,只让客户端管理输入。虽然我不是编程的新手,但我对实现它的可能性感到有点不知所措。您能否为此推荐一个实用的设置,例如使用哪些库(编程语言可能与此相关联)来使用服务器端、客户端以及哪些技术是它们之间最有效的通信方式?我知道,这不是回答最快的问题,但我非常感谢您的帮助。

PS:这个项目对我来说主要是教育性的,而不是任何商业用途或任何东西

0 投票
0 回答
452 浏览

android - 使用 Audiotrack 为 Android 创建一个简单的音频合成器?

我正在尝试了解 Android 中的 AudioTrack 类,并且我想了解如何正确调制我正在生成的声波。

我正在使用异步任务类在 UI 的背景中运行 wave,并且能够生成声音。我也可以很容易地改变频率,但是当我动态地这样做时,音高会突然从一个转变到另一个,而不是像我希望的那样逐渐转变。还有模拟合成器的一些基本功能的问题。我试图创建一个 lfo 循环来调制波,但我不确定这是否是处理它的最佳方法,所以基本上有三个问题:

1):有什么方法可以在两种类型的音高转换,渐变/步进之间进行选择。

2):我是否正确实施了 LFO?

3):如果我想要有质感的声音,我必须运行不同的轨道吗?(例如:高频和低频)或者我应该在这个“doInBackground”方法中全部完成,我应该为每个创建一个类吗?我的想法最初是创建一个正弦波并相应地处理它以创建我需要的声音,基本上我不确定如何在线程和信号处理方面为声波添加纹理。

一些背景:我想要完成的是构建一个应用程序,它可以通过用户输入每隔一段时间生成谐波,有点像动态音序器。

我如何组织和构建处理它所需的滤波器?

抱歉,我知道这很多,但这对我来说非常迷人,并且非常感谢任何在正确方向上的帮助。

这是我的代码:它当前会生成一个声音流,但带有一些可听的伪影。

所以我读了这篇文章,我想知道它是否适用于我正在尝试做的事情:AsyncTask 被设计为围绕 Thread 和 Handler 的辅助类,并不构成通用线程框架。AsyncTasks 最好用于短时间的操作(最多几秒钟)。如果您需要保持线程长时间运行,强烈建议您使用 java.util.concurrent 包提供的各种 API,例如Executor、ThreadPoolExecutor 和 FutureTask。(直接来自文档)来自:如何从 doinbackground() 执行其他线程

0 投票
2 回答
301 浏览

java - Java - 生成不同幅度的音调会产生不同的音调

我正在我的 Java 程序中创建音调。所以有许多振荡器模块可以产生我需要的样本,这样我就可以一次播放多个音调。这些样本被添加并播放。如果我选择一个低幅度,例如 100,一切正常(在 Audacity 中对其进行标准化):

窦

但如果我选择更高的幅度,在本例中为 Short.MAX_VALUE,则创建的音调看起来和听起来都很奇怪:

窦2

示例在此处创建(来源:http ://www.wolinlabs.com/blog/java.sine.wave.html ):

对于锯齿波,我有同样的问题:

amplitude具有我上面提到的值,所以在这两种情况下100Short.MAX_VALUE

样本以这种方式求和,其中sum是输出样本,value是计算样本(如果没有播放音调,则为 0):

如果只播放一种音调,我还确保一个振荡器只有一个样本,所以sum = value.

但是我不明白为什么使用相同的代码为不同的幅度创建不同的音调,那么为什么会发生这种情况呢?

我还有第二个问题:如果我结束播放低幅度的正弦音,我会听到短促的噪音,如下所示:

噪音

这是从哪里来的,我该如何解决?

谢谢您的帮助!

0 投票
1 回答
40 浏览

java - 如果不用于播放歌曲,Java中MIDI的用途是什么

我正在为音乐播放器学习 javasound,但我对 java 中的 MIDI 和合成器感到困惑,它们有什么区别?