{"id":41155394,"url":"https://github.com/2bbb/node-abletonlink","last_synced_at":"2026-01-22T19:12:56.147Z","repository":{"id":46089048,"uuid":"83147334","full_name":"2bbb/node-abletonlink","owner":"2bbb","description":"node.js porting of ableton Link","archived":false,"fork":false,"pushed_at":"2023-06-15T22:13:48.000Z","size":115,"stargazers_count":154,"open_issues_count":1,"forks_count":16,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-10-26T09:58:27.352Z","etag":null,"topics":["ableton-link","nodejs"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/2bbb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null},"funding":{"github":["2bbb"]}},"created_at":"2017-02-25T17:01:14.000Z","updated_at":"2025-09-14T22:33:43.000Z","dependencies_parsed_at":"2022-09-15T16:41:10.177Z","dependency_job_id":"0892fadf-aeb1-4ab2-9720-dc98e0ece56b","html_url":"https://github.com/2bbb/node-abletonlink","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/2bbb/node-abletonlink","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2bbb%2Fnode-abletonlink","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2bbb%2Fnode-abletonlink/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2bbb%2Fnode-abletonlink/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2bbb%2Fnode-abletonlink/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/2bbb","download_url":"https://codeload.github.com/2bbb/node-abletonlink/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2bbb%2Fnode-abletonlink/sbom","scorecard":{"id":2872,"data":{"date":"2025-08-11","repo":{"name":"github.com/2bbb/node-abletonlink","commit":"70b9e0e92b838808c957aa683594591c56467618"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.2,"checks":[{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":1,"reason":"Found 3/27 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 6 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-14T12:56:35.535Z","repository_id":46089048,"created_at":"2025-08-14T12:56:35.535Z","updated_at":"2025-08-14T12:56:35.535Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28669088,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T17:07:18.858Z","status":"ssl_error","status_checked_at":"2026-01-22T17:05:02.040Z","response_time":144,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ableton-link","nodejs"],"created_at":"2026-01-22T19:11:59.331Z","updated_at":"2026-01-22T19:12:56.130Z","avatar_url":"https://github.com/2bbb.png","language":"C++","funding_links":["https://github.com/sponsors/2bbb"],"categories":[],"sub_categories":[],"readme":"# node-abletonlink\n\nnode.js port of [ableton Link](https://github.com/ableton/link) with node-addon-api\n\n## Dependencies\n\n* [ableton/link](https://github.com/ableton/link)\n    * [chriskohlhoff/asio](https://github.com/chriskohlhoff/asio)\n    * [philsquared/Catch](https://github.com/philsquared/Catch)\n\n## Required\n\nsee detail on [node-gyp](https://github.com/nodejs/node-gyp)\n\n### Common\n\n* python v2.7\n\n### Mac\n\n* Xcode\n\n### UNIX\n\n* make\n\n### Windows\n\n* Microsoft windows-build-tools (`npm install --global --production windows-build-tools`)\n\n## Tested env\n\n* OSX 10.14.6 with Xcode / node.js 10.16.0\n* Windows 10 with windows-build-tools / node.js 10.16.0\n\n## Install\n\n```\nnpm install abletonlink\n```\n\nor\n\n```\nnpm install 2bbb/node-abletonlink\n```\n\n## How to use\n\n```js\nconst abletonlink = require('abletonlink');\nconst link = new abletonlink();\n\nlink.startUpdate(60, (beat, phase, bpm) =\u003e {\n    console.log(\"updated: \", beat, phase, bpm);\n});\n\n// callback is option.\n// link.startUpdate(60); // correct!\n\nfunction do_something() {\n    const beat = link.beat;\n    const phase = link.phase;\n    const bpm = link.bpm;\n    ...\n}\n```\n\n## Example\n\n* [node-abletonlink-example](https://github.com/2bbb/node-abletonlink-example)\n\n## API\n\n`const abletonlink = require('abletonlink')`: Thread Safe\n`abletonlink.Audio`: Not Thread Safe (but on node.js/V8...??)\n\n## property\n\n* `isLinkEnable`: `bool` [get/set]\n* `isPlayStateSync`: `bool` [get/set]\n* `numPeers`: `number` [get]\n\n* `beat`: `number` [get/set]\n* `bpm`: `number` [get/set]\n* `phase`: `number` [get]\n* `quantum`: `number` [get/set]\n\n## method\n\n* `getNumPeers`: `(void) -\u003e number`\n[deprecated from v0.0.8. use `numPeers` property]\n\nget num peers.\n\n* `setBeatForce`: `(beat: number) -\u003e void`\n\nset beat force.\n\n* `on`: `(key: string, callback: (number) -\u003e void) -\u003e void`\n\nset callback will call change event.\n\n`key` is `'tempo'` then argument of callback is new `tempo` property.\n\n`key` is `'numPeers'` then argument of callback is new `numPeers` property.\n\n`key` is `'playState'` then argument of callback is new `isPlaying` property.\n\n* `off` : `(key: string) -\u003e void`\n\nremove callback.\n\n* `enable`: `(void) -\u003e void`\n* `disable`: `(void) -\u003e void`\n\n* `enablePlayStateSync`: `(void) -\u003e void`\n* `disablePlayStateSync`: `(void) -\u003e void`\n\n* `update`: `(void) -\u003e void`\n\ncall update manually.\n\n* `startUpdate`: `(interval: number [, callback: (beat:number, phase:number, bpm:number, playState: bool) -\u003e void]) -\u003e void`\n\nstart update timer with interval.\n\nif given callback, it will call every interval with arguments `beat`, `phase`, `bpm`, `playState`.\n\n* `stopUpdate`: `(void) -\u003e void`\n\nstop update timer.\n\n## License\n\nMIT\n\n## Author\n\n* ISHII 2bit [bufferRenaiss co., ltd.]\n* ishii[at]buffer-renaiss.com\n\n## Special Thanks\n\n* [Hlöðver Sigurðsson (hlolli)](https://github.com/hlolli) [#3](https://github.com/2bbb/node-abletonlink/pull/3)\n* [Yuichi Yogo (yuichkun)](https://github.com/yuichkun) [#10](https://github.com/2bbb/node-abletonlink/pull/10)\n* [Jakob Miland](https://github.com/saebekassebil) [#11](https://github.com/2bbb/node-abletonlink/issues/11)\n* [Alessandro Oniarti](https://github.com/Onni97) [#11](https://github.com/2bbb/node-abletonlink/issues/11)\n* [Théis Bazin](https://github.com/tbazin) [#12](https://github.com/2bbb/node-abletonlink/pull/12), [#15](https://github.com/2bbb/node-abletonlink/pull/15)\n* [Jeffrey Kog](https://github.com/jeffreykog) [#16](https://github.com/2bbb/node-abletonlink/issues/16)\n\n## At last\n\nIf you get happy with using this addon, and you're rich, please donation for support continuous development.\n\nBitcoin: `17AbtW73aydfYH3epP8T3UDmmDCcXSGcaf`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2bbb%2Fnode-abletonlink","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F2bbb%2Fnode-abletonlink","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2bbb%2Fnode-abletonlink/lists"}