Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Custom oscillators for Korg logue-sdk compatible synths. Contains Oscillator API extensions and reusable header to create wavetable-based oscilator and example web page for user wave data injection.

NotificationsYou must be signed in to change notification settings

dukesrg/logue-osc

Repository files navigation

Custom oscillators for Korg logue-sdk compatible synths

You can get the latest pre-compiled versions of the oscillators in thereleases section.For user-customizable oscillators, an online constructor is available athttps://dukesrg.github.io/logue-osc/.

Project structure

Oscillator description

  • Supersaw - Saw with unison.
  • FastSaw - The same as Supersaw, rewritten with Q31 fixed point. Less CPU resource consumption; i.e. more unison/polyphony/FX avaiable without sound degradation.
  • Morpheus - Example implementation of custom wavetable inspired byWaveEdit.
  • FMxx - 6/4-operator FM oscillator series with up to 4 Yamaha DX7/DX21/DX11-series voice banks suport. Refer to table below for features comparison. Current progress is in issueFM64 features implementation.
  • Anthologue - 6 VCO oscillator with Korg logue-series program suport. Current progress is in issueAnthologue features implementation.

Oscillator Parameters

OscillatorShape / A knobShift-Shape / Alt / B knobParam 1Param 2Param 3Param 4Param 5Param 6
Supersaw
FastSaw
Unison levelDetune levelUnison range 1…12 pairsDetune range 1…100 centsBand limit 0…100%Attenuate 0…30dBRoute LFO
1 - Shape / Unison
2 - Shift-Shape / Detune
3 - both
Polyphony 1…12 voices
MorpheusMorph X
LFO X rate 0.0…10.0Hz
or wave X position
Morph Y
LFO Y rate 0.0…10.0Hz
or wave Y position
LFO X modeLFO Y modeLFO X waveLFO Y waveLFO X depth -100%…100%LFO Y depth -100%…100%
AnthologueAssignable controller 1Assignable controller 2Program select 1…25Sub timbre select 1…25Play mode select
1 - note
2 - sequence trigger
3 - sequence trigger with native BMP
Assignable controller 1 select 1…79Assignable controller 2 select 1…79-

Oscillator notes

  • Oscillators are developed and tested on the NTS-1, which can utilize about twice the CPU performance compared to the Prologue and Monologue XD. The latter may experience oscillator sound degradation with some of the FX enabled, or even without the FX. Please don't hesitate to report any issues related to this.
  • Supersaw polyphony is only for NTS-1 firmware 1.2.0, with legato switched off. Setting polyphony to more than 1 in any other hardware configuration may result to unpredictable behaviour.
  • Supersaw polyphony is limited to use for chords or preemptive mode with last note priority, due to NTS-1 firmware 1.2.0 non legato NOTE OFF implementation (i.e. only last released note event is passed to the runtime).
  • With Supersaw, the sound may be degraded when using a high level of unison and/or a high level of polyphony with another FX, due to high CPU processing requirements. Use parameters wisely for your creative requirements.
  • Morpheus LFO rate control is in a non-linear scale, with more precise control in lower frequencies.
  • FM64 is very rough and only a limited number of features are supported. Currently most voices sound quite different to the originals.
  • Using more than 2 FX on NTS-1 with FM64 may produce sound degradation due to high CPU processing power requirement for 6-op FM calculations.
  • Using LFO with pitch or shape as a target may produce sound degradation on NTS-1 or multi-engine voice hang on -logues.
  • DX21/DX11 voices utilize only operators 6 to 3. Operators 1 and 2 levels are set to silent, but may be altered manually.
  • DX21/DX11 voices with algorithm 3 are initialized with different operator order to match DX7 algorithm 8.
  • Since there is no way to pass velocity to the oscillator, FMxx utilizes assignable controller for velocity control with 10-bit precision.
  • In case both Shape & Alt are bound to the same parameter, changing Alt value is ignored to avoid ambiguity for saving/restoring assignable parameter.
  • Anthologue patch select sets the VCO's parameters according to the selected patch. Further manual parameter edit may available for all supported features, which can exceed the original synth capabilities (e.x. Cross Mod can be activated for Monologue program).
  • Any types and combinations of logue-series can be injected in Anthologue.
  • Maximum number of Anthologue programs depends on their types and combinations, and can vary from 25 to 76.
  • Due to logue-sdk parameter initialization implementation, FM64 and Anthologue oscillators may alter program parameters on selection. Change the program after oscillator selection to make sure all parameters are loaded from the program to their default values.
  • With Anthologue, only the NTS-1 can utilize system BPM with play mode 3. All other -logue synths work the same way for both sequence modes: internal oscillator BPM initialized from the program, and can only be changed with assignable controllers.
  • All 6 VCOs of Anthologue are identical, and sequentially chained with sync/ring mod/cross mod.
  • VCOs 4-6 of Anthologue are considered as a sub timbre. To utilize them, either select a Prologue program with sub timbre, or force sub timbre and set with Sub On AC, Main/Sub Balance AC and Sub parameter.
  • Split sub timbre type is available for all models since it utilizes 3 VCOs at a time.
  • 6 VCO is only stable on the NTS-1 with up to 2 FX.
  • Sub timbre is reset on program change. For Prologue programs - according to program settings. For other -logues programs - Sub On: switched off, Main/Sub balance: center, VCO 4-6 are reset.
  • On -logues, Prologue programs with timbre mode other than Split are loaded with sub timbre forcefully disabled, in order to avoid oscillator hang.
  • FM64 does not suport waveform select due to performance limitations.
  • Both FM64 and FM48 support manual selection from 40 algoritms introduced in Korg opsix, though several algorithm won't produce any sound with FM48.
  • FMxx algoritm parameter value is numerically the offset to the selected voice algorithm (with saturation). Just to enable both the ability to keep the default voice algorithm on oscillator init and to save/recall altered algorith with the program.
  • Morpheus LFO rate control is in a non-linear scale, with more precise control in lower frequencies.
