{"id":17279007,"url":"https://github.com/thib3113/vban","last_synced_at":"2025-04-14T08:41:58.484Z","repository":{"id":37010694,"uuid":"440001535","full_name":"thib3113/vban","owner":"thib3113","description":"Implement the VBAN protocol in node.js","archived":false,"fork":false,"pushed_at":"2025-04-10T21:42:53.000Z","size":3849,"stargazers_count":18,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-10T22:31:51.612Z","etag":null,"topics":["midi","mt-128","mt-32","mt-64","vban","voicemeeter"],"latest_commit_sha":null,"homepage":"https://thib3113.github.io/vban/","language":"TypeScript","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/thib3113.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-12-20T00:42:46.000Z","updated_at":"2025-04-07T12:36:36.000Z","dependencies_parsed_at":"2024-02-26T14:26:12.830Z","dependency_job_id":"cc20ea0c-b218-49b5-9342-ad17ab5bbde1","html_url":"https://github.com/thib3113/vban","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thib3113%2Fvban","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thib3113%2Fvban/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thib3113%2Fvban/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thib3113%2Fvban/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thib3113","download_url":"https://codeload.github.com/thib3113/vban/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248849225,"owners_count":21171546,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["midi","mt-128","mt-32","mt-64","vban","voicemeeter"],"created_at":"2024-10-15T09:15:20.381Z","updated_at":"2025-04-14T08:41:58.477Z","avatar_url":"https://github.com/thib3113.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VBAN\n[![NPM version](https://img.shields.io/npm/v/vban.svg)](https://www.npmjs.com/package/vban)\n[![CI](https://github.com/thib3113/vban/actions/workflows/CI.yml/badge.svg)](https://github.com/thib3113/vban/actions/workflows/CI.yml)\n[![codecov](https://codecov.io/gh/thib3113/vban/branch/main/graph/badge.svg?token=MZKEJ9F2WR)](https://codecov.io/gh/thib3113/vban)\n[![Downloads](https://img.shields.io/npm/dm/vban.svg)](https://www.npmjs.com/package/vban)\n[![License](https://img.shields.io/github/license/thib3113/vban.svg)](https://github.com/thib3113/vban/blob/main/LICENSE)\n[![Known Vulnerabilities](https://snyk.io/test/github/thib3113/vban/badge.svg)](https://snyk.io/test/github/thib3113/vban)\n[![vban](https://snyk-widget.herokuapp.com/badge/npm/vban/badge.svg)](https://snyk.io/advisor/npm-package/vban)\n[![GitHub stars](https://img.shields.io/github/stars/thib3113/vban.svg?style=social\u0026label=Star)](https://github.com/thib3113/vban/stargazers/)\n[![Package Quality](https://packagequality.com/shield/vban.svg)](https://packagequality.com/#?package=vban)\n[![Install size](https://flat.badgen.net/bundlephobia/min/vban)](https://bundlephobia.com/package/vban)\n\n[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=thib3113_vban\u0026metric=bugs)](https://sonarcloud.io/dashboard?id=thib3113_vban)\n[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=thib3113_vban\u0026metric=code_smells)](https://sonarcloud.io/dashboard?id=thib3113_vban)\n[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=thib3113_vban\u0026metric=duplicated_lines_density)](https://sonarcloud.io/dashboard?id=thib3113_vban)\n[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=thib3113_vban\u0026metric=ncloc)](https://sonarcloud.io/dashboard?id=thib3113_vban)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=thib3113_vban\u0026metric=sqale_rating)](https://sonarcloud.io/dashboard?id=thib3113_vban)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=thib3113_vban\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=thib3113_vban)\n[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=thib3113_vban\u0026metric=reliability_rating)](https://sonarcloud.io/dashboard?id=thib3113_vban)\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=thib3113_vban\u0026metric=security_rating)](https://sonarcloud.io/dashboard?id=thib3113_vban)\n[![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=thib3113_vban\u0026metric=sqale_index)](https://sonarcloud.io/dashboard?id=thib3113_vban)\n[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=thib3113_vban\u0026metric=vulnerabilities)](https://sonarcloud.io/dashboard?id=thib3113_vban)\n\n![Dependencies update - renovate](https://img.shields.io/badge/renovate-enabled-green?style=for-the-badge\u0026logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjUgNSAzNzAgMzcwIj48Y2lyY2xlIGN4PSIxODkiIGN5PSIxOTAiIHI9IjE4NCIgZmlsbD0iI2ZlMiIvPjxwYXRoIGZpbGw9IiM4YmIiIGQ9Ik0yNTEgMjU2bC0zOC0zOGExNyAxNyAwIDAxMC0yNGw1Ni01NmMyLTIgMi02IDAtN2wtMjAtMjFhNSA1IDAgMDAtNyAwbC0xMyAxMi05LTggMTMtMTNhMTcgMTcgMCAwMTI0IDBsMjEgMjFjNyA3IDcgMTcgMCAyNGwtNTYgNTdhNSA1IDAgMDAwIDdsMzggMzh6Ii8+PHBhdGggZmlsbD0iI2Q1MSIgZD0iTTMwMCAyODhsLTggOGMtNCA0LTExIDQtMTYgMGwtNDYtNDZjLTUtNS01LTEyIDAtMTZsOC04YzQtNCAxMS00IDE1IDBsNDcgNDdjNCA0IDQgMTEgMCAxNXoiLz48cGF0aCBmaWxsPSIjYjMwIiBkPSJNMjg1IDI1OGw3IDdjNCA0IDQgMTEgMCAxNWwtOCA4Yy00IDQtMTEgNC0xNiAwbC02LTdjNCA1IDExIDUgMTUgMGw4LTdjNC01IDQtMTIgMC0xNnoiLz48cGF0aCBmaWxsPSIjYTMwIiBkPSJNMjkxIDI2NGw4IDhjNCA0IDQgMTEgMCAxNmwtOCA3Yy00IDUtMTEgNS0xNSAwbC05LThjNSA1IDEyIDUgMTYgMGw4LThjNC00IDQtMTEgMC0xNXoiLz48cGF0aCBmaWxsPSIjZTYyIiBkPSJNMjYwIDIzM2wtNC00Yy02LTYtMTctNi0yMyAwLTcgNy03IDE3IDAgMjRsNCA0Yy00LTUtNC0xMSAwLTE2bDgtOGM0LTQgMTEtNCAxNSAweiIvPjxwYXRoIGZpbGw9IiNiNDAiIGQ9Ik0yODQgMzA0Yy00IDAtOC0xLTExLTRsLTQ3LTQ3Yy02LTYtNi0xNiAwLTIybDgtOGM2LTYgMTYtNiAyMiAwbDQ3IDQ2YzYgNyA2IDE3IDAgMjNsLTggOGMtMyAzLTcgNC0xMSA0em0tMzktNzZjLTEgMC0zIDAtNCAybC04IDdjLTIgMy0yIDcgMCA5bDQ3IDQ3YTYgNiAwIDAwOSAwbDctOGMzLTIgMy02IDAtOWwtNDYtNDZjLTItMi0zLTItNS0yeiIvPjxwYXRoIGZpbGw9IiMxY2MiIGQ9Ik0xNTIgMTEzbDE4LTE4IDE4IDE4LTE4IDE4em0xLTM1bDE4LTE4IDE4IDE4LTE4IDE4em0tOTAgODlsMTgtMTggMTggMTgtMTggMTh6bTM1LTM2bDE4LTE4IDE4IDE4LTE4IDE4eiIvPjxwYXRoIGZpbGw9IiMxZGQiIGQ9Ik0xMzQgMTMxbDE4LTE4IDE4IDE4LTE4IDE4em0tMzUgMzZsMTgtMTggMTggMTgtMTggMTh6Ii8+PHBhdGggZmlsbD0iIzJiYiIgZD0iTTExNiAxNDlsMTgtMTggMTggMTgtMTggMTh6bTU0LTU0bDE4LTE4IDE4IDE4LTE4IDE4em0tODkgOTBsMTgtMTggMTggMTgtMTggMTh6bTEzOS04NWwyMyAyM2M0IDQgNCAxMSAwIDE2TDE0MiAyNDBjLTQgNC0xMSA0LTE1IDBsLTI0LTI0Yy00LTQtNC0xMSAwLTE1bDEwMS0xMDFjNS01IDEyLTUgMTYgMHoiLz48cGF0aCBmaWxsPSIjM2VlIiBkPSJNMTM0IDk1bDE4LTE4IDE4IDE4LTE4IDE4em0tNTQgMThsMTgtMTcgMTggMTctMTggMTh6bTU1LTUzbDE4LTE4IDE4IDE4LTE4IDE4em05MyA0OGwtOC04Yy00LTUtMTEtNS0xNiAwTDEwMyAyMDFjLTQgNC00IDExIDAgMTVsOCA4Yy00LTQtNC0xMSAwLTE1bDEwMS0xMDFjNS00IDEyLTQgMTYgMHoiLz48cGF0aCBmaWxsPSIjOWVlIiBkPSJNMjcgMTMxbDE4LTE4IDE4IDE4LTE4IDE4em01NC01M2wxOC0xOCAxOCAxOC0xOCAxOHoiLz48cGF0aCBmaWxsPSIjMGFhIiBkPSJNMjMwIDExMGwxMyAxM2M0IDQgNCAxMSAwIDE2TDE0MiAyNDBjLTQgNC0xMSA0LTE1IDBsLTEzLTEzYzQgNCAxMSA0IDE1IDBsMTAxLTEwMWM1LTUgNS0xMSAwLTE2eiIvPjxwYXRoIGZpbGw9IiMxYWIiIGQ9Ik0xMzQgMjQ4Yy00IDAtOC0yLTExLTVsLTIzLTIzYTE2IDE2IDAgMDEwLTIzTDIwMSA5NmExNiAxNiAwIDAxMjIgMGwyNCAyNGM2IDYgNiAxNiAwIDIyTDE0NiAyNDNjLTMgMy03IDUtMTIgNXptNzgtMTQ3bC00IDItMTAxIDEwMWE2IDYgMCAwMDAgOWwyMyAyM2E2IDYgMCAwMDkgMGwxMDEtMTAxYTYgNiAwIDAwMC05bC0yNC0yMy00LTJ6Ii8+PC9zdmc+\n)\n\n\n[![NPM](https://nodei.co/npm/vban.png)](https://nodei.co/npm/vban/)\n\nImplementation of the [VBAN protocol](https://www.vb-audio.com/Voicemeeter/VBANProtocol_Specifications.pdf) in node.js ( [rev 11, Jan 2025](https://web.archive.org/web/20250124131008/https://vb-audio.com/Voicemeeter/VBANProtocol_Specifications.pdf) )\n\n## Install\n```\nnpm i vban\n```\n\n## Examples\n```typescript\n// define your server, type, features, rates, a color, a name / username ... All are optionnal\nconst server = new VBANServer({\n    application: {\n        applicationName: 'VBAN Example',\n        manufacturerName: 'Anonymous',\n        applicationType: EServicePINGApplicationType.SERVER,\n        features: [EServicePINGFeatures.AUDIO, EServicePINGFeatures.MIDI, EServicePINGFeatures.TXT, EServicePINGFeatures.SERIAL],\n        bitFeatureEx: 0,\n        PreferredRate: 0,\n        minRate: 6000,\n        maxRate: 705600,\n        color: { blue: 74, green: 232, red: 57 },\n        nVersion: 12345,\n        GPSPosition: '',\n        userPosition: '',\n        langCode: 'fr-fr',\n        deviceName: 'NodeJs Server',\n        userName: '',\n        userComment: ''\n    }\n});\n\n//do something on error\nserver.on('error', (err) =\u003e {\n    console.log(`server error:\\n${err.stack}`);\n    server.close();\n});\n\nserver.on('message', (packet, sender) =\u003e {\n    //here you can do the magic !\n    //each packet is a VBAN Object parsed\n\n    //We will send a text message each time we receive a packet (for example)\n    //try to create a new TEXT packet\n    const textPacket = new VBANTEXTPacket(\n        {\n            streamName: 'Command1', //the streamName waited by the other tool\n            formatBit: EFormatBit.VBAN_DATATYPE_BYTE8, //the storage format, currently this is the only option available\n            streamType: ETextEncoding.VBAN_TXT_UTF8 //we will send it in UTF8, most of VM Tools use UTF8\n        },\n        'test' // =\u003e the message we want to send (always in UTF8, if streamType is not UTF8, the library will convert)\n    );\n\n    //send it to 127.0.0.1 on port 6980\n    server.send(textPacket, 6980, '127.0.0.1');\n})\n\n//listen on event when the server start listening, to log the port used\nserver.on('listening', () =\u003e {\n    const address = server.address();\n    console.log(`server listening ${address.address}:${address.port}`);\n});\n\n//start to listen on port 7000\nserver.bind(7000);\n```\n\nMore Examples in the [examples folder](./examples)\n\n## Documentation\n\ntechnical documentation is available [here](https://thib3113.github.io/vban/)\n\n## Package Status\n\nThis package is a work in progress .\n\nFunctionalities in progress :\n\n- [X] Convert UDP packet to objects\n- [X] Convert Objects to UDP packet\n- [X] Start a VBAN Server, with configuration, and auto SERVICE replies\n- [X] Implements RT-Packet Service (but return a raw buffer)\n\n## Thanks to\nThis project is inspired by [node-VBAN](https://github.com/JMJBower/node-VBAN) from [Jacob Bower](https://github.com/JMJBower).\nHe does the job for audio part, and the example .\n\nAnd a big thanks to [VB-Audio](https://www.facebook.com/vbaudiosoftware), for the VBAN protocol\n\n## Donations\nIf you want to do a donations, please do it on the VBAN creator website : https://vb-audio.com/Services/licensing.htm\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthib3113%2Fvban","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthib3113%2Fvban","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthib3113%2Fvban/lists"}