music是一个基于mass框架的用于制作音乐和声音的python包

music的Python项目详细描述


#music
基于[mass]框架(https://github.com/ttm/mass/)(示例序列中的音乐和音频)制作音乐和声音的python包。
mass大致是lpcm audio中音乐元素的心理物理描述的集合python例程。
因此,它有助于创建具有各种功能的python包。

请参阅文章
[声音离散时间表示中的音乐元素](https://github.com/ttm/mass/raw/master/doc/article.pdf)以进一步了解例程
,如果使用此软件包,请引用工作。


将合成声音与数学模型的逼真度最大化。
*音乐结构,强调对称性和话语。
*语音和歌唱界面。
*理想化为独立使用,并用于数据的音频可视化
(例如,利用开放链接的社交网络与参与本体(po)
和渗透包相关的数据,或与音频视频分析词汇和本体(aavo)相关的数据。

黑客和调试,克隆存储库并使用-e:


$git clone https://github.com/ttm/music.git
$pip3 install-e<;path_to_repo>;

此安装方法在随后的音乐运行中重新加载修改后的模块时特别有用。


群众框架。全部导入源:
-functions.py:此文件还导入mass框架中可用的所有示例函数。
它们位于functions.py中,包括各种synth、effects和utilities(包络线,等)。
-classes.py:当前只保存强大的类being(),应进一步记录并举例说明其用法。
*synths.py有附加的synths不包括在mass中
-*注意*:应检查核心模块synths以了解直接从mass继承的synths,它们的范围从非常简单到非常复杂。
与质量框架相比,这个模块是非常初级的。
*effects.py用于音效
-注意:一个完整的检查核心。\*用于许多效果,从颤音和调幅到空间和光谱操作。
同样,这个与质量框架相比,模块是非常初级的。事实上,它还没有实现。
*结构/对于更高层次的音乐结构
-例如排列(与代数群和变化的响铃峰有关)、音阶、和弦、对位、调弦,等。
-实现的是:
*任何数量的铃铛与任何数量的狩猎(匈奴,半狩猎等)的简单变化。
这里的限制实际上是你的机器和系统,但是您应该能够获得至少12个音/铃/项的
完整的纯变化峰值。
这是在structures.peals.plain changes.py
*一些基本排列集的组织中实现的,例如与旋转、镜像、交替等相关的排列集。
这是通过[群理论]和排列的任意次序来实现的。
我试图克服这种任意次序已有十多年了……
我的希望是通过群表示理论来实现的。
structrures.permutations.py
*symmetry.py只收集内容组织的peal和其他置换集。
*py的意思是[sumfree set]和相关的结构,但是素描的例程还没有迁移。
*singing/for singing with ecantorix
-没有正确的文档,但是可以工作(可能需要调整,例程使用ecantorix,使用espeak..)
*todo:make annotation about espeak in setup.py or.cfg
-语音目前是通过espeak以最明显的方式实现的,使用os.system,如中所示:
*https://github.com/ttm/penalva/blob/master/penalva.py
*https://github.com/ttm/lunhani/blob/master/lunhani.py
*https://github.com/ttm/soares/blob/master/soares.py
*legacy/用于用音乐包呈现的音乐片段(可能被直接欣赏或用作制作更多音乐的材料)
-目前只有一个音乐作品(确实是一个愚蠢的作品)。
*音乐/用于将材料重新组合成新的作品,以及用于从零开始生成新的作品(具有任意参数化)
-尚不存在;草图尚未迁移。
-应与旧的/模块协同工作。


函数和变量以camelcase、headlesscamelcase和小写形式编写,分别地。
下划线只在变量名中使用,其中变量名中的单词使某些内容不可读。

代码是*文档。
代码应该非常可读,以避免编写不必要的文档和复制例程表示。
这加起来等于使用docstring为对象提供上下文,或者省略docstring并直接记录代码行。
todo:doxigen或类似的工具应该尽快使用。

每个功能都将与至少一个旧的/例行程序相关。


numpy as n
t=m.tables.basic()
h=m.utils.h



1)启动a_ynth
b=m.core.being()

15000]颤音频率
b.nu[5]半音中的颤音深度(音高的最大偏差)
b.f[220,330]音符频率


3)渲染wavfile
b.render(30,"amusicalsound.wav")渲染30个音符,遍历上面的列表

3b)或直接使用numpy数组来连接和/或混合声音:
s1=b.render(30)
b.f廑=[440]
b.fv廑=[1,2,3,4,5]
s2=b.render(30)

