feat: Add Be and tbd skill, also added Roadmap file

This commit is contained in:
2026-05-10 16:32:12 -04:00
parent 3500ade13f
commit 0bb8885802
29587 changed files with 10611695 additions and 0 deletions

27
Skills/@be/be/node_modules/wav-file-info/.npmignore generated vendored Normal file
View File

@@ -0,0 +1,27 @@
# Logs
logs
*.log
*.wav
# Runtime data
pids
*.pid
*.seed
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# node-waf configuration
.lock-wscript
# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release
# Dependency directory
# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
node_modules

22
Skills/@be/be/node_modules/wav-file-info/LICENSE generated vendored Normal file
View File

@@ -0,0 +1,22 @@
The MIT License (MIT)
Copyright (c) 2015 RackFX
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

90
Skills/@be/be/node_modules/wav-file-info/README.md generated vendored Normal file
View File

@@ -0,0 +1,90 @@
# WAV File Info for Node.JS
#### A lightweight module that parses WAV information data from a wav file into a Javascript Object. Basically retrieves file and header meta data information from a WAV file.
### Used for:
- Determining the validity of a .wav file
- Detecting the bit depth / bit rate / bits per sample of a .wav file
- Detecting the Sample Rate of a .wav file
- Detecting the number of channels in a .wav file
- Retrieving the file information, including file size, created date etc
### Usage
```
npm install wav-file-info --save
```
```javascript
var wavFileInfo = require('wav-file-info');
wavFileInfo.infoByFilename('./test.wav', function(err, info){
if (err) throw err;
console.log(info);
});
```
#### if `err` is not null, the WAV file is valid.
From the command line you can run:
```
node wfi.js <filename>
```
### Result
```
{ header:
{ riff_head: 'RIFF',
chunk_size: 1697504,
wave_identifier: 'WAVE',
fmt_identifier: 'fmt ',
subchunk_size: 16,
audio_format: 1,
num_channels: 2,
sample_rate: 44100,
byte_rate: 45328,
block_align: 4,
bits_per_sample: 16,
data_identifier: 'PAD ' },
stats:
{ dev: 16777220,
mode: 33184,
nlink: 1,
uid: 501,
gid: 20,
rdev: 0,
blksize: 4096,
ino: 71128242,
size: 1697512,
blocks: 3320,
atime: Sun Nov 29 2015 10:13:15 GMT-0700 (MST),
mtime: Sat May 23 2015 12:45:00 GMT-0600 (MDT),
ctime: Thu Nov 12 2015 14:31:37 GMT-0700 (MST),
birthtime: Sat May 23 2015 12:44:55 GMT-0600 (MDT)
},
duration: 9.623038548752834
}
```
### Example errors
```
{ error: true,
invalid_reasons:
[ 'Expected "RIFF" string at 0',
'Expected "WAVE" string at 4',
'Expected "fmt " string at 8',
'Unknwon format: 25711',
'chunk_size does not match file size' ] }
```
Duration is in seconds. Stats come from Node raw fs.statSync() result.
References:
http://soundfile.sapp.org/doc/WaveFormat/
TODO: Deep scan [avg amplitude, max amplitude], fork for AIFF

BIN
Skills/@be/be/node_modules/wav-file-info/funk.pkf generated vendored Normal file

Binary file not shown.

30
Skills/@be/be/node_modules/wav-file-info/package.json generated vendored Normal file
View File

@@ -0,0 +1,30 @@
{
"name": "wav-file-info",
"version": "0.0.8",
"description": "Lightweight Node.js WAV file info helper",
"main": "wav-file-info.js",
"scripts": {
"test": "mocha test"
},
"repository": {
"type": "git",
"url": "https://github.com/rackfx/Node-WAV-File-Info.git"
},
"keywords": [
"WAV",
"file",
"WAV",
"audio",
"RIFF",
"Microsoft",
"Node",
"meta",
"wav meta"
],
"author": "David Jones <null@rackfx.com> (rackfx.com)",
"license": "ISC",
"bugs": {
"url": "https://github.com/rackfx/Node-WAV-File-Info/issues"
},
"homepage": "https://github.com/rackfx/Node-WAV-File-Info"
}

