问题标签 [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 回答
51 浏览

verilog - 模块实例中的寄存器

aF并且bF是寄存器。所有其他信号都相应地声明。P1,P2 . . P3是推送信号。这合法吗?在我合成它之前,我有很多代码要写,但我觉得它可能无法正确合成。

0 投票
0 回答
790 浏览

java - 如何将声音从合成器传输到音序器

好的,这是我的第一个问题,所以请放轻松。我正在尝试使用带有内部 Java 合成器的 MidiChannel 类中的 noteOn 动态生成声音。它完美地发出声音。我的问题是将声音输出到我的音序器,这样我就可以将它保存到一个 midi 文件中。目前,我的程序创建了文件,但它是空的。断开连接发生在我的发射器/接收器设置中。当我尝试获取合成器的发射器时,它会产生可爱的 MidiUnavailbleException。

我这里有一堆代码,所以我只会给你重点介绍。完整的课程将在最底部。

当它点击时transmitter = synth.getTransmitter();,我得到 MidiUnavailableException。关于如何将 MidiEvents 从我的合成器获取到音序器的任何想法?

//完整类 - 警告:可能导致头痛和/或歇斯底里

}

0 投票
2 回答
2962 浏览

matlab - 实时音频调制

我无法弄清楚如何继续我的项目。简而言之,我正在尝试使用来自加速度计的数据来创建一个 FM 合成器,以实时更改 FM 和 Pitch 参数。

这是我所基于的一些代码:

我确实有一个生成波浪的功能,但仅限于设定的持续时间(由于内置 matlab 函数的限制)。我希望它是连续的(直到这样的用户输入停止它)以及能够“实时”调节它(有点滞后很好)。

为此,我在这里找到了一个实时音频处理器代码。

但是,这是用面向对象的编程语言编写的,对此我并不熟悉。

是否有一种简单的方法可以为此代码(输出 rtap)实现上述功能,还是我必须在子类中编写?如果是这样,怎么做?

对于那些不愿意下载代码的人,这里是主类:

包中还有其他文件用作示例,但我一直无法成功修改它们。此外,我很抱歉没有发布我的读取和过滤加速度计数据的代码(它有点长)。

0 投票
2 回答
721 浏览

java - 在 Java 中将弯音发送到 MIDI 音序器

我了解启动和运行 MIDI 音序器的基础知识,并且我希望能够在播放期间增加/减少音序的音高,但弯音是发送到合成器而不是音序器的消息。

我尝试将音序器的接收器设置为合成器的发射器,当我发送弯音短消息时,音序器保持相同的音高,但合成器以新的弯音值播放第二条轨道,创造了一些听起来很糟糕的音乐.

有没有像改变速度那样在播放过程中弯曲音高的好方法?

另一种选择(这似乎是一个大杂烩)是在不同的键中准备好几个版本的 MIDI 文件,以便在调用时加载。

0 投票
1 回答
89 浏览

signal-processing - 波表采样变化

我对制作一个在 8 位 MCU 上实现的简单数字合成器很感兴趣。我想制作波表以准确表示声音。标准波表似乎要么有一个用于多个频率的表,要么有一个具有分数增量的样本,其中缺少由程序插值的数据以创建不同的频率。

是否有可能为给定的波形创建一个表,可能是低频,并改变程序轮询表的速率以生成不同的频率,然后处理这些频率。我的 MCU(免费一个,没有预算)相当慢,所以我没有空间容纳大量波表,也没有大量处理,所以我试图在我能做到的地方吝啬。有人看过这个实现吗?

0 投票
2 回答
2482 浏览

android - 使用软件合成器将 MIDI 文件转换为原始音频

我正在尝试直接从我的 Android 应用程序动态生成一个小的 MP4 音频+视频文件。

我原来的进攻计划:

  1. 用户输入一些基本的歌曲数据(和弦进行等),应用程序构建一个 MIDI 文件。

  2. 系统为每个和弦构建和弦图,并使用 MIDI 阅读器生成与 MIDI 同步的动画帧数组

  3. 将 MIDI 转换为原始 PCM 音频数据<--这个 SO 问题是针对这一点的

  4. 将原始音频应用于动画帧 - 并将音频和视频帧编码为 MP4

  5. 使用标准播放控件向用户提供生成的 MP4 视频。

该应用程序已经根据用户输入(包括速度、乐器、音符等)构建了 MIDI 文件。这部分很容易完成,并且 MIDI 文件正在正确生成。这个 MIDI 可以在 Android 的 MediaPlayer 中正常播放。(步骤1)

通过回读 MIDI 文件并交叉引用序列中每个和弦的静态位图列表,也可以正确创建动画帧。这些帧将成为视频......但一开始将没有音频。(第2步)

如您所见,Android MIDI 延迟问题对我来说并不是什么大问题,因为我没有创建实时合成器应用程序......我只是想将 MIDI 转换为一些可以混合的音频格式到已经定时到原始 MIDI 的视频中。(第 3 步)


我遇到的问题是第 3 步。

我知道我需要使用软件 MIDI 合成器来获取从一系列 MIDI 事件中产生的实际音频输出。但是,如何使其正常工作已成为主要障碍。我不关心生成的音频的精确质量,只是它与人们在使用通用设备(ala Gravis soundfonts 或内置 Sovinox 声音等)的通用 MIDI 样本时所期望的非常匹配。

