如何使用Node.js来制作电子音乐-编写我们的旋律
本篇以api为主,配以图讲解,结合之前的乐理讲解,相信小伙伴们可以将自己心中的旋律写出来,推荐旋律编写软件为
FL Studio
或者Cubase
,如果没有特别兴趣的可以直接使用自带音源,对于中国风热爱的推荐是民乐Kong,也是我个人最喜爱的。
使用npm安装库
cd xxx
复制代码
npm install Scribbletune
复制代码
使用
var Scribbletune=require('Scribbletune');
复制代码
接下来我们就可以使用Scribbletune来创建我们的音乐,运行后会生成midi文件,可以使用cubase Fl等音频处理软件打开处理
Clip
returns: Array
notes {String | Array}
pattern {String}
accentMap {String | Array}
arpegiate {Boolean | Object}
通过这个方法可以创建一个音或者一小段音乐,或者是一小段和弦,可以通过字面量对象的形式来传递参数
var scribble = require('scribbletune');
// 创建一个c4的音阶,并且定义它的节拍
var clip = scribble.clip({
notes: 'c4', //音阶
pattern: 'x________________' //节拍
});
//渲染生成midi文件
scribble.midi(clip, 'hats.mid');
复制代码
在钢琴窗中,我们可以看到一共有C0-C10的音区,这些包含了低音区,中音区,高音区,我们可以根据需要来调整数值,C4到C5之间还有D4,E4等
notes: 'c4',
pattern:'x___'
复制代码
我们通过使用_来表示音的延续,使用-来表示音的断开
notes: 'c4 d4 e4', // Or ['c4',d4', 'e4']
pattern: 'x_x_x'
//可以看作是c4_d4_e4
复制代码
通过设置accentMap可以告诉Clip当前音阶的强度。这是一个x和 - (连字符)字符串。一个x意味着力度更强,一个-(连字符)意味着力度变弱。
这是你如何使用accentMap。在下面的例子中,我们有一个模式,指示Scribbletune的Clip方法在16个节拍条的每个节拍上创建一个音符。然后,它继续设置一个accentMap参数,该参数指示哪个音符点击更难x,哪个点击更柔和-
var scribble = require('scribbletune');var clip = scribble.clip({notes: 'c3',pattern: 'xxxxxxxxxxxxxxxx',accentMap: 'x---x-x-x---x-x-'});scribble.midi(clip, 'hats.mid');
复制代码
accentMap也可以由单个音符值设置。您可以传递一组数值来表明当前音的强弱。
使用String.repeat
功能,您可以快速将之前的设置重复
var scribble = require('scribbletune');var clip = scribble.clip({notes: 'c4',pattern: 'x'.repeat(16), //将x重复16次,等价于xxxxxxxxxxxxxxxxaccentMap: [5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 127, 127, 127]});scribble.midi(clip);
复制代码
accentHi {Number} default 127
如果你使用一个字符串来设置一个accentMap,那么这个属性可以让你定义每个x的级别。
accentLow {Number} default 70
如果你使用的字符串设置一个accentMap,那么这个属性可以让你定义每个级别- 。
shuffle (Boolean) default: false
设置此属性将随机将您在Clip方法中设置notes的顺序排序。
sizzle {Boolean}
使音符更具有弹性感
noteLength {String}
恶意通过设置其属性来调节节拍,例如
var scribble = require('scribbletune');
//音符是节拍,四分音符为一排,一拍的长短会根据歌曲来调整// 16分音符的节拍,也是默认节拍var clip1 = scribble.clip({notes: 'c4',pattern: 'x'.repeat(12)});// 通过noteLength将默认的16分设置为32分var clip2 = scribble.clip({notes: 'c4',pattern: 'x_xxx_x_',noteLength: '1/32'});scribble.midi(clip1.concat(clip2, 'music.mid'));
复制代码
arpegiate {Boolean | Object}
将这个属性设置为true
时,会自动把音符转换为八分音符
var scribble = require('scribbletune');var clip = scribble.clip({notes: 'c3',pattern: 'x_'.repeat(8),arpegiate: true});scribble.midi(clip);
复制代码
同时也可以通过设置对象的形式来设置其的节拍与间隔
var scribble = require('scribbletune');var clip = scribble.clip({notes: 'c3',pattern: 'x_'.repeat(8),arpegiate: {distance: 7,steps: 11}});scribble.midi(clip);
复制代码
scale/modereturns: Array
可以快速的构建notes
root {String}
scale {String}
octave {Number} default: 4
addRootFromNextOctave {Boolean} default: true
var scribble = require('scribbletune');var cMinor = scribble.scale('c minor'); // [ 'c4', 'd4', 'd#4', 'f4', 'g4', 'g#4', 'a#4', 'c5' ]cMinor = scribble.mode('c minor'); // [ 'c4', 'd4', 'd#4', 'f4', 'g4', 'g#4', 'a#4', 'c5' ]cMinor = scribble.mode('c aeolian 4'); // [ 'c4', 'd4', 'd#4', 'f4', 'g4', 'g#4', 'a#4', 'c5' ]
// 默认是c4,以上直接获取c4-c5之间的音符cMinor = scribble.mode('c', 'aeolian', 3); // [ 'c3', 'd3', 'd#3', 'f3', 'g3', 'g#3', 'a#3', 'c4' ]
// 获取c3-c4之间的音符
复制代码
chord
可以直接通过和弦名来获取和弦
var scribble = require('scribbletune');var clip = scribble.clip({
// C和弦 F和弦 G和弦 C和弦,都是大三和弦notes: 'CMaj, FMaj, GMaj, CMaj',
pattern: 'x---'.repeat(4)
});scribble.midi(clip, 'chords.mid');
复制代码
以下为钢琴窗中的显示,这种为柱式和弦
另外一个就是可以通过chord来获取单个和弦的值,返回数组
var scribble = require('scribbletune');var cMajorChord = scribble.chord('CMaj'); // [ 'c4', 'e4', 'g4' ]
复制代码
通过listChords来获取所有可以用的和弦
var scribble = require('scribbletune');var availableChords = scribble.listChords();
// 列表里的所有和弦
复制代码
以下是可以用的和弦列表以及名称替代:
- 6th | Sixth | sixth
- maj | Maj
- min | Min | m
- sus2 | Sus2
- sus4 | Sus4
- maj7 | Maj7
- min7 | Min7
- dom7 | Dom7 | 7th
- dim | Dim
- dim7 | Dim7
- aug | Aug
如何使用Node.js来制作电子音乐-编写我们的旋律相关推荐
- 如何使用Node.js来制作电子音乐-和弦
和弦 和弦是乐理上的一个概念,通过是通过固定音符组成的一组声音,一般有三和弦,七和弦,还有一些其他的,不过跟本来说都是以三和弦为根本. 大三和弦:由以根音为基本,往上一个大三度加一个小三度构成的和弦 ...
- 用 node.js 来制作数据可视化视频吧
TNTWeb - 全称腾讯新闻前端团队,组内小伙伴在 Web 前端.NodeJS 开发.UI 设计.移动 APP 等大前端领域都有所实践和积累. 目前团队主要支持腾讯新闻各业务的前端开发,业务开发之余 ...
- 手机计算机dj音乐,教你如何用手机制作电子音乐
随着手机性能的提高,在手机上制作电子音乐并不是什么难事,接下来就为大家介绍一些可以在手机上使用的合成器应用. Cakewalk Z3TA + Cakewalk Z3TA +与它的Mac和Windows ...
- 如何用FLStudio水果软件下载制作电子音乐及激活码序列号教程(非破解版)
FLStudio水果无疑是适合制作电子音乐,其内置电子合成音色就不少. 光一个styrus就够研究一段时间,加之推出的harmless和harmor两款重量级的合成音色,也可以让电子音色有更多的选择, ...
- node.js毕业设计安卓电子阅读器APP(程序+APP+LW)
该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: Node.js+ Vscode + Mysql5.7 + HBuilderX+Navicat11+Vue ...
- 计算机毕业设计Node.js+Vue理想电子商城网站(程序+源码+LW+部署)
该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: Node.js+ Vscode + Mysql5.7 + HBuilderX+Navicat11+Vue ...
- 如何哄骗文艺青年安装Node.js? 将网易云音乐灰色歌曲变亮
Node.js是一门编程语言, 是世界上最流行的编程语言之一, 而一门语言的流行程度往往取决于, 它的好玩库多不多? 而 Node.js 的好玩库真的是超多, 即使是爱听网易云的文艺青年也会爱上它, ...
- 使用node.js来制作音乐(scribbletune)
本文是以API汉化为基础,稍作修改 使用npm安装库 cd xxx npm install Scribbletune 使用 var Scribbletune=require('Scribbletune ...
- 【Node.js】制作Steam自动发货机器人(一)
给所有想要制作STEAM自动发货机器人,淘宝自动发货,各种STEAM相关网站的朋友 使用全开源库,让你掌控每一步 语言:NODE(NODE大法好) 平台: WIN /MAC /LINUX 一直在做ST ...
最新文章
- McCabe度量法计算程序的环路复杂性
- J2EE基础之JSP
- (已解决torchvision中CIFAR10下载速度慢)如何下载以及使用torchvision导入
- SAP CRM IBASE保存出错,可能有哪些原因
- 【flink】flink http 方式 写入 clickhouse 报错 netty DefaultChannelIId.newInstance
- centos安装rpm格式jdk
- 1、系统需求分析与可行性分析(System Requirement Analysis and Feasibility Analysis)
- Word中如何删除某一页的页眉与页眉中的横线
- Cortex-A7中断系统
- 银河麒麟V10(Kylin Linux V10)之DBeaver安装
- 爱剪辑为啥显示服务器繁忙,爱剪辑蓝屏怎么办?爱剪辑蓝屏的六大原因及解决方法...
- ssh隧道连接的3种方式
- Android加载图片内存溢出问题解决方法
- 关于公网IP和私有IP的区别
- 网站改版会影响网站流量吗
- 读书郎平板中android,读书郎学生平板电脑怎么用 使用方法详解【图文】
- gif一键抠图 在线_强力推荐!免费在线的一键抠图神器:AIpix
- 如何在不影响系统的情况下有效清理C盘无用文件——亲测有效
- 华为员工的命 只值一台交换机的钱 【 华为员工 胡新宇 过劳死 最新报道 】
- 蓝汛改写互联网传统架构,CHN-IX助力数据中心发展