本篇以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来制作电子音乐-编写我们的旋律相关推荐

  1. 如何使用Node.js来制作电子音乐-和弦

    和弦 和弦是乐理上的一个概念,通过是通过固定音符组成的一组声音,一般有三和弦,七和弦,还有一些其他的,不过跟本来说都是以三和弦为根本. 大三和弦:由以根音为基本,往上一个大三度加一个小三度构成的和弦 ...

  2. 用 node.js 来制作数据可视化视频吧

    TNTWeb - 全称腾讯新闻前端团队,组内小伙伴在 Web 前端.NodeJS 开发.UI 设计.移动 APP 等大前端领域都有所实践和积累. 目前团队主要支持腾讯新闻各业务的前端开发,业务开发之余 ...

  3. 手机计算机dj音乐,教你如何用手机制作电子音乐

    随着手机性能的提高,在手机上制作电子音乐并不是什么难事,接下来就为大家介绍一些可以在手机上使用的合成器应用. Cakewalk Z3TA + Cakewalk Z3TA +与它的Mac和Windows ...

  4. 如何用FLStudio水果软件下载制作电子音乐及激活码序列号教程(非破解版)

    FLStudio水果无疑是适合制作电子音乐,其内置电子合成音色就不少. 光一个styrus就够研究一段时间,加之推出的harmless和harmor两款重量级的合成音色,也可以让电子音色有更多的选择, ...

  5. node.js毕业设计安卓电子阅读器APP(程序+APP+LW)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: Node.js+ Vscode + Mysql5.7 + HBuilderX+Navicat11+Vue ...

  6. 计算机毕业设计Node.js+Vue理想电子商城网站(程序+源码+LW+部署)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程.欢迎交流 项目运行 环境配置: Node.js+ Vscode + Mysql5.7 + HBuilderX+Navicat11+Vue ...

  7. 如何哄骗文艺青年安装Node.js? 将网易云音乐灰色歌曲变亮

    Node.js是一门编程语言, 是世界上最流行的编程语言之一, 而一门语言的流行程度往往取决于, 它的好玩库多不多? 而 Node.js 的好玩库真的是超多, 即使是爱听网易云的文艺青年也会爱上它, ...

  8. 使用node.js来制作音乐(scribbletune)

    本文是以API汉化为基础,稍作修改 使用npm安装库 cd xxx npm install Scribbletune 使用 var Scribbletune=require('Scribbletune ...

  9. 【Node.js】制作Steam自动发货机器人(一)

    给所有想要制作STEAM自动发货机器人,淘宝自动发货,各种STEAM相关网站的朋友 使用全开源库,让你掌控每一步 语言:NODE(NODE大法好) 平台: WIN /MAC /LINUX 一直在做ST ...

最新文章

  1. McCabe度量法计算程序的环路复杂性
  2. J2EE基础之JSP
  3. (已解决torchvision中CIFAR10下载速度慢)如何下载以及使用torchvision导入
  4. SAP CRM IBASE保存出错,可能有哪些原因
  5. 【flink】flink http 方式 写入 clickhouse 报错 netty DefaultChannelIId.newInstance
  6. centos安装rpm格式jdk
  7. 1、系统需求分析与可行性分析(System Requirement Analysis and Feasibility Analysis)
  8. Word中如何删除某一页的页眉与页眉中的横线
  9. Cortex-A7中断系统
  10. 银河麒麟V10(Kylin Linux V10)之DBeaver安装
  11. 爱剪辑为啥显示服务器繁忙,爱剪辑蓝屏怎么办?爱剪辑蓝屏的六大原因及解决方法...
  12. ssh隧道连接的3种方式
  13. Android加载图片内存溢出问题解决方法
  14. 关于公网IP和私有IP的区别
  15. 网站改版会影响网站流量吗
  16. 读书郎平板中android,读书郎学生平板电脑怎么用 使用方法详解【图文】
  17. gif一键抠图 在线_强力推荐!免费在线的一键抠图神器:AIpix
  18. 如何在不影响系统的情况下有效清理C盘无用文件——亲测有效
  19. 华为员工的命 只值一台交换机的钱 【 华为员工 胡新宇 过劳死 最新报道 】
  20. 蓝汛改写互联网传统架构,CHN-IX助力数据中心发展

热门文章

  1. anime 动画引擎
  2. 硬核蹭热点系列:负油价和巴舍利耶模型
  3. 普林斯顿算法课作业 part II 的python实现(四)Boggle
  4. python牛顿迭代法求根例题_python求根算法
  5. 【推荐】1657- 灵活可扩展,2023年值得尝试的13款富文本编辑器
  6. java jxl导出excel小结
  7. 微信浏览器中进行支付宝支付
  8. 解决win10蓝牙搜索到小爱音箱无法连接问题
  9. crypto-js使用
  10. HDFS 的权限管理不可怕,一篇文章搞懂它