tom-s / clap-detector Goto Github PK
View Code? Open in Web Editor NEWClap detection module for node js
Clap detection module for node js
Attempting to install the newest version and run the example given in the readme leads to this error:
internal/modules/cjs/loader.js:583
throw err;
^
Error: Cannot find module 'lodash/uniqueid'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15)
at Function.Module._load (internal/modules/cjs/loader.js:507:25)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:22:18)
at Object.<anonymous> (/home/[redacted]/node_modules/clap-detector/lib/index.js:26:40)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
The reason for the error is that on line 36 of index.js the module is imported from 'lodash/uniqueid'
instead of 'lodash/uniqueId'
(note the capitalization).
import ClapDetector from 'clap-detector'
const clap = new ClapDetector()
It keeps giving that error & i have also installed the module correctly
Clap-detector does detect multiple claps accurately, but it fails to process them properly.
I've set it to turn the screen off on 2 claps and turn it back on on 3 claps.
It doesn't work. The claps overlap, and it only does turn the screen off.
The script calls the shell script as soon as there've been two claps, not waiting for more. That means, if one sets up 2, 3, 4, and 5 clap handlers and claps 5 times, all of them will be triggered.
What's more, if I clap 3 times, it's detected as 1 sequence of three claps and 2 sequences of 2 claps.
detected sound
Clap detected: [ { id: 1, time: 1546043724202 } ]
detected sound
Clap detected: [ { id: 1, time: 1546043724202 },
{ id: 2, time: 1546043724763 } ]
2 claps detected. Screen off
detected sound
Clap detected: [ { id: 1, time: 1546043724202 },
{ id: 2, time: 1546043724763 },
{ id: 3, time: 1546043725286 } ]
3 claps detected. Screen on
2 claps detected. Screen off
If I remove the 3 claps handler, the 2 claps handler is still triggered twice on three claps:
Clap detected: [ { id: 1, time: 1546043865102 } ]
detected sound
Clap detected: [ { id: 1, time: 1546043865102 },
{ id: 2, time: 1546043865662 } ]
2 claps detected. Screen off
detected sound
Clap detected: [ { id: 1, time: 1546043865102 },
{ id: 2, time: 1546043865662 },
{ id: 3, time: 1546043866276 } ]
2 claps detected. Screen off
I was looking the module, very nice, I was wondering if you know which could be the input device config for the built-in mic.
greetings
Clap-detector depends on a vulnerable version of lodash (4.17.11.) It should be updated to at least to 4.17.12.
Hi,
I try to use jour Libary, but I'm realy new to node js.
So maybe this is a normal beginner question, but I don't found anything on "google" that matches my problem.
I use a Raspberry Pi 4 with a USB-Micro. I use the normal Raspberry Pi console os.
I have then update the OS and have done the folling steps:
sudo apt-get update ; sudo apt-get update -y ; sudo apt-get install sox;
sudo apt-get install nodejs npm
curl https://www.npmjs.com/install.sh | sudo sh
mkdir new_clap_npm; cd new_clap_npm;
npm install --save clap-detector
touch clap.js
This creates the folling in new_clap_npm:
drwxr-xr-x 3 pi pi 4096 Jul 21 12:46 . drwxr-xr-x 11 pi pi 4096 Jul 21 12:43 .. -rw-r--r-- 1 pi pi 1067 Jul 21 12:47 clap.js drwxr-xr-x 5 pi pi 4096 Jul 21 12:45 node_modules -rw-r--r-- 1 pi pi 58 Jul 21 12:45 package.json -rw-r--r-- 1 pi pi 1888 Jul 21 12:45 package-lock.json
I have then copy this into clap.js:
`import ClapDetector from 'clap-detector'
const clap = new ClapDetector()
const disposableOneClapListener = clap.addClapsListener(claps => {
console.log("heard 1 clap (force)", claps)
}, { number: 1, delay: 0, force: true })
const disposableOneClapForceListener = clap.addClapsListener(claps => {
console.log("heard 1 clap", claps)
}, { number: 1, delay: 1000 })
const disposableTwoClapsListener = clap.addClapsListener(claps => {
console.log("heard 2 claps", claps)
}, { number: 2, delay: 1000 })
const disposableThreeClapsListener = clap.addClapsListener(claps => {
console.log("heard 3 claps", claps)
}, { number: 3, delay: 1000 })
// Cancel some clap listeners
// Cancel alls claps listener but 2 claps after 10 seconds
setTimeout(() => {
console.log("only listen to 2 claps now")
disposableOneClapListener()
disposableOneClapForceListener()
disposableThreeClapsListener()
}, 10000)
// Dispose (stop sox process and listeners) after 30s
setTimeout(() => {
console.log("dispose all listeners and free ressources")
clap.dispose()
}, 30000)
`
If I try now to start with: I get
`/home/pi/new_clap_npm/clap.js:1
import ClapDetector from 'clap-detector'
^^^^^^^^^^^^
SyntaxError: Unexpected identifier
at Module._compile (internal/modules/cjs/loader.js:723:23)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)`
Viso shows me this error on line 1:
Could not find a declaration file for module 'clap-detector'. '/home/pi/new_clap_npm/node_modules/clap-detector/lib/index.js' implicitly has an 'any' type. Try
npm i --save-dev @types/clap-detectorif it exists or add a new declaration (.d.ts) file containing
declare module 'clap-detector';ts(7016) module "/home/pi/new_clap_npm/node_modules/clap-detector/lib/index"
If I try to do the Viso fix I get:
`pi@raspberrypi:~/new_clap_npm $ npm i --save-dev @types/clap-detector
npm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmjs.org/@types%2fclap-detector - Not found
npm ERR! 404
npm ERR! 404 '@types/clap-detector@*' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/pi/.npm/_logs/2021-07-21T11_06_57_973Z-debug.log`
Please help me to import your libary.
Best regards
Hi.
I've met this error on using your module.
{ RangeError [ERR_CHILD_PROCESS_STDIO_MAXBUFFER]: stderr maxBuffer length exceeded
at Socket.onChildStderr (child_process.js:374:14)
at Socket.emit (events.js:187:15)
at addChunk (_stream_readable.js:279:12)
at readableAddChunk (_stream_readable.js:260:13)
at Socket.Readable.push (_stream_readable.js:219:10)
at Pipe.onread (net.js:636:20)
cmd:
'sox -t coreaudio default /SOME_PATH/input.wav silence 1 0.0001 5% 1 0.1 5% −−no−show−progress stat' }
Used codes are like this;
this.detector = new ClapDetector(config)
this.detector.addClapsListener((claps) => {
console.log(claps)
}, {number:1, delay:0, force:true})
I executed the code and did nothing. Just waiting. After several minutes, that error occurs.
Dear tom-s,
I tried copying you "full example" into a .js file i called test-clap.js and tried running it but get the following error message. I also changed the first line from "import ClapDetector from 'clap-detector'" to "const ClapDetector = require('clap-detector')". I am new to node and hope this is a beginner mistake.
~/watson/test-clap $ sudo node test-clap.js
/home/watson/watson/test-clap/test-clap.js:4
const clap = new ClapDetector()
^
TypeError: ClapDetector is not a constructor
at Object. (/home/watson/watson/test-clap/test-clap.js:4:14)
at Module._compile (internal/modules/cjs/loader.js:654:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:665:10)
at Module.load (internal/modules/cjs/loader.js:566:32)
at tryModuleLoad (internal/modules/cjs/loader.js:506:12)
at Function.Module._load (internal/modules/cjs/loader.js:498:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:695:10)
at startup (internal/bootstrap/node.js:201:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:516:3)
the node_modules folder is in the same directory as ~/watson
I am running node version v9.11.2
strangely, it works when running your demo program as follows:
sudo node node_modules/clap-detector/lib/demo.js
it seems to be more precise if i add Maximum delta > 0.5 to the isClap method (i had it trigger more or less randomly while listening to music)
I don't understand how i can specify a mp3 or wav file as input. Could you clarify?
I've logged the cmd that is executed using sox and entered into the command line:
user@server:~/scripts $ sox -t hw:0,0 /home/user/input.wav silence 1 0.0001 10% 1 0.1 10% −−no−show−progress stat
sox: SoX v14.4.2
sox FAIL sox: Not enough input filenames specified
Usage summary: [gopts] [[fopts] infile]... [fopts] outfile [effect [effopt]]...
...
Maybe sox has been changed in the mean time?
Unfortunately this command isn't working. The output of arecord is:
user@server:~/scripts $ arecord --list-devices
**** List of CAPTURE Hardware Devices ****
card 0: U0x41e0x30d3 [USB Device 0x41e:0x30d3], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
Hello!
This project seems interesting.
Can I use it in my Raspberry Pi 3? Do you recommend me any USB microphone? (I don't want to use my GPIO ports, already used).
Thanks a lot.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.