创建自定义节拍的拳击手。

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. 每个节拍都会打出一个高音
  2. 从第二拍开始的每三拍打一脚
  3. 从第二拍开始的每四拍都有一个陷阱
  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很可能很快就会发生巨大的变化。但它的用法是这样的:

  • 网格显示每个度量的节拍数,您可以选择在度量的每个节拍上播放的内容。
  • 如果您想在特定的节拍上播放更多可用的声音,请转到EditAdd TrackCtrl-T添加另一个要使用的曲目。
  • 如果您希望每个测量值有更多或更少的拍数,请转到EditChange Number of BeatsCtrl-B以更改拍数。
  • 您可以使用Remove Track按钮或热键Ctrl-<row>删除一个曲目,其中<row>是该曲目的行。
  • 您可以使用Preview按钮预览度量值的声音,它将在显示当前节拍的同时循环播放度量值。
  • 您可以将度量值保存为wav文件,使用File,然后使用SaveCtrl-S

伙计们,这就是我目前所得到的。敬请期待。

未来抱负

找到生活的意义。

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

推荐PyPI第三方库


热门话题
java如何将jasper集成到jhipster项目中   java无法忽略lombok注释   关于tomcat日志的java问题   java@Autowired未设置字段>NullPointerException   GUI提交按钮不工作   java气泡和选择排序   java如何编写规则来匹配两个数组?   java如何找出某个字符在字符串中的第一次、第二次或第三次出现?   java通过字符串引用id   javascript在网络视图中加载在线图表   java保留web应用程序中用户更改的日志   在安卓中尝试使用Mandrill SMTP发送电子邮件时出现java错误   用java语言将a2b4c5等字符串转换为AABBCCCCC的程序是什么?   java无需TODO即可删除所有注释   java JMX MBean在应用程序部署时自动注册   java如何使用JSON解析从任何url解析数据   java@transactional注释类使用代理包装,但未创建事务   JavaFx转换和打印