Comments (6)
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.
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.
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.
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.
current compilation result https://gist.github.com/atsushieno/443aca35527d23e2e5717cefe029b1f2
It still needs to adjust/unify track plugins, but pretty good progress.
from augene-ng.
As of 484db39, it should be done.
from augene-ng.
Related Issues (18)
- kotractive gradle sync fails on IDEA unless we disable native builds. HOT 4
- native: augene build fails for static linking: undefined reference to ksp-generated classes HOT 1
- Switch to MIDI 2.0 song format model HOT 1
- Import per-note pitchbend etc. as per-note expression (MPE) in .tracktionedit HOT 3
- Markers should be imported onto marker track at the right locations HOT 3
- (re-)import audio graph settings from tracktionedit file
- native: kotractive PropertyInfo() is always passed null propertyMetaType HOT 4
- augene-player needs wave rendering feature HOT 1
- produce mp3 samples on the CI builds HOT 1
- loading sampler plugins can take too long time to fully reload HOT 1
- multiple format support for audio graphs and song files HOT 1
- investigate portable plugin graph HOT 1
- native builds HOT 3
- failing incremental ksp builds HOT 1
- enable Compose for Desktop package build target
- split INSTRUMENTNAME and isolate instruments from effectors HOT 1
- support direct SMF imports in the .augene project file?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from augene-ng.