7
Skills/@be/be/node_modules/wav-file-info/test.js generated vendored Normal file
View File

@@ -0,0 +1,7 @@
var wavFileInfo= require('./wav-file-info.js');
wavFileInfo.infoByFilename('./test.wav', function(err, info){
console.log(err, info);
if (err) throw err ;
})

View File

@@ -0,0 +1,99 @@
// Hi Welcome to WFI by David Jones / RackFX, LLC
var fs = require('fs');
var wfi = {}
wfi.infoByFilename = function(filename, cb){
var stats = fs.statSync(filename)
var buffer = new Buffer(40); // first 40 bytes are RIFF header
fs.open(filename, 'r', function(err, fd) {
if(err) return cb(err); // error probably TODO:check this!
// ex error -
// { [Error: ENOENT: no such file or directory, open './test.wav'] errno: -2, code: 'ENOENT', syscall: 'open', path: './test.wav' }
var read_result = {}
// this a list of sequenced bytes in the 40 byte header. This builds the read_result object.
// Property name / Data type / Length
var reads = [
['riff_head', 'string', 4],
['chunk_size','uinteger', 4],
['wave_identifier', 'string', 4],
['fmt_identifier', 'string', 4],
['subchunk_size','integer',4],
['audio_format','integer',2],
['num_channels','integer',2],
['sample_rate','uinteger',4],
['byte_rate','integer',4],
['block_align','integer',2],
['bits_per_sample','integer',2],
//['uhm','integer',2],
['data_identifier','string', 4],
//['sub_chunk2_size', 'integer', 4],
]
fs.read(fd, buffer, 0, 40, 0, function(err, num) {
var i=0;
var pointer = 0;
function read_wav(){
var read = reads[i];
i++;
if(read[1]=='string'){
read_result[read[0]] = buffer.toString('ascii', pointer , pointer + read[2]);
pointer = pointer + read[2]; // pointer = pointer plus # bytes
}
else if(read[1]=='integer'){
read_result[read[0]] = buffer.readUInt16LE(pointer, read[2])
pointer = pointer + read[2];
}
else if(read[1]=='uinteger'){
read_result[read[0]] = buffer.readInt32LE(pointer, read[2])
pointer = pointer + read[2];
}
if(i < reads.length) { return read_wav()}
else { return post_process(); }
}
//console.log(i)
read_wav();
}); // end fs.read
function post_process(){
var error = false;
var invalid_reasons = []
if (read_result.riff_head != "RIFF") invalid_reasons.push("Expected \"RIFF\" string at 0" )
if (read_result.wave_identifier != "WAVE") invalid_reasons.push("Expected \"WAVE\" string at 4")
if (read_result.fmt_identifier != "fmt ") invalid_reasons.push("Expected \"fmt \" string at 8")
if (
(read_result.audio_format != 1) && // Wav
(read_result.audio_format != 65534) && // Extensible PCM
(read_result.audio_format != 2) && // Wav
(read_result.audio_format != 22127) && // Vorbis ?? (issue #11)
(read_result.audio_format != 3)) // Wav
invalid_reasons.push("Unknown format: "+read_result.audio_format)
if ((read_result.chunk_size + 8) !== stats.size) invalid_reasons.push("chunk_size does not match file size")
//if ((read_result.data_identifier) != "data") invalid_reasons.push("Expected data identifier at the end of the header")
if (invalid_reasons.length > 0) error = true;
if (error) return cb({
error : true,
invalid_reasons: invalid_reasons,
header: read_result,
stats: stats
});
cb(null, {
header: read_result,
stats: stats,
duration: ((read_result.chunk_size) / (read_result.sample_rate * read_result.num_channels * (read_result.bits_per_sample / 8)))
});
}
});
}
module.exports = wfi;

10
Skills/@be/be/node_modules/wav-file-info/wfi.js generated vendored Normal file
View File

@@ -0,0 +1,10 @@
var wavFileInfo= require('./wav-file-info.js');
var filename = process.argv[2];
wavFileInfo.infoByFilename(filename, function(err, info){
if(err) console.log(err, info);
else console.log(info);
})