首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于线程的音乐库

用于线程的音乐库
EN

Stack Overflow用户
提问于 2011-03-02 16:20:05
回答 6查看 995关注 0票数 3

我想写一些播放音乐的程序(音频、midi甚至纯音都可以)。

但是我想将它与线程一起使用,线程播放声音,而其他线程播放其他声音。

  • 线程1*可以播放不同强度和频率的纯音(形成一个更复杂的信封,创造声音的“音色”)。
  • 线程2*一组线程1可以在给定的音色中演奏不同的音符(根据乐器的声音形成和弦)。
  • 线程3*一组线程2可以在不同的音符中演奏和弦(代表音乐家)
  • 线程4*一组线程3可以成为乐队!=)

困难的是,我想我想要同时输出不同的声音,这是典型的预处理方式,但是如果声音的混合可以现场进行,它就会变得更有趣。

任何想法、经验、图书馆或信息都会有所帮助,谢谢!

EN

回答 6

Stack Overflow用户

发布于 2011-03-02 16:34:52

我不认为这是你想要的。同步太困难了。您可能想要做的事情(以及几年前我对一个类似的应用程序所做的事情)是维护一个活动注释的数据结构(可以用类实例、闭包或其他有效的方法实现),对于每个示例,调用结构中的每个项,并将输出加起来(此时我建议使用签名的16位数学,所以您的值在-32767到+32768之间)。把各种信号和在一起。

如下所示:

代码语言:javascript
复制
#ts = A clock, in eg, seconds, passed in to your calls for generation purposes.
sample = sum([notefunc(ts) for notefunc in notes])
#Now convert the sample to whatever format needed for your media lib
#Update notes array

..。然后以每秒44100次的速度重复这个循环。可能需要某种缓冲。实际的实时操作很棘手。当我在玩这个东西的时候(在233 but的G3 Powerbook上~2000),我可以用一两个简单的音符就可以得到实时的信息,但不是更多。

票数 5
EN

Stack Overflow用户

发布于 2011-03-14 22:06:56

您可能想看看GStreamer框架。它允许您将音频流建模为由元素组成的“管道”。并行元素将在不同的线程中自动处理。元素可以使用“时钟”保持同步。

看一看手册。前十章将给你一个很好的可能性概述。(它读起来很快。)

插件列表的角度来看,midi似乎得到了一些支持。

票数 2
EN

Stack Overflow用户

发布于 2011-03-15 16:49:22

jMusic似乎有一个全面的库。他们网站上的链接页面也有更多的资源。n.b.我没有生气地用它;几年前我看过它,然后选择了一个商业软件包.

hth,R

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5170316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档