Git Product home page Git Product logo

scanalyzer-chataigne-module's Introduction

image

SCAnalyzer-Chataigne-Module

image

Song 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.

Segmenter : divides a single channel of music up into structurally consistent segments.
            It returns a numeric value (the segment type) for each moment at which a new segment starts.

Rhythm difference : Calculates rhythmic features of a signal, including onsets and tempo.
                     * Difference: The difference between the onset curve and its moving average.
                        Used as the input for peak-picking.

Main 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.

It's based on these two Vamp plugins:

QM Segmenter.

see demo : https://youtu.be/vkKx9QjBUSk

BBC Rhythm Difference.

see demo : https://youtu.be/6Crcvwpx4_0

The 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.

This module is deeply integrated with WLED and LedFX, so if you use the corresponding modules, it can automaticaly create actions for them. Websocket , UDP and HTTP protocols are used, depend of the necessity and required response time.

It will also take care of the Spleeter module to generate mapping for only vocal part of the song.

See: https://youtu.be/TxMugj49Dz4

WLEDAudioSync 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.

See : https://youtu.be/Fy8NGl8-Jyc

'Create Show' command will generate all actions/triggers/mapping with few clicks.

Links :

Chataigne : https://benjamin.kuperberg.fr/chataigne/fr

Vamp Plugins : https://vamp-plugins.org/index.html ---> Pack : https://vamp-plugins.org/pack.html

Sonic Annotator : https://vamp-plugins.org/sonic-annotator/ --> binaries : https://code.soundsoftware.ac.uk/projects/sonic-annotator/files

Youtube Chanel : https://youtube.com/@NGEvents?feature=shared

Installation :

Manual (any OS) :

Install Chataigne (v 1.9.16 min.) & copy this repository into :

<Chataigne>/modules/SCAnalyzer

You need also this utility module to have full features: https://github.com/zak-45/SCAnalyzer_util

 copy to <Chataigne>/modules/SCAnalyzer_util

Install Sonic Annotator and the corresponding vamp plugins (see related links and documentation).

For Win users :

use the SCAnalyzer.exe from releases

(https://github.com/zak-45/SCAnalyzer-Chataigne-Module/releases/)

you can install : Chataigne , SCAnalyzer module, vamp plugins and Sonic annotator in easy way

Use it :

Go to Modules, right click, custom / SCAnalyzer

image

You should see these modules loaded and on Inspector, all related params.

image

On Inspector / Parameters

Audio Params 

            Global Delay : delay in ms to execute all triggers/consequences & mapping/outputs.
                           mainly used to sync actions (lights) with audio
                           in case of delay during playback(e.g use of BT  wireless speaker).

image


Sonic Params 

            Run Sonic Visualizer : click to execute Sonic Visualizer app (optional)
                        // Sonic Visualiser : to be adapted by OS
                        sonicVisu = "C:/Program Files/Sonic Visualiser/Sonic Visualiser.exe";

            Sonic Annotator info : click to go web documentation
            Sonic Annotator location : choose where sonic annotator app can be found (mandatory)
            output folder : folder to store the json datas
            transform file : file to use when want custom params for segmenter vamp plugin 
            Rhythm transform file : file to use when want custom params for rhythm vamp plugin

image


Group Params

            Link to group number : select group number to choose during automatic mapping creation.
                                    the one selected need to exist in custom variables.
            Scgroup xx (1 .. 12) : enter a group name to create an entry in custom variables.

image

     ----- Info on group feature ---------

            each group will have :
                        Variables container with one to many IP address (others should work, name need to be IPxxx).
                        Calculated params container with variables used/calculated by script and read only.

image

                        in case of WLED module presence,
                        a Default WLED params container with default values that can be set.
                        These values will be used during automatic WLED actions generation.

image


Mapping Params

            Reset mapping Max value : check to create during mapping a zero point before and after the max value.
                                      Caution, extra time needed and to use for test only.

            Split : actions will be split (in modulo of index) through all IP address
                    set in the selected group.

            Sequential : actions will be split (in sequential order & loop) through all IP address
                         set in the selected group.

image see : https://youtu.be/tL3g7ofz_Ts

            ----- Visual representation for Reset mapping Max value ------

default (without Reset mapping Max value) :

image

Reset mapping Max value checked :

image

            -------- Example for Split & Sequential -------

            During sequence playback, index value will be incremented each time during mapping output
            (from 1 ... n)
            Suppose we have 3 IP addresses in the group :
                        IP : 192.168.1.1
                        IP1: 192.168.1.2
                        IP2: 192.168.1.3

            Split case :for index value 1 the mapping output will be set to IP
                        for index value 2 the mapping output will be set to IP1
                        for index value 3 the mapping output will be set to IP2
                        for index value 4 the mapping output will be set to IP1
                        for index value 5 the mapping output will be set to IP
                        for index value 6 the mapping output will be set to IP2
                        for index value 7 the mapping output will be set to IP
                        for index value 8 the mapping output will be set to IP1
                        for index value 9 the mapping output will be set to IP2
                        for index value 10 the mapping output will be set to IP1
                        ....

            Sequential case : more simple
                         this will go from IP, IP1, IP2, IP, IP1, IP2 ....

scanalyzer-chataigne-module's People

Contributors

zak-45 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

scanalyzer-chataigne-module's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.