所以...

  1. Android MIDI 库

  2. 使用 Sonivox EAS 库的 Android Midi 驱动程序

我的第一次尝试是使用上述两个项目......以这样的方式将它们混合在一起,以便 MIDI 文件可以转换为原始 PCM 数据缓冲区......它还没有那么顺利。

midi 库 (1) 使用实时监听器读取 MIDI 文件,并将事件发送到 Midi Driver (2),后者播放板载合成器生成的原始 PCM 数据。

(注意:对驱动程序进行了一些调整,以便存储整个缓冲区并仅在 MIDI 读取器完成后返回。这也意味着整个过程需要与歌曲长度相等的时间来转换它因为我们是实时“听”的。)

我还没有像我希望的那样让它工作。我想让这尽可能简单,如果可能的话,我更喜欢使用开源项目。如果它能够在不依赖实时监听器的情况下做到这一点会更好。


我一直在考虑的其他一些库和工具(但可能有点矫枉过正):

  1. 适用于 Android 的纯数据库

  2. MidiSheetMusic 应用程序(带源)

  3. C++ 中的综合工具包 (STK)

  4. 安卓音乐合成器

  5. 深红软合成器

更多的竞争者(还没有做太多的研究):

jFugue/胆怯/大胆/fluidSynth/cSound/jMusic/JSyn/Gervill/Softonic/Cau​​stic/LibGDX/JetPlayer/OpenSL-ES


我的问题是:

  • 我是否在上述项目中走上正确的道路?我对 MIDI->PCM 转换比较陌生,所以我想确保我没有完全遗漏一些东西。

  • 如果没有,我应该如何将 MIDI 文件转换为某种音频格式,然后可以用于创建 MP4(或任何视频播放格式)?

  • 是否有其他开源项目可能有助于使用 Android 转换 MIDI 2 原始音频波形的任务?

  • 有没有已经为在 Android 上使用而编写的此类任务的示例?(即已经移植用于 Android JNI 等)

我希望我完全错过了一些让这成为一项微不足道的任务的事情......我的假设是这将需要一些严肃的黑客攻击和 JNI 功夫。

如果需要的话,我愿意走艰难的道路。任何和所有的建议将不胜感激。

0 投票
1 回答
170 浏览

cocoa-touch - 如何在ios7中通过nsspeechsynthesizer将用户语音合成为字符串

我会使用 nsspeechsynthesizer 或其他 ios7 方式将用户语音转换为字符串。我只能找到相反的方法。

0 投票
2 回答
3156 浏览

arduino - Arduino Uno PWM - 奇怪的结果

我一直在 ATMega328P 上试验 PWM 波形生成模式。我得到了一些奇怪的结果,我不知道这是否与我编写固件或解释数据表的方式有关。

这是我为模拟analogWrite() 函数而编写的第一段代码:

上面的代码从引脚 9 产生大约 2.5V(49% 占空比)的平均电压输出。奇怪的是(对我来说)根据数据表,TIMER1 是一个 16 位定时器,所以它应该在 65536 滴答时溢出. 据我了解,将 OCR1A 设置在 0 到 65535 之间会改变脉冲的占空比。那么,将 OCR1A 设置为 125,我不应该得到大约 0.01 V 而不是 2.5V 的输出吗?结果似乎暗示时钟在 255 处溢出。

对于我第二次涉足 PWM 领域,我想尝试使用 ATMega 的快速 PWM 模式创建一个 2.5V 信号。这是我得到的:

我将 ICR1(溢出值)任意设置为 20000 个滴答声,然后将 OCR1A(比较值)设置为大约一半。我将通道 A 设置为非反相模式,但是(我认为)将其设置为反相模式不会有什么不同。当我把它刷到 Arduino 上时,我从引脚 9 获得了 5V(100% 占空比)的稳定电压平均值,但我终其一生都无法弄清楚原因。

我将不胜感激您能提供的任何见解。

0 投票
1 回答
309 浏览

python - 只要我按下键(Fluidsynth),如何弹奏一个音符?

我目前正在研究一个 Raspberry Pi 项目,我正在寻找一种可能性,只要他们按下一个按钮(与 gpio 连接)就可以播放一个音符。我使用 pyFluidsynth 并让它工作,但只要我按下一个按钮,它就会拿着一个音符,它会非常快地重复它,但会慢到听不到它。

有什么我不知道的控制吗?我只是在使用noteon和noteoff,可能有类似“notehold”的东西吗?

谢谢!

0 投票
1 回答
198 浏览

synthesis - 使用 Synopsys Design Vision 对自定义库进行区域优化

我为Synopsys 设计愿景编写了一个自定义库,该库仅包含 XOR、NOR 和 IV(逆变器或非逆变器)。我的计划是合成一个组合逻辑,使得生成的网表具有最少数量的 NOR 门。我将库编写为流:

在这里,为了节省空间,我去掉了时序和输入电容。我将 NOR 的区域设置为 1000,将 XOR 和 IV 设置为 1,因此我可以使用区域优化来用 XOR 和 IV 替换不必要的 NOR。set_max_area 0我使用然后编译我的组合逻辑compile_ultra -exact_map -no_design_rule -area_high_effort_script

问题是无论我将 NOR 区域设置为 1 还是 1000,我都会得到相同的结果(# of NOR)。似乎区域优化技巧不起作用。你知道为什么吗?我怎样才能最小化NOR?

谢谢