Her*_*che 3 c++ java audio multithreading
我想编写播放音乐的节目(音频或midi甚至纯音都可以)
但我想用线程,线程播放声音,而其他线程播放其他声音.
我认为这里的难点在于我想要同时输出不同的声音,预处理这将是典型的方式,但如果声音的混合可以实时完成,它会变得非常有趣.
任何想法,经验,图书馆或信息都会有所帮助,在此先感谢!
我不认为线程是你想要的.同步太难了.您可能想要做的事情(以及我多年前为类似应用程序所做的)是维护活动笔记的数据结构(可以使用类实例,闭包或任何工作实现),并且对于每个样本,调用每个结构中的项目,对输出求和(我建议此时使用带符号的16位数学运算,因此您的值在-32767到+32768的范围内).混合只是对各种信号求和.
类似于以下内容:
#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
Run Code Online (Sandbox Code Playgroud)
...并重复该循环44100次/秒.可能需要某种缓冲.实际实时很棘手.回到我玩这个东西的时候(在233mhz G3 Powerbook上大约2000)我可以用一两个简单的音符获得实时,但不能更多.