Hi @Rom
Fixed, you’ll find a STUTT2Mono here:
thanks a lot !!!
@zwabo, yesterday I tried to edit the .ttl file using Winscp into my Mod Duo X.
What I found was that there also was a .ttl file with the cozmic name in the Stutter lv2 folder. So there was three ttl files there. But even though one of them had the cozmic name, the actual content of the file was exactly the same as the stutter ttl file.
So I removed the cozmic one and tried to do the updates to the stutter ttl file to get toggled switches instead, and the div L and div R to be lists instead of values (like in your demo).
But even though updating the ttl file and rebooting, the gui looks still the same, everything is still only knobs.
Any ideas? Do I need to refresh the plugin manually somehow?
Hi,
Yes, I know, the beta store upload was not done correctly, unfortunately there is nothing I can do about it…
I would try to :
(This was made for the Dwarf but maybe it’ll work for the MDX …)
Thanks for the suggestion. I will try it out this evening.
Doing a manual compare it seems that it is only these that differ:
From Mod audio github:
and
From your Github:
and
Hopefully it as simple as that
And when it’s done don’t forget to reset your browser’s cache.
I never did this yesterday. Wonder if cache is the issue in my case Will test and report back.
Thanks for assisting, really appreciated!
Success! Sharing this here so that other Mod Duo X users can make the edits if they so wish to get the GUI working correctly.
@prefix doap: <http://usefulinc.com/ns/doap#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
@prefix midi: <http://lv2plug.in/ns/ext/midi#> .
@prefix mod: <http://moddevices.com/ns/mod#> .
@prefix opts: <http://lv2plug.in/ns/ext/options#> .
@prefix pg: <http://lv2plug.in/ns/ext/port-groups#> .
@prefix patch: <http://lv2plug.in/ns/ext/patch#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix rsz: <http://lv2plug.in/ns/ext/resize-port#> .
@prefix spdx: <http://spdx.org/rdf/terms#> .
@prefix units: <http://lv2plug.in/ns/extensions/units#> .
@prefix time: <http://lv2plug.in/ns/ext/time#> .
<urn:maxgen:zwabo:stutter>
a lv2:DelayPlugin, lv2:Plugin, doap:Project ;
lv2:extensionData opts:interface ;
lv2:optionalFeature <http://lv2plug.in/ns/lv2core#hardRTCapable> ,
<http://lv2plug.in/ns/ext/buf-size#boundedBlockLength> ;
lv2:requiredFeature opts:options ,
<http://lv2plug.in/ns/ext/urid#map> ;
opts:supportedOption <http://lv2plug.in/ns/ext/buf-size#nominalBlockLength> ,
<http://lv2plug.in/ns/ext/buf-size#maxBlockLength> ,
<http://lv2plug.in/ns/ext/parameters#sampleRate> ;
lv2:port [
a lv2:InputPort, lv2:AudioPort ;
lv2:index 0 ;
lv2:symbol "lv2_audio_in_1" ;
lv2:name "Audio Input 1" ;
] ,
[
a lv2:InputPort, lv2:AudioPort ;
lv2:index 1 ;
lv2:symbol "lv2_audio_in_2" ;
lv2:name "Audio Input 2" ;
] ;
lv2:port [
a lv2:OutputPort, lv2:AudioPort ;
lv2:index 2 ;
lv2:symbol "lv2_audio_out_1" ;
lv2:name "Audio Output 1" ;
] ,
[
a lv2:OutputPort, lv2:AudioPort ;
lv2:index 3 ;
lv2:symbol "lv2_audio_out_2" ;
lv2:name "Audio Output 2" ;
] ;
lv2:port [
a lv2:InputPort, lv2:ControlPort ;
lv2:index 4 ;
lv2:name "BPM" ;
lv2:symbol "BPM" ;
lv2:default 120 ;
lv2:minimum 20 ;
lv2:maximum 280 ;
lv2:portProperty mod:tempoRelatedDynamicScalePoints;
] ,
[
a lv2:InputPort, lv2:ControlPort ;
lv2:index 5 ;
lv2:name "DOUBLE" ;
lv2:symbol "DOUBLE" ;
lv2:default 0 ;
lv2:minimum 0 ;
lv2:maximum 1 ;
lv2:portProperty lv2:toggled;
] ,
[
a lv2:InputPort, lv2:ControlPort ;
lv2:index 6 ;
lv2:name "Div_L" ;
lv2:symbol "Div_L" ;
lv2:default 1 ;
lv2:minimum 1 ;
lv2:maximum 10 ;
lv2:portProperty lv2:integer;
lv2:portProperty lv2:enumeration ;
lv2:scalePoint [rdfs:label "1/4note"; rdf:value 1];
lv2:scalePoint [rdfs:label "Dotted1/8note"; rdf:value 2];
lv2:scalePoint [rdfs:label "1/4notetriplets"; rdf:value 3];
lv2:scalePoint [rdfs:label "1/8note"; rdf:value 4];
lv2:scalePoint [rdfs:label "1/8notetriplets"; rdf:value 5];
lv2:scalePoint [rdfs:label "Dotted1/16note"; rdf:value 6];
lv2:scalePoint [rdfs:label "5tuplet"; rdf:value 7];
lv2:scalePoint [rdfs:label "7tuplet"; rdf:value 8];
lv2:scalePoint [rdfs:label "9tuplet"; rdf:value 9];
lv2:scalePoint [rdfs:label "11tuplet"; rdf:value 10];
] ,
[
a lv2:InputPort, lv2:ControlPort ;
lv2:index 7 ;
lv2:name "Div_R" ;
lv2:symbol "Div_R" ;
lv2:default 3 ;
lv2:minimum 1 ;
lv2:maximum 10 ;
lv2:portProperty lv2:integer;
lv2:portProperty lv2:enumeration ;
lv2:scalePoint [rdfs:label "1/4note"; rdf:value 1];
lv2:scalePoint [rdfs:label "Dotted1/8note"; rdf:value 2];
lv2:scalePoint [rdfs:label "1/4notetriplets"; rdf:value 3];
lv2:scalePoint [rdfs:label "1/8note"; rdf:value 4];
lv2:scalePoint [rdfs:label "1/8notetriplets"; rdf:value 5];
lv2:scalePoint [rdfs:label "Dotted1/16note"; rdf:value 6];
lv2:scalePoint [rdfs:label "5tuplet"; rdf:value 7];
lv2:scalePoint [rdfs:label "7tuplet"; rdf:value 8];
lv2:scalePoint [rdfs:label "9tuplet"; rdf:value 9];
lv2:scalePoint [rdfs:label "11tuplet"; rdf:value 10];
] ,
[
a lv2:InputPort, lv2:ControlPort ;
lv2:index 8 ;
lv2:name "ENV_ms" ;
lv2:symbol "ENV_ms" ;
lv2:default 1 ;
lv2:minimum 0 ;
lv2:maximum 500 ;
] ,
[
a lv2:InputPort, lv2:ControlPort ;
lv2:index 9 ;
lv2:name "Filter_R" ;
lv2:symbol "Filter_R" ;
lv2:default 0 ;
lv2:minimum -100 ;
lv2:maximum 100 ;
] ,
[
a lv2:OutputPort, lv2:ControlPort ;
lv2:index 10 ;
lv2:name "LEFT" ;
lv2:symbol "LEFT" ;
lv2:default 0 ;
lv2:minimum 0 ;
lv2:maximum 1 ;
] ,
[
a lv2:InputPort, lv2:ControlPort ;
lv2:index 11 ;
lv2:name "RANDOM" ;
lv2:symbol "RANDOM" ;
lv2:default 0 ;
lv2:minimum 0 ;
lv2:maximum 1 ;
lv2:portProperty lv2:toggled;
] ,
[
a lv2:InputPort, lv2:ControlPort ;
lv2:index 12 ;
lv2:name "RANGE" ;
lv2:symbol "RANGE" ;
lv2:default 5 ;
lv2:minimum 1 ;
lv2:maximum 10 ;
] ,
[
a lv2:OutputPort, lv2:ControlPort ;
lv2:index 13 ;
lv2:name "RIGHT" ;
lv2:symbol "RIGHT" ;
lv2:default 0 ;
lv2:minimum 0 ;
lv2:maximum 1 ;
] ,
[
a lv2:InputPort, lv2:ControlPort ;
lv2:index 14 ;
lv2:name "Tail" ;
lv2:symbol "Tail" ;
lv2:default 0 ;
lv2:minimum 0 ;
lv2:maximum 1 ;
] ,
[
a lv2:InputPort, lv2:ControlPort ;
lv2:index 15 ;
lv2:name "dry_wet" ;
lv2:symbol "dry_wet" ;
lv2:default 0.5 ;
lv2:minimum 0 ;
lv2:maximum 1 ;
] ,
[
a lv2:InputPort, lv2:ControlPort ;
lv2:index 16 ;
lv2:name "reverse" ;
lv2:symbol "reverse" ;
lv2:default 0 ;
lv2:minimum 0 ;
lv2:maximum 1 ;
lv2:portProperty lv2:toggled;
] ,
[
a lv2:InputPort, lv2:ControlPort ;
lv2:index 17 ;
lv2:name "speed" ;
lv2:symbol "speed" ;
lv2:default 1 ;
lv2:minimum 0.009 ;
lv2:maximum 2 ;
] ,
[
a lv2:InputPort, lv2:ControlPort ;
lv2:index 18 ;
lv2:name "ztutter" ;
lv2:symbol "ztutter" ;
lv2:default 0 ;
lv2:minimum 0 ;
lv2:maximum 1 ;
lv2:portProperty lv2:integer, lv2:toggled, mod:preferMomentaryOnByDefault ;
] ;
rdfs:comment """
Double Stutter effect (L/R) with time division 1/4 note, 1/8 note , etc...
but also odd division 5tuplet, 7tuplet, 9tuplet, 11tuplet
which could give interesting polyrythmic effects at slow tempo.
An ambiant/harsh tool in one plugin.
""" ;
mod:brand "zwabo" ;
mod:label "STUTTTER" ;
doap:name "STUTTTER" ;
doap:license <http://spdx.org/licenses/ISC.html> ;
doap:maintainer [
foaf:name "zwabo" ;
foaf:homepage <https://github.com/moddevices/max-gen-skeleton> ;
] ;
lv2:microVersion 0 ;
lv2:minorVersion 0 .
Now the Stutter plugin should work correctly!
Ps. I’ll share some more details in the next post.
Some details about my findings:
I was not able to use the STUTTTER_dsp.ttl content directly as suggested to try by Zwabo. But I only did two small changes to make it work though, so close to identical!
I needed to replace line 16 from “urn:maxgen:STUTTTER” to “urn:maxgen:zwabo:stutter” as it was in the original file. The GUI would not even load at all using the first option.
I also found out that there is a non breaking space character in the code in Zwabos file here zwaba/Stuttterz/blob/main/max-gen-STUTTTER.lv2/STUTTTER_dsp.tt.
I’m not sure at all if this causes any issues, but I removed this unicode and replaced it with a regular space just to be sure (it is already changed in my code snippet in previous post).
And by the way @zwabo. Thank you for these amazing plugins! They are truly awesome and I am honored to be able to use them
Thank you for sharing clearly all these infos !