#Tone JS 节拍器 这是一个关于如何使用 Tone JS 和 vanilla JavaScript 设置节拍器的超级基本示例。 ##获取节拍器的声音您需要创建一个名为sounds的目录并向其中添加一个文件以收听任何声音。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 这一行显示了脚本在何处寻找声音: var player = new Tone.Pla
2022-04-04 22:47:09 2KB HTML
1
纯JavaScript实现的简单Todo MVC示例应用
2022-03-28 23:04:21 6KB JavaScript开发-其它杂项
1
Goertzel.js Goertzel算法的纯JavaScript实现。 该算法用于检测音频是否存在特定频率。 它最常用于检测电话中的DTMF(又名“按键音”),但也可以用于其他各种项目(仪器调音,解码FSK,创建频谱图等)。 我最初是为了学习而编写的,但是它的性能非常好,并且在不提供Node.js和浏览器中很有用。 演示 该演示是使用麦克风输入的DTMF检测器。 它非常简单,因此有时会拾取错误的字符。 您将需要使用单独的应用程序(或嘿,实际的电话)来产生DTMF音调。 您可以通过运行npm run demo在本地运行该npm run demo 。 这使用BrowserSync并在新的浏览器选项卡/窗口中生成演示。 因为它会在更改时自动重新加载,所以它也是用于开发的有用工具。 安装 npm install --save goertzeljs 如果要在浏览器中使用Goertzel
2022-03-09 11:35:06 96KB JavaScript
1
使用屏幕尺寸 这有助于您根据屏幕尺寸编写条件代码,或获取屏幕尺寸值 安装 npm install --save use-screen-size yarn add use-screen-size 例子 这是显示屏幕宽度,屏幕高度和当前屏幕模式的快速示例 import React from 'react' import useScreenSize from 'use-screen-size' const App = ( ) => { const size = useScreenSize ( ) return ( < > { size . width } px / { size . height } px < / h1 > { size . screen } < / h1 > < / >
2022-01-19 12:10:43 385KB TypeScript
1
jpeg-js 用于node.js的纯JavaScript JPEG编码器和解码器 注意:这是一个同步(即CPU阻塞)库,它比本机替代库慢得多。 如果您不需要纯JavaScript实现,请考虑在节点中使用节点或浏览器中的等异步替代方法。 安装 该模块通过npm安装: $ npm install jpeg-js 用法示例 解码JPEG 将缓冲区或类型化的数组解码为Buffer ; var jpeg = require ( 'jpeg-js' ) ; var jpegData = fs . readFileSync ( 'grumpycat.jpg' ) ; var rawImageData = jpeg . decode ( jpegData ) ; console . log ( rawImageData ) ; /* { width: 320, height: 180,
2021-12-22 15:57:24 3.51MB JavaScript
1
PKIjs 公钥基础结构(PKI)是当今如何在网络上执行身份和密钥管理的基础。 PKIjs是一个纯JavaScript库,实现了PKI应用程序中使用的格式。 它建立在WebCrypto( )的基础上,并希望能够在不使用插件的情况下构建利用X.509和相关格式的本机Web应用程序。 新版本的PKIjs基于ES6(ES2015),并在设计时考虑了以下目标: 大多数现代语言环境都使用所有ES6功能。 简化在Node.js环境中使用PKIjs的过程; 只能使用用户环境中需要的那部分库代码(最小化使用的代码); 图书馆内部文件数量的增加; 能够将库代码转换为ES5代码; 企业级的代码和
2021-12-22 11:21:37 1.43MB javascript encryption certificate es6
1
JSBlog 是纯javascript编写博客,使用bootstarp、jquery、showdown、backbone等js类库。 本博客是基于小天天博客 并在此基础上修改完善。 本博客特色: 纯js博客 json列表 代码高亮展示,默认使用highlight.js,修改样式直接替换css/default.css样式即可 首页显示最新10篇文章简介 首页增加最新评论 用多说评论 计划改善 优化首页 个人信息展示 优化分类 友情链接 广告位 多样式切换 使用方式 在post文件夹下新建文件,文件名为:日期 标题,文件以.md结尾,例如:2012-12-12-hello-world.md 修改post/index.json文件,其中 site_name为站点名称; copyright 为版权标示; cates为文章分类; articles为文章列表。 例如增加2012-12-12-hello-world.md,articles中增加一条记录 {"title": "Hello World", "file": "2012-12-12-hello-world", "cate":"tech"},   标签:JSBLOG
2021-12-22 10:50:13 739KB 开源项目
1
纯js完成 通过自定义任意位的数字和字母、或者完全随机,生成指定数量的符合北京机动车摇号规则的机动车号码
2021-12-15 23:41:30 119KB javascript js 摇号 选号
1
Html5网页纯JavaScript录制MP3音频 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Html5网页JavaScript录制MP3音频</title> <meta charset="utf-8" /> </head> <body> Html5网页JavaScript录制MP3音频 录制 停止 上传 调试信息: [removed][removed] [removed] var recorder = new MP3Recorder({ debug:true, funOk: function () { btnStart.disabled = false; log('初始化成功'); }, funCancel: function (msg) { log(msg); recorder = null; } }); var mp3Blob; function funStart(button) { btnStart.disabled = true; btnStop.disabled = false; btnUpload.disabled = true; log('录音开始...'); recorder.start(); } function funStop(button) { recorder.stop(); btnStart.disabled = false; btnStop.disabled = true; btnUpload.disabled = false; log('录音结束,MP3导出中...'); recorder.getMp3Blob(function (blob) { log('MP3导出成功'); mp3Blob = blob; var url = URL.createObjectURL(mp3Blob); var div = document.createElement('div'); var au = document.createElement('audio'); var hf = document.createElement('a'); au.controls = true; au.src = url; hf.href = url; hf.download = new Date().toISOString() + '.mp3'; hf[removed] = hf.download; div.appendChild(au); div.appendChild(hf); recordingslist.appendChild(div); }); } function log(str) { recordingslist[removed] += str + ''; } function funUpload() { var fd = new FormData(); var mp3Name = encodeURIComponent('audio_recording_' + new Date().getTime() + '.mp3'); fd.append('mp3Name', mp3Name); fd.append('file', mp3Blob); var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (xhr.readyState == 4 && xhr.status == 200) { recordingslist[removed] += '上传成功:' + mp3Name + ''; } }; xhr.open('POST', 'upload.ashx'); xhr.send(fd); } [removed] </body> </html> [javascript] view plain copy 在CODE上查看代码片派生到我的代码片 (function (exports) { var MP3Recorder = function (config) { var recorder = this; config = config || {}; config.sampleRate = config.sampleRate || 44100; config.bitRate = config.bitRate || 128; navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; if (navigator.getUserMedia) { navigator.getUserMedia({ audio: true }, function (stream) { var context = new AudioContext(), microphone = context.createMediaStreamSource(stream), processor = context.createScriptProcessor(16384, 1, 1),//bufferSize大小,输入channel数,输出channel数 mp3ReceiveSuccess, currentErrorCallback; config.sampleRate = context.sampleRate; processor.onaudioprocess = function (event) { //边录音边转换 var array = event.inputBuffer.getChannelData(0); realTimeWorker.postMessage({ cmd: 'encode', buf: array }); }; var realTimeWorker = new Worker('js/worker-realtime.js'); realTimeWorker.onmessage = function (e) { switch (e.data.cmd) { case 'init': log('初始化成功'); if (config.funOk) { config.funOk(); } break; case 'end': log('MP3大小:', e.data.buf.length); if (mp3ReceiveSuccess) { mp3ReceiveSuccess(new Blob(e.data.buf, { type: 'audio/mp3' })); } break; case 'error': log('错误信息:' + e.data.error); if (currentErrorCallback) { currentErrorCallback(e.data.error); } break; default: log('未知信息:', e.data); } }; recorder.getMp3Blob = function (onSuccess, onError) { currentErrorCallback = onError; mp3ReceiveSuccess = onSuccess; realTimeWorker.postMessage({ cmd: 'finish' }); }; recorder.start = function () { if (processor && microphone) { microphone.connect(processor); processor.connect(context.destination); log('开始录音'); } } recorder.stop = function () { if (processor && microphone) { microphone.disconnect(); processor.disconnect(); log('录音结束'); } } realTimeWorker.postMessage({ cmd: 'init', config: { sampleRate: config.sampleRate, bitRate: config.bitRate } }); }, function (error) { var msg; switch (error.code || error.name) { case 'PERMISSION_DENIED': case 'PermissionDeniedError': msg = '用户拒绝访问麦客风'; break; case 'NOT_SUPPORTED_ERROR': case 'NotSupportedError': msg = '浏览器不支持麦客风'; break; case 'MANDATORY_UNSATISFIED_ERROR': case 'MandatoryUnsatisfiedError': msg = '找不到麦客风设备'; break; default: msg = '无法打开麦克风,异常信息:' + (error.code || error.name); break; } if (config.funCancel) { config.funCancel(msg); } }); } else { if (config.funCancel) { config.funCancel('当前浏览器不支持录音功能'); } } function log(str) { if (config.debug) { console.log(str); } } } exports.MP3Recorder = MP3Recorder; })(window);
2021-12-12 20:45:36 59KB 录制MP3音频
1
Modbus串行 NodeJS的MODBUS-RTU(串行和TCP)的纯JavaScript实现。 Modbus是一种串行通信协议,于1979年首次使用。Modbus简单,可靠,公开发布,免版税,易于部署和维护。 该软件包使Modbus通话变得轻松有趣。 安装 npm install modbus-serial 如果要安装,请在npm install上尝试这些选项以进行构建 --unsafe-perm --build-from-source 我可以用这个模块做什么? 通过该课程,可以轻松有趣地与电子设备(例如灌溉控制器,协议机器人和机器人)进行通信。 它与使用串行线的设备(例如RS485,RS232)进行通讯。 许多工业电子设备都实现了Modbus。 Arduino也可以使用modbus,您可以使用modbus控制您的项目和机器人。 用于Modbus从站的Arduino库: 具有
1