8Bit.js

使用 8 位振荡声音写音乐
授权协议 MIT
开发语言 JavaScript
所属分类 Web应用开发、 常用JavaScript包
软件类型 开源软件
地区 不详
投 递 者 方琦
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

8Bit.js 可以使用8位振荡的声音来写音乐。支持节奏,多个仪器,重复部分,和复杂的时间签名。

  • 【8bit】活结Psychosocial 【8 Bit Universe】众多欧美热歌被8Bit化!你还听得出来吗!!超级好听! 为什么写这篇文章 忙碌了一整年,大家都在补充各种工作上需要用到的知识,却有些忽略了技术的娱乐性。 最近在听机核网的一期电台:我们用8bit音乐原理告诉你,FC的游戏音乐是如何制作的,原理的部分感觉和web audio有很多相似之处,遂撰写这篇文章,希望让没有任何音乐基础

  •     注:以下信息摘自各个网页和论坛。只是做一个综合。谢谢前辈们的分享。 一、     若R、G、B每种颜色使用一个字节(8bit)表示,每幅图像可以有1670万种颜色;若R、G、B每种颜色使用两个字节(16bit)表示,每幅图像可以有10的12次方种颜色;如果是灰度图像,每个象素用一个字节(8bit)表示,一幅图像可以有256级灰度;若每个象素用两个字节(16bit)表示,一幅图像可以有655

  • GB、MB、KB分别是: GB:吉字节(GB、Gigabyte,在中国又被称为吉咖字节或京字节或十亿字节或戟),常简写为G,是一种十进制的信息计量单位。 MB:兆字节(Megabytes)是计算机存储容量单位。 KB:千字节(Kbytes)是计算机存储容量单位。 大小对比:从大到小顺序为T、GB、MB(兆Zhao)、KB、B。 换算关系:1 GB = 1,024 MB = 1,048,576 KB

  • 下面内容多来自维基百科,少部分来自其他页面,汇总如下: 1.其实编码这个问题最早可以追溯到Baudotcode甚至Bacon’scipher,因为语言、文字、图腾这些其实都是一种编码方式,编码其实就是制定一套表达规范。 2.早期计算机使用4位二进制编码(BCD)或6位二进制编码(BCDIC),主要用于美国陆军、海军打印图形。 BCD只有4位,表示数字就从0000到1001的最多10个块,因此非数字

  •   JavaScript中所有的数字都按照IEEE-754标准储存为64位。但是位操作符却是转换为32位数字进行操作的。关于这一点的可用性进行了一些思考。 32带符号整数   先来复习一下32带符号整数的数据表示方式。在计算机中,所有的数据都是被储存为0和1的序列,数字也不例外。比如数字4,通过二进制转换,储存为100。但是整数在实际业务场景中是存在正负的,如何用01序列来表示一个负数呢。我们可以

  • ArrayBuffer是JavaScript用来处理二进制的,ArrayBuffer对象保存着原始二进制数据,它不能对数据进行操作, 只能通过视图类(TypeArray或DataView)才能对数据进行读写。   ArrayBuffer特点: 1.数组里面存放的是二进制原始数据01,以字节为单位,一个字节8位 2.初始化后固定大小 构造函数: //创建了2个字节的ArrayBuffer 数据默认:

  • 在嵌入式开发中,最容易接收到uint8_t 的字节,而需要转换为其他类型的,例如uint16_t,int6_t等,此时最好使用共同体,但是使用共同体时,一定要注意大小端的问题;以下是具体代码: typedef union _BitTransform{ double d64; float f32; int16_t i16; uint8_t u8[8]; // a[0] = low;

  • 复习 根据位置返回字符 asdfg.charAt(3)—f 根据字符返回位置 asdfgg.indexOf(“f”) 3 从前面索引 lastIndexOf(“g”) 5 从后面索引 slice(起始位置,[ 结束位置 ]) slice(3) 从第3个开始选 slice(3,6) 从索引号3开始取,数6个 但是从索引号0 开始数 var arr = [1,3,5,7]; asdfghidk fgh

  • 我们知道为了获得更好的动态范围,除了常见的8bit yuv外,还有10bit,16bit这样的yuv数据。8bit的yuv数据还好理解,每一个像素8bit,在内存中自然也就是一个字节一个字节的存储咯,16bit的也类似,每一个像素对应两个字节,在内存中存起来也非常方便,那么10bit呢? 在不做任何调查的情况下,我们可以凭直觉猜想有两种存储方式: 1.每个像素依然占用16bit两个字节,但是其中6

  • 计算公式:引用:如何计算音频dB级别? 上代码 此处我以录音三秒为例,检测分贝 js 公式: avgEnergy : 波形峰值 16位比特率:振幅可以高达32767 const db = 20 * Math.log10(avgEnergy / 32767); 基于npm 【recorder-core】录音框架为例 //必须引入的核心,换成require也是一样的。注意:recorder-c

  • 背景 项目中经常会用到页面显示图片的功能,比如前端接收后台传输的数据是 byte[] 类型的数据,这时我们可以转成 Base64编码的图片再进行显示。 byte[] 转 Base64 编码 private arrayBufferToBase64(buffer) { let binary = ""; const bytes = new Uint8Array(buffer); const

  • 用javascript实现:对一个字节(8Bit)的无符号整形的变量,求其二进制中表示‘1’的个数 //题目来源:《编程之美-微软技术面试心得》 //对一个字节(8Bit)的无符号整形的变量,求其二进制中表示‘1’的个数 let i=255;//要测试的数字 let count=0;//统计表示‘1’的数字 //核心部分:数值循环,它的最低位与1比较判断是否为‘1’,每次循环右移一位 for(;i

  • 8位二进制数,有符号最大的表示范围为-127到+128 无符号最大表示范围为0到256,说明该图像最多有256各层次的灰度值。 举一个简单的例子,如果是2位灰度图则最多只有0,1,2,3四种层次的灰度,如果是1位灰度图,则只有0和1两种,即一幅图像非黑即白。

  • def convert8bit_(x): return 0 if x <= 0 else (255 if x >= 1 else uint8(x * 255 + 0.5)) def convert16bit_(x): return 0 if x <= 0 else ((2**16 - 1) if x >= 1 else uint16(x * (2**16 - 1) + 0.5))

 相关资料
  • 当使用web audio API制作振荡器时,我总是听到当停止它时的咔嗒声。我四处寻找,但没有一个解决办法对我有效。我尝试了所有的实现从我如何避免这种‘咔哒’声音时,我停止播放一个声音?和更多 我读到一个解决方案是等待下一个零振幅值,然后立即停止播放。有没有一种方法可以使用web audio API做到这一点? 我正在考虑为我的项目切换到Tone.js,因为声音不需要点击就可以播放。他们是如何解决

  • 在使用Opera44.0时,我正在摆弄音频API,并尝试了一个简单的示例: 它按预期工作,声音播放2秒,然后停止。 然后我试着往上走一点,当一个按钮被点击时播放一个声音: 不管用.单击按钮时调用函数(我在函数中使用进行了检查),但不播放任何声音。我尝试刷新页面,重新启动浏览器..什么都没有。 经过一些研究,我发现当调用时,振荡器会被丢弃,因此每次都必须创建一个新的振荡器。我发现的几乎所有示例都围绕

  • 在下面的代码中,我希望在每次按下按钮元素时创建一个分配给o的新振荡器节点,允许多次按下,从而在440处产生多个1秒音调。然而,我发现这个按钮只能按一次以产生一个音调,之后它就会消失,就好像我没有创建新的振荡器节点一样。我正在学习JavaScript,我怀疑它一定是一些微不足道的东西。有人有主意吗? 编辑: 刚找到这个问题解决了这个问题。解决方案是将audio_context.currentTime

  • 这里有一个超级简单的例子,我正在尝试在Chrome的iphone上运行。其他的web音频API示例,比如这个http://alxgbsn.co.uk/wavepad/work,但不包括我的:( 知道怎么了吗? 编辑 总结一下答案: 启动音频以响应用户交互 检查静音开关是否关闭

  • 我正在尝试用js制作一架简单的钢琴,但我不想使用音频样本,而是想以编程方式生成声音。要播放单个声音,我正在使用此博客中的此代码 https://marcgg.com/blog/2016/11/01/javascript-audio/ 我发现在玩了大约50次之后,这种方法停止工作。运行此代码时不播放声音, 不会更改并保持 0。如何在不停止播放声音的情况下修复它?

  • 仅仅是我,还是振荡器即使在0.5增益下也听起来疯狂的响亮?我不能增加我的电脑的体积超过5%。 现在,当我将增益设置为0.001时,音量似乎“归一化”了,但这不对?我希望能有一些关于控制振荡器音量的见解。

  • 我正在尝试添加AnalyserNode并将输出声音可视化到我制作的web音频示例中,但我不知道如何实现。我想我没有将正确的源传递给分析器(?) 完整代码如下:https://jsfidle.net/kepin95043/1ub0sjo3/ 谁能帮我找出我做错了什么?提前感谢! PS:用火狐打开吧。对我来说在基于Chromium的浏览器上不起作用。 下面是一个工作示例:https://codepen

  • 在执行此代码时,我会得到这样的错误:“Uncattle TypeError:Failed to execute'linear ramptoValueAtTime'on'AudioParam':The provided double value is non-finite”。 &如果替换ac.endTime只是endTime-“endTime未定义”,则发生错误。也许有人能解释为什么会这样?谢谢