Giter Club home page Giter Club logo

Comments (6)

atsushieno avatar atsushieno commented on July 17, 2024

Another issue with the "use NRPN" idea is that unless we switch to MIDI2 model the actual parameter values are bound to the range within 0..127, which does not match audio plugin parameters capability (usually 32-bit float, can be even 64-bit). Maybe it is inevitable unless we use our very own sysex with enough data size.

It is impossible to map double to MIDI2 (32bit data with assignable controllers or NRPNs) anyways, so we can safely(?) dump the idea of supporting double.

from augene-ng.

atsushieno avatar atsushieno commented on July 17, 2024

For plugin parameter definitions like this (generated from augene-player "Export Plugin Metadata" feature):

  {"type": "VST3", "name": "OPNplug", "unique-id": "-1472549978",
   "file": "/home/atsushi/.vst3/OPNplug.vst3", "parameters": [
    {"index": "0", "name": "Master volume"},
    {"index": "1", "name": "Emulator"},
    {"index": "2", "name": "Chip count"},
    {"index": "3", "name": "Chip type"},
   ... (can be up to 16383 in theory)

define / generate / use MML like:

// define
#macro AUDIO_PLUGIN_PARAMETER parameterID: number, val:number { NRPN $parameterID % #80, $parameterID / #80 DTE $val % #80, $val / #80 } 
// generate
#macro OPNPLUG { __MIDI #F0 7D len xxxxxxxxxx F7 } // specify unique-id in UTF-8 string in sysex
#macro OPNPLUG_CHIPTYPE val { AUDIO_PLUGIN_PARAMETER 3, $val }
// use
1     OPNPLUG_CHIPTYPE 1

Then Midi2TracktionConverter picks up those MIDI events and convert to <AUTOMATIONTRACK>s.

Along with this way, we don't really have to make changes to AugeneProject model. Everything is done only in Midi2TracktionEditConverter, and we can write a plugin-to-MML generator later, or those MMLs can be done manually. The generated MMLs work like nrpn-gs-xg.mml in our default macros.

from augene-ng.

atsushieno avatar atsushieno commented on July 17, 2024

I made some changes to mugene-ng so that __MIDI primitive operators can take string arguments too, so the plugin designation macro can be:

#macro OPNPLUG { __MIDI #F0, #7D, "augene-ng", 11, "-1472549978", #F7 } // specify unique-id in UTF-8 string in sysex

It also adds implicit identifier augene-ng after 7Dh so that we can mostly avoid any other system exclusive messages that are being sent as 7Dh (research / dev purpose manufacturer ID).

from augene-ng.

atsushieno avatar atsushieno commented on July 17, 2024

Revamped NRPN based idea with SYSEX-based idea. After "augene-ng", add 00h, parameter-index LSB, MSB, parameter-value LSB, MSB, then F7h. It's not difficult.

from augene-ng.

atsushieno avatar atsushieno commented on July 17, 2024

current compilation result https://gist.github.com/atsushieno/443aca35527d23e2e5717cefe029b1f2

It still needs to adjust/unify track plugins, but pretty good progress.

from augene-ng.

atsushieno avatar atsushieno commented on July 17, 2024

As of 484db39, it should be done.

from augene-ng.

Related Issues (18)

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.