Web前端开发网

fly63.com

首页 资源 工具 文章 教程 栏目
  • 关于我们
  • 广告合作
  • 网站投稿
  • 文章标签
  • 赞助一下
搜索

在线工具_工作生活好帮手

打造各种简单、易用、便捷的在线工具,网友无需注册和下载安装即可使用

点击查看

资源分类

AI智能 酷站推荐 招聘/兼职 框架/库 模块/管理 移动端UI框架 Web-UI框架 Js插件 Jquery插件 CSS相关 IDE环境 在线工具 图形动效 游戏框架 node相关 调试/测试 在线学习 社区/论坛 博客/团队 前端素材 图标/图库 建站资源 设计/灵感 IT资讯
提交资源 / 链接反馈

Slang

分享
复制链接
新浪微博
QQ 好友

扫一扫分享

网站地址:http://slang.kylestetz.com
GitHub:https://github.com/kylestetz/slang
网站描述:一种用JS构建的音频编程语言
访问官网 GitHub


Slang是由js实现一种简单的音频编程语言,解析由Ohm.js使用自定义语法处理,编辑器使用 CodeMirror 并采用简单的语法定义,运行时本身则使用 Web Audio api 以 JS 编写。


Slang 语言编写指南

Slang 语言包含声音行和播放行。声音行用于构建一个合成器(或鼓机),然后播放行则指示这些合成器或鼓机播放什么内容。

示例:

@synth (adsr (osc tri) 64n 8n 0.5 8n)

play @synth
	(rhythm [8n])
	(notes [c3 d3 e3 f3 g3 a3 b3 c4])

事实证明,解释自己创建的编程语言异常困难,因此建议您先跳过文档直接阅读下方的示例部分,尝试运行后再来阅读完整文档。


声音行

声音行用于定义一个变量(总是以 @ 开头),该变量包含一个声音处理链。声音链总是以 (osc) 或 (drums) 开始,并可以使用 + 运算符将滤波器、声像和增益等工具连接起来。

以下是一个正弦波振荡器,其信号先后通过低通滤波器和增益处理:

@synth (osc sine)
	+ (filter lp 100)
	+ (gain 0.5)

您可以为同一个变量添加多个声音行;当一个音符被播放时,所有对应的声音链都会触发。

这里是一个包含两个振荡器的声音,第二个振荡器音高提高了一个八度。当声音播放时,每个音符都会触发两个振荡器。

@synth (osc sine)
@synth (osc sine 12)

play @synth (notes [e3])

提示: 尝试为您的合成器创建多个声音链,并通过左右声像调整来创造立体声合成器效果。


播放行

播放行以关键字 play 开头,后跟要播放的变量,然后声明要使用的节奏和音符。您可以有多个播放行引用同一个合成器,它们会独立播放(例如,用于播放复音旋律)。

rhythm 接受一个节奏值列表或一个返回节奏值的函数;而 notes 接受一个音符列表或一个返回音符的函数。我们先看一个简单例子,然后再了解如何利用更高级的函数。

一个简单的合成器:

@synth (adsr (osc sine) 64n 8n 0 8n)
play @synth (rhythm [8n]) (notes [e3 e4 e5])

现在,我们使用 (chord) 函数创建一个播放音阶的合成器。Chord 函数的第二个参数是和弦类型(如:major, chromatic, phrygian 等),第三个参数是根音。

@synth (adsr (osc tri) 64n 8n 0 8n)
play @synth (rhythm [8n]) (notes (chord lydian e3))

更进一步,我们将 chord 函数调用放在 random 函数内部,这样每次调用时都会从和弦中随机选取一个音符。

@synth (adsr (osc tri) 64n 8n 0 8n)
play @synth
	(rhythm [8n])
	(notes (random (chord lydian e3)))

flatten 和 repeat 函数在 notes 内部使用时,是创建重复乐句的强大工具。由于 notes 只接受一个列表,我们使用 flatten 函数将多个不同的调用结果合并成一个平铺的列表。repeat 函数会将我们给它的列表重复若干次,省去了复制粘贴的麻烦。

@synth (adsr (osc sine) 64n 8n 0 8n)
play @synth
	(rhythm [8n])
	(notes (flatten [
		(repeat 3 (chord lydian e4 4))
		(chord lydian d4 4)
	]))

提示: 尝试为同一个声音创建多个播放行,以制作复音旋律和鼓点节奏。

仅供个人学习参考/导航指引使用,具体请以第三方网站说明为准,本站不提供任何专业建议。如果地址失效或描述有误,请联系站长反馈~感谢您的理解与支持!

链接: https://fly63.com/nav/1047

more>>
相关栏目
layer
layer是一款口碑极佳的web弹层组件
点击进入 GitHub
iScroll.js
IScroll是移动页面上被使用的一款仿系统滚动插件。
官网 GitHub
wangEditor
基于javascript和css开发的 Web富文本编辑器
官网 GitHub
ueditor
由百度web前端研发部开发所见即所得富文本web编辑器
官网 GitHub
highlight
Highlight.js 是一个用 JavaScript 写的代码高亮插件,在客户端和服务端都能工作。
官网 GitHub
UglifyJS
一个js 解释器、最小化器、压缩器、美化器工具集
官网 GitHub
lozad.js
高性能,轻量级,可配置的懒加载图片工具
官网 GitHub
Sortable.js
简单灵活的 JavaScript 拖放排序插件
官网 GitHub
validate.js
表单提供了强大的验证功能,让客户端表单验证变得更简单
官网 GitHub
Draggin.js
一款兼容移动手机的js拖拽插件
官网 GitHub
lazysizes.js
响应式图像延迟加载JS插件【懒加载】
官网 GitHub
cropper.js
通过canvas实现图片裁剪
官网 GitHub
clipboard.js
浏览器中复制文本到剪贴板的插件,不需要Flash,仅仅2kb
官网 GitHub
siema
轻量级简单的纯 Js轮播插件
官网 GitHub
Mermrender
用于生成序列和UML图的RESTful渲染管道
官网 GitHub
Editor.js
JSON格式输出数据的富文本和媒体编辑器
官网 GitHub

手机预览

首页 技术导航 在线工具 技术文章 教程资源 AI工具集 前端库/框架 实用工具箱

Copyright © 2018 Web前端开发网提供免费在线工具、编程学习资源(教程/框架/库),内容以学习参考为主,助您解决各类实际问题,快速提升专业能力。