然后是s1+s2,但在使用之前跳过6个样本:
s3=h(s1,s2,s1+s2,(s1,s2),
s1*s2[::-1],
s1[::7]+s2[::7])
m.core.ws(s3,"tempmusic.wav")

x)对由变化振铃(campanology)或有限群理论(代数)导出的特殊排列集进行调整:
nel=4
pe4=m.structures.symmetry.plainchanges(nel)
b.perms=pe4.peal直接
b.domain=[220*2**(i/12)for i in(0,3,6,
b.curseq='f
b.f=[]
n notes=len(b.perms)*nel(b.perms)==阶乘(nel)
b.stay(notes)
b.nu=[0]
b.d=[1/2]
s4=b.render(notes)

b2=m.core.being()
b.curseq='f='f
b.curseq='b.core.being()
b2 b.perms=pe4.peal=>b.peal=直接
b2.domain=b.domain[::-1]
b2.curseq='f_'
b2.f_=[]
nnotes=len(b.perms)*nel(b.perms)==factorial(nel)
b2.stay(nnotes)
b2.nu_=[2,5,10,30,37]
b2.fv戋=[1,3,6,15100100010000]
b2.d戋=[1,1/6,1/6,1/6]
s42=b2.渲染(注释)

b2.置换=i4.旋转
b2.curseq='f_'
b2.f_=[]
b2.留下来(注意)
s43=b2.render(注意)



diff=s4.shape[0]-s42.shape[0]
s42=h(s42,n.zeros(diff))
s=h(s3,(s42,s4),s43

m.core.ws(s,"几何音乐.wav’’






<1)启动being(),将其置换设置为置换序列,将其域设置为要置换的值,它的曲线是域的置换产生的存在序列的名称。
m.core.v)或使用iteratorSynth将值序列
(可能已弃用)

pe3=m.structures.symmetry.plainchanges(3)
m.structures.symmetry.printpeal(pe3.act(),[0])
freqs=sum(pe3.act([220440330]),[])


b=m.core.being()
b.f\uu=freqs
b.render(notes,"Thesound ou-campanology.wav’’





b=m.core.being()
b.domain=[220,440,330]
b.perms=pe3.peal_direct
b.f=[[
b.curseq='f'
b.stay(注意)
b.render(注意,'thesound-campanology.wav’











或(已弃用,但在不确定时仍保留)删除…
isynth=m.synth.iteratorsynth()
isynth.basic_frequency_sequence=freqs
isynth.tab_sequence=[t.sine,t.triangle,t.square,t.saw]

pcm_samples=m.h(i in range(len(freqs))的isynth.renderiterate()))

m.core.w(pcm_samples,"something.wav")





br/>我们还没有机会制作出我们想要的音乐。
下面是一个例子我们理想化的是:

`` python
将音乐导入为m


m.legacy.experiments.cristal2(.2,300)声波结构的wav in./


声波=m.legacy.songs.madamez(render=false)返回numpy数组

声波2=m.io.open("demosong2.wav")\numpy数组

music=m.remix(声波,声波2)
music=m.h(声波[:44100*2],music[len(music)/2::2])

m.oi.write(music戥)

`````


戥戥戥戥戥依赖项
python模块默认由setup.py安装。

如果要使用歌唱界面,还需要安装espeak、sox和abc2midi(ubuntu中的abcmidi包)。
ecantorix需要midi.pm和fft.pm文件来合成歌唱序列,
并且可以安装:
$sudo cpan install midi
$sudo cpan install math::fft

但也被设计用于心理物理实验和数据声音化。例如,【versinus】(https://github.com/ttm/versinus)用于演进网络的动画可视化方法使用音乐(实际上是它的旧版本)来呈现表示网络结构的音乐轨迹。


$python3 setup.py sdist
$tween upload dist/


可以使用"python setup.py sdist upload-r pypi"?

:::

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java数据未插入SQLite数据库   Java中内存有效的对象创建   java在方法内部使用“this”(不用于调用方法、构造函数或变量)   java为什么这里会出现NullPointerException?   在REST中使用HATEOAS导致的java循环依赖   java如何定制spring boot横幅?   Java数字基数计算器(即基数10到基数5)   如果在Kotlin vs Java中声明,用作全局上下文的安卓 MainApplication类将崩溃   用于过滤对象的Java lambda函数   java从字符串数组中获取整数列表   java为什么Maven找不到org。json JPMS自动模块?   java将字符串数组转换为int   仅当与阈值字节匹配时,java才会在映射中填充字符串值