创建自定义节拍的拳击手。
beatboxer的Python项目详细描述
拳击手
我没有钱(或天赋)去使用fl工作室,也没有耐心去学习其他东西。幸运的是我已经知道python了,所以这里是我的解决方案。
打拍子只需要指出应该播放什么声音的拍子。很简单,相信我。
你问我这个有什么用?太多了!快速提供饶舌战斗的毒气节拍,为快速克鲁克塞什敲打,为您的声音云说唱者的愿望与经典切分次低音押韵,使用它作为一个美化和多功能节拍器等!
安装软件包
只要用经典的方式:
pip install beatboxer
示例
下面是一个直接从main
函数中截取的示例:
首先,创建对象。
frominspectimportgetsourcefilefromosimportpathfrombeatboxerimportBeatBoxer# Create directory to save audio intosave=path.join(path.dirname(path.abspath(getsourcefile(lambda:0))),'outputs')# Create object with 120 beats per minute and quarter note as one beatb=BeatBoxer(bpm=120,base_note=4,save_path=save)
现在让我们拍几下。第一次16拍,16/4次测量一次
- 每个节拍都会打出一个高音
- 从第二拍开始的每三拍打一脚
- 从第二拍开始的每四拍都有一个陷阱
- 从第1拍开始的每8拍播放一次崩溃
b.make_a_beat(b.empty(),num_measures=1,every_beat=['hihat'],every_4th=[('snare',1)],every_3rd=[('kick',1)],every_8th=[('crash',0)])# Store it with the name 'dope1'b.store_beat('dope1')
我们再打一次!我们只将时间标记改为16/8,并播放4个小节。这一节拍的速度是第一节拍的两倍。让我们在第七和第十一节拍上鼓掌。
b.change_base_note(8)b.make_a_beat(b.empty(),num_measures=4,single={'clap':[7,11]},every_beat=['hihat'],every_4th=[('snare',1)],every_3rd=[('kick',1)],every_8th=[('crash',0)])# Store it with the name 'dope2'b.store_beat('dope2')
最后一拍。对于12个度量,我们将bpm更改为100,时间签名更改为3/8。
b.change_bpm(100)b.make_a_beat(b.empty(3),num_measures=12,every_beat=['hihat'],every_3rd=[('snare',2),('kick',1)])# Store it with the name 'lastly dope'b.store_beat('lastly dope')
我们会把我们最喜欢的,第二个保存为dopest.wav
。
b.save_beat('dopest',b.stored_beats['dope2'])
如果打印对象,它将显示存储的和当前的节拍。
print(b)
输出:
---------Current Beat--------
BPM: 100 --- Time Signature: 3/8 --- Number of Measures: 12 --- Length: 10.981 s
---------Stored Beats--------
Name: dope1 --- BPM: 120 --- Time Signature: 16/4 --- Number of Measures: 1 --- Length: 8.106 s
Name: dope2 --- BPM: 120 --- Time Signature: 16/8 --- Number of Measures: 4 --- Length: 16.106 s
Name: lastly dope --- BPM: 100 --- Time Signature: 3/8 --- Number of Measures: 12 --- Length: 10.981 s
啊,等等……即使第二个是像Kanye级别的质量,第一个需要工作…所以让我们编辑一下。
# First switch it to the current beatb.switch_current_beat('dope1',force=True)# Remove every snare and every 2nd hihat. Then add a bass on every kick and# re-add the snare on every 4th note but with a 2 beat offset.b.edit_current_beat(bpm=140,base_note=8,num_measures=4,remove={'every_beat':['snare'],'every_2nd':[('hihat',1)]},add={'every_3rd':[('bass',1)],'every_4th':[('snare',2)]})# Now, there is still the original 'dope1' beat in b.stored_beats. We can# either overwrite it with this or store as a new one like so:b.store_beat('way better than dope1')# And lets save that bad boyb.save_beat('dopestest')print('\n\nDid some editting...')print(b)
最终输出为:
Did some editting...
---------Current Beat--------
BPM: 140 --- Time Signature: 16/8 --- Number of Measures: 4 --- Length: 13.696 s
---------Stored Beats--------
Name: dope1 --- BPM: 120 --- Time Signature: 16/4 --- Number of Measures: 1 --- Length: 8.106 s
Name: dope2 --- BPM: 120 --- Time Signature: 16/8 --- Number of Measures: 4 --- Length: 16.106 s
Name: lastly dope --- BPM: 100 --- Time Signature: 3/8 --- Number of Measures: 12 --- Length: 10.981 s
Name: way better than dope1 --- BPM: 140 --- Time Signature: 16/8 --- Number of Measures: 4 --- Length: 13.696 s
使用图形用户界面
要使用图形用户界面,只需运行
frombeatboxerimportguigui()
我现在不打算在这里使用picture,因为gui很可能很快就会发生巨大的变化。但它的用法是这样的:
- 网格显示每个度量的节拍数,您可以选择在度量的每个节拍上播放的内容。
- 如果您想在特定的节拍上播放更多可用的声音,请转到
Edit
和Add Track
或Ctrl-T
添加另一个要使用的曲目。 - 如果您希望每个测量值有更多或更少的拍数,请转到
Edit
和Change Number of Beats
或Ctrl-B
以更改拍数。 - 您可以使用
Remove Track
按钮或热键Ctrl-<row>
删除一个曲目,其中<row>
是该曲目的行。 - 您可以使用
Preview
按钮预览度量值的声音,它将在显示当前节拍的同时循环播放度量值。 - 您可以将度量值保存为wav文件,使用
File
,然后使用Save
或Ctrl-S
。
伙计们,这就是我目前所得到的。敬请期待。
未来抱负
找到生活的意义。