这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» DIY与开源设计» 电子DIY» 【DIY电子鼓】音源的获取、录制及转换

共7条 1/1 1 跳转至

【DIY电子鼓】音源的获取、录制及转换

菜鸟
2023-09-16 16:44:27 打赏

前言

我们在制作电子乐器时,通常需要将某一种或几种乐器的声音移植到我们的电子芯片中,移植的过程大致可以分为如下三个步骤:

1.音源的获取

2.对应音乐片段的录制

3.音频文件的数据转换

接下来我将详细给大家介绍下我在音源移植上的经验。

一、音源的获取

音源的获取大致有两种方法,一种是自己购买对应的乐器,演奏并录制,第二种是使用别人录制好的音源,截取其中自己需要的片段。自己录制的方案需要昂贵的乐器,专业的设备以及熟练的演奏技巧,对于一般的爱好者来说很难达到。所以推荐使用第二种方案,从网上查找自己需要的音源,截取其中的一部分,进行格式转换后移植到芯片中,但是需要注意音源的版权。

1.1 在线音源

在线音源的获取比较简单,无需安装额外软件,浏览器打开相应网站即可,下面给大家推荐几个网站:

1.1.1https://www.musicca.com/zh/drums

1694853232449192.png

该网站是一个小型的音乐学习网站,提供了 钢琴、吉他、贝斯、套鼓四种乐器的在线演奏。

1.1.2https://www.autopiano.cn/

1694853270111866.png

该往站是一个在线钢琴网站,提供钢琴的在线演奏,可通过该网站获取钢琴音源。

1.1.3http://liflag.cn/html/Drum/index.htm

1694853309224617.png

该往站是一个电子鼓在线演奏网站,可通过该网站获取电子鼓音源。

1.2 离线音源

离线音源的使用相抵来说会复杂一些,需要在电脑上安装软件才能使用,优点是音源种类很多,几乎我们听到的任何乐器都能找到对应的软音源。离线音源一般需要在电脑上安装宿主软件以及响应的音源插件。下面给大家推荐几个常用的宿主软件及音源插件:

1.2.1 宿主软件

常用的宿主软件有 Studio One,Cubase ,Pro Tool,FL Studio等,功能上都类似,大家可以自行搜索安装,推荐使用Studio One

1694853394152375.png

1.2.2 音源插件

宿主软件一般是不带音源的,需要我们安装音源插件,建议直接在某宝搜索音源,花点小钱能快速解决问题。下面是我在某宝购买的空音民族音源,包含古筝笛子二胡葫芦丝中国鼓等等,有需要可以从下面链接下载:

【kong2】.链.接:https://pan.baidu.com/s/1ZE9Ib2Lc3UUtiY_v5-ypwg

提取码:cdxj

1694853509400326.png

当然也有免费的音源插件可以下载,下面给大家推荐几个网站:

https://download.midivst.com/

https://www.aigei.com/course/timbre/


二、音频片段的录制及截取

我们在第一步获取到的音源还能在电脑上播放,但是我们的目标是把音源片段转换成文件或者代码移植到芯片中。所以我们需要某种方法把电脑上播放的声音剥下来,保存成文件,然后在进行下一步处理。这里推荐使用 Audacity 这个软件进行电脑内录,该软件是一个免费软件,下载地址如下:https://www.audacityteam.org/

1694853588636308.png

安装好该软件后,在音频设置里面,将音频主机设为Windows WASAPI,播放设备设为正在使用的耳机或音响,Recoding设备也设置正在使用的耳机或者音箱,声道数建议选择单声道,这样就可以将电脑播放的声音记录下来了。最下面的音频质量可根据自己的需要进行选择。

1694853608735946.png

录制好声音后,选中自己需要的片段,点击鼠标右键,选择分开片段,就可以将我们需要的片段与其他部分分开了。

1694853629645747.png

然后选中带片段,点击文件,导出,导出选择的音频,保存类型选择WAV(Microsoft)编码选择 Signed16-bit PCM。

1694853650718023.png

导出之后可以播放一遍,检验一下是不是自己需要的片段。


三、音频文件的数据转换

在第二步,我么将所需要的音频片段保存成的Wav格式的文件,但是我们的单片机往往是要以数组的方式保存文件,那就需要使用工具将Wav数据转换成数组,这里采用的是Python脚本的形式,源代码贴在下面供大家参考。

import ewave

with ewave.open('test.wav') as w:
print("samplerate = {0.sampling_rate} Hz, length = {0.nframes} samples, "
"channels = {0.nchannels}, dtype = {0.dtype!r}".format(w))
data = w.read()

print("const short wave_data[" + str(len(data)) + "] = {")

i = 0
for d in data:
print(d,end=",")
i +=1
if i == 32:
i = 0
print("")

print("}")


生成的数组如下图所示:

1694853749209.png

粘贴到C语言代码中即可使用,注意数组最末尾多了个逗号。




关键词: 音源 录制 转换

院士
2023-09-18 16:13:24 打赏
2楼

谢谢楼主分享的实用资料,学习并收藏了。


高工
2023-09-18 19:57:17 打赏
3楼

不用这么复杂的。

使用hex软件打开后,读取后半段的内容即可


专家
2023-09-19 17:59:44 打赏
4楼

很详细啊,伙伴们可以借鉴、学习,共同进步!


高工
2023-09-22 07:20:26 打赏
5楼

专业讲解不错


高工
2023-09-28 10:15:33 打赏
6楼

相当不错的教程,希望论坛后续能再来一波活动,参加这个DIY@荷包蛋


高工
2023-10-07 08:44:23 打赏
7楼

讲的非常不错


共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]