#Morpheus LFO X&Y modes
1One shot
2Key trigger
3Random
4Free run
5One shot + Shape LFO
6Key trigger + Shape LFO
7Random + Shape LFO
8Free run + Shape LFO
9Off (LFO Y only, deactivates grid mode)
#Morpheus LFO X&Y waves
-75…-90Wave Bank F
-60…-74Wave Bank E
-47…-59Wave Bank D
-33…-46Wave Bank C
-17…-32Wave Bank B
-1…-16Wave Bank A
0Sawtooth
1Triangle
2Square
3Sine
4White noise S&H
5…68Custom waves
FMxx featuresFM48FM64FM65FM66FM67FM68FM69
Preset algorithm count84848484848484
User algorithm count--16----
Operators count4666666
Voice bank typeDX21 / DX11DX7DX7DX7DX7DX7DX7
Voice bank count4544225
Feedback count1121211
Waveform count811812611
Waveform customization+
Waveform pinch+
AMP LUT depth x witch, bits11x1611x1611x1611x1611x1613x1611x16
Mixing quality, bits32321632323232
Shape LFO target supported+++++++
Pitch EG supported+++++++
Split zones3333333
Chromatic mode++++++
Kit mode+++++++
FMxx patch extensionsDX7 voicesDX21 / DX11 voices
Algorithm 1…128upper bits at standard offset 0x6E4 upper bits at offset 0x2F
Waveform 1…164 upper bits at offsets 0x0B, 0x1C, 0x2D, 0x3E, 0x4F, 0x601 higher bit at standard offsets 0x4A, 0x4C, 0x4E, 0x50
#FMxx
Custom params
RangeDescription
0Velocity0…127 ⁽¹⁾Velocity control (maximum is 100/127 when using param and 127/127 with fractional 10-bit resolution when assigned Shape/Alt)
1Voice 1-96…96Set zone 1 voice (single or right), 0 activates kit mode, negative values will wrap to the end of the maximum allowed voices (Assigning to Shape/Alt allows to select up to 128 voices, not existing voices will be initialized with random values and can't be saved/restored as a preset)
2Voice 2-96…96Set zone 2 voice (left or middle), 0 activates kit mode, negative values will wrap to the end of the maximum allowed voices (Assigning to Shape/Alt allows to select up to 128 voices, not existing voices will be initialized with random values and can't be saved/restored as a preset)
3Voice 3-96…96Set zone 3 voice (left), may be out of bounds, 0 activates kit mode, negative values will wrap to the end of the maximum allowed voices (Assigning to Shape/Alt allows to select up to 128 voices, not existing voices will be initialized with random values and can't be saved/restored as a preset)
4Split Point11…101 ⁽²⁾Split point between zone 1 and 2
5Split Point21…101 ⁽²⁾Split point between zone 2 and 3
6Transpose 1-99…100 ⁽²⁾Transpose for zone 1
7Transpose 2-99…100 ⁽²⁾Transpose for zone 2
8Transpose 3-99…100 ⁽²⁾Transpose for zone 3
9Voice Shift1-99…100Voice shift for zone 1
10Voice Shift2-99…100Voice shift for zone 2
11Voice Shift3-99…100Voice shift for zone 3
12Shape Assign-99…99Assign param to Shape, default is Velocity (sign controls bipolar parameter value directon, higer 7 bits of the Shape value used as param value)
13Alt Assign-99…99Assign param to Alt, default is FB scale (sign controls bipolar parameter value directon, higer 7 bits of the Alt value used as param value)
14FB offset-99…100 ⁽³⁾Feedback 1 offset
15FB2 offset-99…100 ⁽³⁾Feedback 2 offset
16FB scale-99…100 ⁽⁴⁾Feedback 1 multiplier
17FB2 scale-99…100 ⁽⁴⁾Feedback 2 multiplier
18FB route0…66Feedback 1 route
19FB2 route0…66Feedback 2 route
20Alg select0…100Algorithm select
21Alg offset-99…99Algorithm offset
22Lvl offs All-99…99Level offset for all operators
23Lvl offs Car-99…99Level offset for carriers
24Lvl offs Mod-99…99Level offset for modulators
25Lvl offs Op1-99…99Level offset for operator 1
26Lvl offs Op2-99…99Level offset for operator 2
27Lvl offs Op3-99…99Level offset for operator 3
28Lvl offs Op4-99…99Level offset for operator 4
29Lvl offs Op5-99…99Level offset for operator 5
30Lvl offs Op6-99…99Level offset for operator 6
31Lvl scal All-99…100 ⁽⁴⁾Level multiplier for all operators
32Lvl scal Car-99…100 ⁽⁴⁾Level multiplier for carriers
33Lvl scal Mod-99…100 ⁽⁴⁾Level multiplier for modulators
34Lvl scal Op1-99…100 ⁽⁴⁾Level multiplier for operator 1
35Lvl scal Op2-99…100 ⁽⁴⁾Level multiplier for operator 2
36Lvl scal Op3-99…100 ⁽⁴⁾Level multiplier for operator 3
37Lvl scal Op4-99…100 ⁽⁴⁾Level multiplier for operator 4
38Lvl scal Op5-99…100 ⁽⁴⁾Level multiplier for operator 5
39Lvl scal Op6-99…100 ⁽⁴⁾Level multiplier for operator 6
40KLS offs All-99…99Keyboard level scaling offset for all operators
41KLS offset Car-99…99Keyboard level scaling offset for carriers
42KLS offset Mod-99…99Keyboard level scaling offset for modulators
43KLS offset Op1-99…99Keyboard level scaling offset for operators 1
44KLS offset Op2-99…99Keyboard level scaling offset for operators 2
45KLS offset Op3-99…99Keyboard level scaling offset for operators 3
46KLS offset Op4-99…99Keyboard level scaling offset for operators 4
47KLS offset Op5-99…99Keyboard level scaling offset for operators 5
48KLS offset Op6-99…99Keyboard level scaling offset for operators 6
49KLS scal All-99…100 ⁽⁴⁾Keyboard level scaling multiplier for all operators
50KLS scal Car-99…100 ⁽⁴⁾Keyboard level scaling multiplier carriers
51KLS scal Mod-99…100 ⁽⁴⁾Keyboard level scaling multiplier modulators
52KLS scal Op1-99…100 ⁽⁴⁾Keyboard level scaling multiplierfor operator 1
53KLS scal Op2-99…100 ⁽⁴⁾Keyboard level scaling multiplierfor operator 2
54KLS scal Op3-99…100 ⁽⁴⁾Keyboard level scaling multiplierfor operator 3
55KLS scal Op4-99…100 ⁽⁴⁾Keyboard level scaling multiplierfor operator 4
56KLS scal Op5-99…100 ⁽⁴⁾Keyboard level scaling multiplierfor operator 5
57KLS scal Op6-99…100 ⁽⁴⁾Keyboard level scaling multiplierfor operator 6
58KVS offs All-99…100 ⁽³⁾Key velocity sensitivity offset for all operators
59KVS offs Car-99…100 ⁽³⁾Key velocity sensitivity offset for carriers
60KVS offs Mod-99…100 ⁽³⁾Key velocity sensitivity offset for operators
61KVS offs Op1-99…100 ⁽³⁾Key velocity sensitivity offset operator 1
62KVS offs Op2-99…100 ⁽³⁾Key velocity sensitivity offset operator 2
63KVS offs Op3-99…100 ⁽³⁾Key velocity sensitivity offset operator 3
64KVS offs Op4-99…100 ⁽³⁾Key velocity sensitivity offset operator 4
65KVS offs Op5-99…100 ⁽³⁾Key velocity sensitivity offset operator 5
66KVS offs Op6-99…100 ⁽³⁾Key velocity sensitivity offset operator 6
67KVS scal All-99…100 ⁽⁴⁾Key velocity sensitivity multiplier for all operators
68KVS scal Car-99…100 ⁽⁴⁾Key velocity sensitivity multiplier for carriers
69KVS scal Mod-99…100 ⁽⁴⁾Key velocity sensitivity multiplier for modulators
70KVS scal Op1-99…100 ⁽⁴⁾Key velocity sensitivity multiplier for operator 1
71KVS scal Op2-99…100 ⁽⁴⁾Key velocity sensitivity multiplier for operator 2
72KVS scal Op3-99…100 ⁽⁴⁾Key velocity sensitivity multiplier for operator 3
73KVS scal Op4-99…100 ⁽⁴⁾Key velocity sensitivity multiplier for operator 4
74KVS scal Op5-99…100 ⁽⁴⁾Key velocity sensitivity multiplier for operator 5
75KVS scal Op6-99…100 ⁽⁴⁾Key velocity sensitivity multiplier for operator 6
76Rat offs All-99…99EG rate offset for all operators
77Rat offs Car-99…99EG rate offset for carriers
78Rat offs Mod-99…99EG rate offset for modulators
79Rat offs Op1-99…99EG rate offset for operator 1
80Rat offs Op2-99…99EG rate offset for operator 2
81Rat offs Op3-99…99EG rate offset for operator 3
82Rat offs Op4-99…99EG rate offset for operator 4
83Rat offs Op5-99…99EG rate offset for operator 5
84Rat offs Op6-99…99EG rate offset for operator 6
85Rat scal All-99…100 ⁽⁴⁾EG rate multiplier for all operators
86Rat scal Car-99…100 ⁽⁴⁾EG rate multiplier for carriers
87Rat scal Mod-99…100 ⁽⁴⁾EG rate multiplier for modulators
88Rat scal Op1-99…100 ⁽⁴⁾EG rate multiplier for operator 1
89Rat scal Op2-99…100 ⁽⁴⁾EG rate multiplier for operator 2
90Rat scal Op3-99…100 ⁽⁴⁾EG rate multiplier for operator 3
91Rat scal Op4-99…100 ⁽⁴⁾EG rate multiplier for operator 4
92Rat scal Op5-99…100 ⁽⁴⁾EG rate multiplier for operator 5
93Rat scal Op6-99…100 ⁽⁴⁾EG rate multiplier for operator 6
94KRS offs All-99…100 ⁽³⁾Keyboard EG rate scaling offset for all operators
95KRS offs Car-99…100 ⁽³⁾Keyboard EG rate scaling offset for carriers
96KRS offs Mod-99…100 ⁽³⁾Keyboard EG rate scaling offset for modulators
97KRS offs Op1-99…100 ⁽³⁾Keyboard EG rate scaling offset for operator 1
98KRS offs Op2-99…100 ⁽³⁾Keyboard EG rate scaling offset for operator 2
99KRS offs Op3-99…100 ⁽³⁾Keyboard EG rate scaling offset for operator 3
100KRS offs Op4-99…100 ⁽³⁾Keyboard EG rate scaling offset for operator 4
101KRS offs Op5-99…100 ⁽³⁾Keyboard EG rate scaling offset for operator 5
102KRS offs Op6-99…100 ⁽³⁾Keyboard EG rate scaling offset for operator 6
103KRS scal All-99…100 ⁽⁴⁾Keyboard EG rate multiplier for all operators
104KRS scal Car-99…100 ⁽⁴⁾Keyboard EG rate multiplier for carriers
105KRS scal Mod-99…100 ⁽⁴⁾Keyboard EG rate multiplier for modulators
106KRS scal Op1-99…100 ⁽⁴⁾Keyboard EG rate multiplier for operator 1
107KRS scal Op2-99…100 ⁽⁴⁾Keyboard EG rate multiplier for operator 2
108KRS scal Op3-99…100 ⁽⁴⁾Keyboard EG rate multiplier for operator 3
109KRS scal Op4-99…100 ⁽⁴⁾Keyboard EG rate multiplier for operator 4
110KRS scal Op5-99…100 ⁽⁴⁾Keyboard EG rate multiplier for operator 5
111KRS scal Op6-99…100 ⁽⁴⁾Keyboard EG rate multiplier for operator 6
112Det offs All-99…100 ⁽⁷⁾Detune offset in cents for all operators
113Det offs Car-99…100 ⁽⁷⁾Detune offset in cents for carriers
114Det offs Mod-99…100 ⁽⁷⁾Detune offset in cents for modulators
115Det offs Op1-99…100 ⁽⁷⁾Detune offset in cents for operator 1
116Det offs Op2-99…100 ⁽⁷⁾Detune offset in cents for operator 2
117Det offs Op3-99…100 ⁽⁷⁾Detune offset in cents for operator 3
118Det offs Op4-99…100 ⁽⁷⁾Detune offset in cents for operator 4
119Det offs Op5-99…100 ⁽⁷⁾Detune offset in cents for operator 5
120Det offs Op6-99…100 ⁽⁷⁾Detune offset in cents for operator 6
121Det scal All-99…100 ⁽⁴⁾Detune multiplier for all operators
122Det scal Car-99…100 ⁽⁴⁾Detune multiplier for carriers
123Det scal Mod-99…100 ⁽⁴⁾Detune multiplier for modulators
124Det scal Op1-99…100 ⁽⁴⁾Detune multiplier for operator 1
125Det scal Op2-99…100 ⁽⁴⁾Detune multiplier for operator 2
126Det scal Op3-99…100 ⁽⁴⁾Detune multiplier for operator 3
127Det scal Op4-99…100 ⁽⁴⁾Detune multiplier for operator 4
128Det scal Op5-99…100 ⁽⁴⁾Detune multiplier for operator 5
129Det scal Op6-99…100 ⁽⁴⁾Detune multiplier for operator 6
130Waveform C+M-77…77 ⁽⁸⁾Waveform offset for carriers and modulators
131Waveform 1+2-77…77 ⁽⁸⁾Waveform offset for operators 1 and 2
132Waveform 3+4-77…77 ⁽⁸⁾Waveform offset for operators 3 and 4
133Waveform 5+6-77…77 ⁽⁸⁾Waveform offset for operators 5 and 6
134Waveform All-90…35Waveform select for all operators
135Waveform Car-90…35Waveform select for carriers
136Waveform Mod-90…35Waveform select for modulators
137Waveform Op1-90…35Waveform select for operator 1
138Waveform Op2-90…35Waveform select for operator 2
139Waveform Op3-90…35Waveform select for operator 3
140Waveform Op4-90…35Waveform select for operator 4
141Waveform Op5-90…35Waveform select for operator 5
142Waveform Op6-90…35Waveform select for operator 6
143WF pinch All0…99Waveform pinch for all operators
144WF pinch Car0…99Waveform pinch for carriers
145WF pinch Mod0…99Waveform pinch for modulatorss
146WF pinch Op10…99Waveform pinch for operator 1
147WF pinch Op20…99Waveform pinch for operator 2
148WF pinch Op30…99Waveform pinch for operator 3
149WF pinch Op40…99Waveform pinch for operator 4
150WF pinch Op50…99Waveform pinch for operator 5
151WF pinch Op60…99Waveform pinch for operator 6

⁽¹⁾ : 0...100 with the step of 1 when assigned to the oscillator parameter,
      0..127 with the step of 0.125 when assigned to the Shape or Alt (Shift + Shape)
⁽²⁾ : semitones / notes
⁽³⁾ : -6.93…+7 with the step of 0.07
⁽⁴⁾ : x0.01…x2 multiplier with the step of 0.01
⁽⁵⁾ : 0 - keep voice feedback route
      higher digit - feedback source operator, 1…6 (0→1, 7...9→6)
      lower digit - feedback destination operator, 1…6 (0→1, 7...9→6)
⁽⁶⁾ : 0 - keep voice algorithm
      1...85 - set algorithm explicitly
⁽⁷⁾ : cents
⁽⁸⁾ : higher digit - carriers and odd operators,
      lower digit - modulators and even operators

#Anthologue
Assignable controllers 1&2
1x
(Main VCO 1)
2x
(Main VCO 2)
3x
(Main VCO 3)
4x
(Sub VCO 1)
5x
(Sub VCO 2)
6x
(Sub VCO 3)
7x
(Sub settings)
x0N/AWaveWaveWaveWaveWaveWaveSub On
x1Slider
Mod.Wheel/E.Pedal
Joy Y+/Joy Y-
ShapeShapeShapeShapeShapeShapeTimbre Type
(Layer/XFade/Split)
x2Keyboard OctaveOctaveOctaveOctaveOctaveOctaveOctaveMain/Sub Balance
x3Pitch BendPitchPitchPitchPitchPitchPitchMain/Sub Position
x4Program LevelLevelLevelLevelLevelLevelLevelSplit Point
x5Bend Range +-SyncSyncSyncSyncSync-
x6Bend Range --Ring ModRing ModRing ModRing ModRing Mod-
x7BPM-Cross Mod DepthCross Mod DepthCross Mod DepthCross Mod DepthCross Mod Depth-
x8--------
x9--------
#Anthologue
Waves
1Square
2Triangle
3Saw
4Noise

manifest.json custom data extension

Oscillators with customizable data may contain additional metadata about customization. This data is ignored by synthesizers and Librarian apps, but is useful for external utilities to manage custom data. Here is an example:

{    "header" :     {        ...        "params" : [            ["Wave", 0, 63, ""]          ],        "custom_data" : [            ["Wave file", 64, 256, 64, 0],            ["custom_params", 16448, 2, 8, 256]        ],        "custom_params" : [            ["Wave", 0, 63, ""],            ["LFO", 0, 99, ""]        ]    }}
  • custom_data (array) : custom data descriptors

Custom data descriptors are themselves arrays, and should contain 3-5 values:

  1. description (string) : brief custom data description, may contain format description ("custom_params" value is a special case with the customizable parameter numbers lookup table).
  2. offset (int) : custom data offset in oscillator binary file.
  3. size (int) : custom data element size.
  4. count (int) : optional maximum number of custom data elements (if more than one).
  5. param (int) : optional index of parameter that controls custom element selection (to reflect actual number of elements injected), for the "custom_params" case this is an offset for the customizable parameter numbers.
  6. param multiplier (int) : optional scaler for parameter value.
  • custom_params (array) : contains ordered list of all supported parameter descriptors

Credits

About

Custom oscillators for Korg logue-sdk compatible synths. Contains Oscillator API extensions and reusable header to create wavetable-based oscilator and example web page for user wave data injection.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp