简介

前段时间接触了一个叫 Sonic Pi 的音乐制作工具,喜欢音乐的童鞋们了解一下。

简单来说,Sonic Pi 就是一个用代码写音乐的工具,引用官网介绍 — “The Live Coding Music Synth for Everyone“。它目前是由Sam Aaron主持的一个开源项目,使用ruby开发,面向音乐与计算机教育工作者,对零编程基础者来说,入门门槛较低,支持 Windows / macOS / Raspberry Pi 平台。它的界面长这样:

个人觉得还是不错的!与GarageBand相比,由于是通过代码来演奏音乐,显而易见,优点是有更多的可操作性和即刻调整音乐的能力,但缺点是创作所花费的时间比较多。


开始弹奏!

使用play指令可以弹奏指定的音符,如弹奏音名[:c4]或音符号[60],弹奏的都是中音C,play指令还可以调整各个参数对音符进行控制,如上图中的amp(音量), attack(递增), sustain(持续), release(衰减)。

play :c4, attack:1, sustain:1, release:1

以上指令弹奏中音C,音符在1s达到最大音量,持续1s,并在1s衰减。


使用sample指令可以播放录制好的样本, 如上面播放的ambi_choir样本,同样,sample也有许多参数可以用来控制样本。

sample ambi_choir

以上指令播放一段唱诗班的吟唱小样。 — ## 使用 Fx 效果器! 作为一个弹了三年吉他还没用过效果器的人,Sonic Pi真是大大的满足。它提供了许多可用的效果器,只需要在乐段外使用以下指令包裹就能使用对应的效果器了,而且,效果器还可以嵌套使用。下面我们定义一个函数,弹奏使用效果器的Em7, Bm7, D7和G7和弦分解。

define :rhythm dowith_fx :slicer dowith_fx :echo dowith_fx :pan do# I'm in SAPCE !play_pattern_timed chord(:e3, :minor7), 0.5play_pattern_timed chord(:b2, :minor7), 0.5play_pattern_timed chord(:d3, :major7), 0.5play_pattern_timed chord(:g3, :major7), 0.5endendend
end

我最喜欢的效果器有 echo(回音), pan(声道) 和 slicer(切片) 这几个,这几个效果器配合起来能制造出太空漫游、迷幻的感觉,对于我这个PinkFloyd迷来说真是再好不过了。 — ## 使用 Synth 合成器! 合成器用于合成特定的音色,而前面说到的效果器是用来修饰音色的。由于合成器直接改变音色,所以没有嵌套这个说法,弹奏应用的是最后一次使用的合成器。另外需要注意的是,执行 use_synth 指令后,指令所在线程和子线程都会继承这一音色,除非它们执行了 use_synth 使用了新的合成器音色。

use_synth :blade
rhythm

让我们为刚刚的旋律添加上一个合成器! — ## 创作自己的电音! Sonic Pi 展示了许多范例,风格多样 — 迷幻、古典、庞克…
我发现其中有一段名为Sonic Dreams,由Sonic Pi设计者Sam Aaron创作, 一首未完成的电音。它由以下的部分( *以下翻译纯属本人瞎扯* )组成:
**Intro – The Curved Ebb of Carpentry** ( 0:00 - 0:40 ) >序曲 : 木匠工艺的衰落 **Part 2 - Inside the Machine** ( 0:41 - 1:30) >第二章 : 步入机器时代 **Part 3 - Reality** ( 1:30 - 2:30 ) >第三章 : 现实 **Part n - The Observer becomes the Observed** ( uncompleted ) >第四章 : 长江后浪推前浪, 浮事新人换旧人 嗯,感受一下这个意境,嗯,很迷幻。[(音乐在这里)](#sonic-dream) 其中 *Part n* 内容为空,看起来Sam想让其他人来完善这个部分,于是我从这个部分入手完成我的Part n。说实话,刚开始接触这250行左右的Sonic-Pi Codes,实在让人摸不着头脑(fà),由于本人水(shì)平(gè)有(cài)限(jī),琢磨了许久才弄通里头的逻辑,到Part n之后,只有bass drums和drums线程在跑,所以我只需要跟着这个节奏写下去就好了。 好了!开始创作我的Part n部分,下面的代码只是部分代码,用来介绍我的创作思路,具体的实现过程没有贴上来。

puts 'Part n'
puts 'The Observer becomes the Observed'
#
# My turn...
#
# Coded by Todd Tang in Sonic-Pi
## Lots of functions defined here# Base thread part n
in_thread(name: :mypart) do# sync mypart, receive the signal cued from part3.sync :mypart# thread bellin_thread(name: :beat) dolive_loop :bell do# bell beats hereendendsleep 8# thread rhythmin_thread(name: :rhythm) dolive_loop :blur do# blur rhythm here.endendsleep 8# thread leadin_thread(name: :lead) do# lead riff here.end
end

很明显,*thread part n* 由三个thread构成, 分别是:

beat(鼓点), rhythm (节奏), lead(主音)

其中beat与rhythm线程控制鼓点与节奏声部,其中都有一个live_loop循环一直进行着;而lead线程则是一串riff(重复乐段)作为主音声部在后面加入。在根线程里, sync :mypart 先同步一下第三章代码段的末尾的结束信号 cue :mypart,这对指令专门用来协同各个线程间的工作,在Sonic Pi中还可以使用*sleep*指令来完成各线程的协同工作,如在beat与rhythm之间的 sleep 8就用来控制两个线程的工作时间。 了解音乐的朋友都知道上面提到的三个子线程的声部是构成乐队的基本元素,而我们用 *Sonic Pi* 轻松地创作了一个有完整声部的音乐,超酷的!完成了这段创作后,最大的一个感受就是:**这个创作过程(多任务合作)和多线程编程很像嘛!**

附上完整音乐,其中2分30秒前的部分是原作者Sam完成的 Intro->Part2->Part3, 2分30之后是我创作的Part n.

**Sonic Pi 还有很多特性与模块我没有介绍,感兴趣的童鞋们可以戳文末的链接继续探索~** — ## 仍需完善的地方 + stop指令只能关闭stop指令所在的thread或是关闭当前正在运行的thread,无法停止特定thread,且关闭thread后,没有指令可以继续被停止的thread.


Thanks to Sonic Pi Team
Sonic-Pi @Github
Sonic-Pi @Homepage
Sonic-Pi @Community

原文戳这里,转载请声明出处。

Sonic-Pi 初体验相关推荐

  1. 来自新手Banana Pi香蕉派初体验

    2019独角兽企业重金招聘Python工程师标准>>> 一.前言 一段时间来对有强大的技术支持和完善的社区的Raspberry Pi很感兴趣,本想入一片学习学习,但转念一想Raspb ...

  2. 35美元最小电脑树莓派windows10初体验 raspberry pi 2 win10

    下面是体验视频 35美元最小电脑树莓派windows10初体验 raspberry pi 2 win10

  3. 树莓派2代B model 上手初体验,不用显示器,Python GPIO 点亮一颗LED

    开题:[好东西,值得研究!] 标题:树莓派2代B model 上手初体验,不用显示器,Python GPIO 点亮一颗LED [知识普及] 1,树莓派各版本对比: 2,树莓派2代BModel 主板,图 ...

  4. 香蕉派(or 皮?)上手初体验 -- 外观鉴赏,安装,配置amp;总结

    一.前言及简单介绍 听到"派"或者是看到这幅图片.难免让你想到眼下大名鼎鼎的"树莓派". 而香蕉派(Banana Pi. 论坛上也有人称它香蕉皮)是一款国产的比 ...

  5. Hadoop集群启动、初体验

    1. 启动方式 要启动Hadoop集群,需要启动HDFS和YARN两个集群. 注意:首次启动HDFS时,必须对其进行格式化操作.本质上是一些清理和准备工作,因为此时的HDFS在物理上还是不存在的. h ...

  6. 【ERNIE Bot】百度 | 文心一言初体验

    文章目录 一.前言 二.文心一言介绍 三.申请体验⌈文心一言⌋ 四.⌈文心一言⌋初体验 1️⃣聊天对话能力 2️⃣文案创作能力 3️⃣文字转语音能力✨ 4️⃣AI绘画能力✨ 5️⃣数理推理能力 6️⃣ ...

  7. 苹果电脑安装python3密码_mac系统安装Python3初体验

    前沿 对于iOS开发不要随便拆卸系统自带的Python,因为有很多 library 还是使用 Python2.7. 1 安装Xcode 1.1 App Store 搜索Xcode 并安装 1.2 安装 ...

  8. MapReduce编程初体验

    需求:在给定的文本文件中统计输出每一个单词出现的总次数 第一步: 准备一个aaa.txt文本文档 第二步: 在文本文档中随便写入一些测试数据,这里我写入的是 hello,world,hadoop he ...

  9. 小程序 缩放_缩放流星应用程序的初体验

    小程序 缩放 by Elie Steinbock 埃莉·斯坦博克(Elie Steinbock) 缩放流星应用程序的初体验 (First Experiences Scaling a Meteor Ap ...

  10. wxWidgets刚開始学习的人导引(3)——wxWidgets应用程序初体验

    wxWidgets刚開始学习的人导引全文件夹   PDF版及附件下载 1 前言 2 下载.安装wxWidgets 3 wxWidgets应用程序初体验 4 wxWidgets学习资料及利用方法指导 5 ...

最新文章

  1. LLVM 编译器和工具链技术
  2. 怎样做反向域名解析?
  3. Javascript弹出对话框 确定取消转到不同页面
  4. Windows2003 SQL2005解决系统Administrator密码不知道的问题
  5. SQL语言基础:SQL中的数据完整性约束用法
  6. java aop execution_Spring AOP -- execution表达式
  7. 提高mysql insert速度_让你的insert操作速度增加1000倍的方法
  8. 【渝粤题库】陕西师范大学164117 企业组网技术 作业 (高起专)
  9. JimuReport积木报表1.3.3 版本发布,可视化报表工具
  10. matplotlib——在 Jupyter Notebook中绘制图像时只显示变量信息不显示图片
  11. Google验证码生成
  12. 测试计划、用例、测试报告、缺陷报告总结
  13. 2007年各大论坛最新经典WindowsXP操作系统
  14. Android中播放音乐的几种方式
  15. Linux虚拟地址和物理地址的映射
  16. QTimer::singleShot使用
  17. html全屏ipad顶部状态栏,iPad横屏和竖屏界面尺寸设计规范【最全】
  18. ruyistdio IDE caffemodel 转.wk
  19. 唐发德老师:精益生产管理导师(唐发德)
  20. 【原理篇】qBittorrent下载+转种Transmission快校版+IYUU Plus辅种教程

热门文章

  1. 如何高效地为室友电脑清理 C 盘?
  2. TF-IDF算法解析与Python实现
  3. 心情日记20090820
  4. 纯日记+游戏推荐(妈妈把我的游戏藏起来了)
  5. java计算机毕业设计-线上自助旅游报名网-源程序+mysql+系统+lw文档+远程调试
  6. 我的世界网易版java材质包下载_我的世界网易版服务器怎么加材质包
  7. 阿里巴巴计划今日中午推出1688.com批发网
  8. AutoCAD Electrical 2022—源箭头和目标箭头
  9. tomcat URL简写案例:模拟网站www.baidu.com的访问
  10. QT QGraphicsItem飞舞的蝴蝶