{"id":18789453,"url":"https://github.com/zak-45/scanalyzer-chataigne-module","last_synced_at":"2025-08-21T15:41:39.815Z","repository":{"id":168405254,"uuid":"623526937","full_name":"zak-45/SCAnalyzer-Chataigne-Module","owner":"zak-45","description":"Song analyzer, timecoded sequence creation. Actions/ Triggers execution based on segmenter/rhythm difference. deeply integrated with WLED and LedFX.","archived":false,"fork":false,"pushed_at":"2025-01-03T23:51:55.000Z","size":437,"stargazers_count":14,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-27T05:02:43.087Z","etag":null,"topics":["analysis","analyzer","chataigne","ledfx","osc","rhythm","segmentation","song","sound-processing","spleeter","vamp-plugins","wled","wledaudiosync"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/zak-45.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-04T14:46:44.000Z","updated_at":"2025-01-03T23:51:58.000Z","dependencies_parsed_at":null,"dependency_job_id":"ce84c5d7-2c7a-40c8-a0ff-a9f94c5bdd80","html_url":"https://github.com/zak-45/SCAnalyzer-Chataigne-Module","commit_stats":null,"previous_names":["zak-45/scanalyzer-chataigne-module"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zak-45%2FSCAnalyzer-Chataigne-Module","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zak-45%2FSCAnalyzer-Chataigne-Module/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zak-45%2FSCAnalyzer-Chataigne-Module/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zak-45%2FSCAnalyzer-Chataigne-Module/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zak-45","download_url":"https://codeload.github.com/zak-45/SCAnalyzer-Chataigne-Module/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248721337,"owners_count":21151079,"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":["analysis","analyzer","chataigne","ledfx","osc","rhythm","segmentation","song","sound-processing","spleeter","vamp-plugins","wled","wledaudiosync"],"created_at":"2024-11-07T21:07:37.242Z","updated_at":"2025-08-21T15:41:39.795Z","avatar_url":"https://github.com/zak-45.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![image](https://user-images.githubusercontent.com/121941293/283798323-94bb9a2c-65b0-4d98-a483-e49d4d9b0eb1.png)](http://benjamin.kuperberg.fr/chataigne/en)\n\n# SCAnalyzer-Chataigne-Module\n\n![image](https://user-images.githubusercontent.com/121941293/229838656-b568b3cc-4eba-4d5a-80d6-d6c85fdb1974.png)\n\n\nSong analyzer, timecoded sequence creation. Actions/ Triggers execution based on segmenter/rhythm difference. This work mainly for mp3 audio file. Should work on any OS where Chataigne / Sonic Annotator are running.\n```\nSegmenter : divides a single channel of music up into structurally consistent segments.\n            It returns a numeric value (the segment type) for each moment at which a new segment starts.\n\nRhythm difference : Calculates rhythmic features of a signal, including onsets and tempo.\n                     * Difference: The difference between the onset curve and its moving average.\n                        Used as the input for peak-picking.\n```\n\nMain goal is to create automatic sequence with actions/triggers execution : could be any protocol/software already integrated into Chataigne, even external by using HTTP module for example.\n\nIt's based on these two [Vamp plugins](https://vamp-plugins.org/index.html): \n```\nQM Segmenter.\n```\nsee demo : https://youtu.be/vkKx9QjBUSk\n\n```\nBBC Rhythm Difference.\n```\nsee demo : https://youtu.be/6Crcvwpx4_0\n\nThe [Sonic Annotator](https://vamp-plugins.org/sonic-annotator/) extraction tool is necessary and is the main process that will be run. SCAnalyzer take json datas from it, interpret them and create requested triggers/mapping.\n\nAs options :\n\nThis module is deeply integrated with [WLED](https://github.com/zak-45/WLED-Chataigne-Module) and [LedFX](https://github.com/zak-45/LedFX-Chataigne-Module), so if you use the corresponding modules, it can automaticaly create actions for them.\nWebsocket , UDP and HTTP protocols are used, depend of the necessity and required response time.\n\n\nIt will also take care of the [Spleeter module](https://github.com/zak-45/SpleeterGUI-Chataigne-Module) to generate mapping for only vocal part of the song. \n\nSee: https://youtu.be/TxMugj49Dz4\n\n[WLEDAudioSync](https://github.com/zak-45/WLEDAudioSync-Chataigne-Module) replay file feature is part of the process. You can even use more than one WLEDAudioSync module if you need to send on same time to WLED fw based on ESP8266 and WLED fw based on ESP32.\n\n\nSee : https://youtu.be/Fy8NGl8-Jyc\n\n\n'Create Show' command will generate all actions/triggers/mapping with few clicks.\n\n\nLinks :\n\nChataigne : https://benjamin.kuperberg.fr/chataigne/fr\n\nVamp Plugins : https://vamp-plugins.org/index.html  ---\u003e Pack : https://vamp-plugins.org/pack.html\n\nSonic Annotator : https://vamp-plugins.org/sonic-annotator/ --\u003e binaries : https://code.soundsoftware.ac.uk/projects/sonic-annotator/files\n\nYoutube Chanel : https://youtube.com/@NGEvents?feature=shared\n\n## Installation :\n\nManual (any OS) :\n\nInstall Chataigne (v 1.9.25b2 min.) \u0026 copy this repository into :\n```\n\u003cChataigne\u003e/modules/SCAnalyzer-Chataigne-Module-main\n```\nyou can also install it using the custom module manager :\n\n![img.png](img.png)\n\n\n\nYou need also this utility module to have full features: https://github.com/zak-45/SCAnalyzer_util\n```\n copy to \u003cChataigne\u003e/modules/SCAnalyzer_util\n\n```\n\n\nInstall Sonic Annotator and the corresponding vamp plugins (see related links and documentation).\n\n\nhttps://vamp-plugins.org/pack.html\n\nhttps://code.soundsoftware.ac.uk/projects/sonic-annotator/files\n\n## Use it : \n\nGo to Modules, right click, custom / SCAnalyzer\n\n![image](https://github.com/zak-45/SCAnalyzer-Chataigne-Module/assets/121941293/7304946e-20fe-40cd-b1d8-e7ccf3233b5c)\n\n\nYou should see these modules loaded and on Inspector, all related params.\n\n![image](https://github.com/zak-45/SCAnalyzer-Chataigne-Module/assets/121941293/c801a3fc-74d7-4910-a2e5-1b0fde85da0b)\n\n``` \nOn Inspector / Parameters\n\nAudio Params \n\n            Global Delay : delay in ms to execute all triggers/consequences \u0026 mapping/outputs.\n                           mainly used to sync actions (lights) with audio\n                           in case of delay during playback(e.g use of BT  wireless speaker).\n```\n![image](https://github.com/zak-45/SCAnalyzer-Chataigne-Module/assets/121941293/050a4bdb-78f8-4054-856d-942d18500b5e)\n```\n\nSonic Params \n\n            Run Sonic Visualizer : click to execute Sonic Visualizer app (optional)\n                        // Sonic Visualiser : to be adapted by OS\n                        sonicVisu = \"C:/Program Files/Sonic Visualiser/Sonic Visualiser.exe\";\n\n            Sonic Annotator info : click to go web documentation\n            *Sonic Annotator location : choose where sonic annotator app can be found (mandatory)\n            output folder : folder to store the json datas\n            *transform file : file to use when want custom params for segmenter vamp plugin \n            *Rhythm transform file : file to use when want custom params for rhythm vamp plugin\n            \n            * Be sure to set right folder, you can click on right icon to see if Chataigne found them                        \n\n```\n![image](https://github.com/zak-45/SCAnalyzer-Chataigne-Module/assets/121941293/1eb977bb-b290-4664-abe0-7b19f91b427b)\n```\n\nGroup Params\n\n            Link to group number : select group number to choose during automatic mapping creation.\n                                    the one selected need to exist in custom variables.\n            Scgroup xx (1 .. 12) : enter a group name to create an entry in custom variables.\n```\n![image](https://github.com/zak-45/SCAnalyzer-Chataigne-Module/assets/121941293/da1e8a06-a542-4378-8b4b-574c2ee13800)\n```\n     ----- Info on group feature ---------\n\n            each group will have :\n                        Variables container with one to many IP address (others should work, name need to be IPxxx).\n                        Calculated params container with variables used/calculated by script and read only.\n\n```\n![image](https://github.com/zak-45/SCAnalyzer-Chataigne-Module/assets/121941293/9cfd309f-6269-429e-806a-f2ac01d19103)\n\n```\n                        in case of WLED module presence,\n                        a Default WLED params container with default values that can be set.\n                        These values will be used during automatic WLED actions generation.\n```\n\n![image](https://github.com/zak-45/SCAnalyzer-Chataigne-Module/assets/121941293/a76feb2f-9d8a-450a-82cb-53462a8d2017)\n\n```\n\nMapping Params\n\n            Reset mapping Max value : check to create during mapping a zero point before and after the max value.\n                                      Caution, extra time needed and to use for test only.\n\n            Split : actions will be split (in modulo of index) through all IP address\n                    set in the selected group.\n\n            Sequential : actions will be split (in sequential order \u0026 loop) through all IP address\n                         set in the selected group.\n```\n![image](https://github.com/zak-45/SCAnalyzer-Chataigne-Module/assets/121941293/82223b13-148e-40e1-bed9-17b5de18fea6)\nsee : https://youtu.be/tL3g7ofz_Ts\n\n```\n            ----- Visual representation for Reset mapping Max value ------\n\ndefault (without Reset mapping Max value) :\n```\n![image](https://github.com/zak-45/SCAnalyzer-Chataigne-Module/assets/121941293/9f71a770-e6a0-45dd-8476-b1bb609dedd0)\n```\nReset mapping Max value checked :\n```\n![image](https://github.com/zak-45/SCAnalyzer-Chataigne-Module/assets/121941293/73c46275-21c6-4f7e-8c5e-f992ce7133ad)\n\n```\n            -------- Example for Split \u0026 Sequential -------\n\n            During sequence playback, index value will be incremented each time during mapping output\n            (from 1 ... n)\n            Suppose we have 3 IP addresses in the group :\n                        IP : 192.168.1.1\n                        IP1: 192.168.1.2\n                        IP2: 192.168.1.3\n\n            Split case :for index value 1 the mapping output will be set to IP\n                        for index value 2 the mapping output will be set to IP1\n                        for index value 3 the mapping output will be set to IP2\n                        for index value 4 the mapping output will be set to IP1\n                        for index value 5 the mapping output will be set to IP\n                        for index value 6 the mapping output will be set to IP2\n                        for index value 7 the mapping output will be set to IP\n                        for index value 8 the mapping output will be set to IP1\n                        for index value 9 the mapping output will be set to IP2\n                        for index value 10 the mapping output will be set to IP1\n                        ....\n\n            Sequential case : more simple\n                         this will go from IP, IP1, IP2, IP, IP1, IP2 ....\n```\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzak-45%2Fscanalyzer-chataigne-module","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzak-45%2Fscanalyzer-chataigne-module","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzak-45%2Fscanalyzer-chataigne-module/lists"}