Nach dem Test des Soulsby Synths ATmegatron auf AMAZONA.de habe ich mir eine ATmegatronMini zugelegt. Und dann dieses kleine JesuSonic Script für REAPER geschrieben:

Es ermöglicht die Steuerung des kleinen Selbstbausynths. Die Datei "Atminitron Controller", ohne Endung, wird erstellt. Paul Soulsby hat danach das PlugIn auf seiner Downloadseite zur Verfügung gestelt. Cheers!

 


// ----------------------------------------------------------------------------
//               MIDI - Soulsbysynths Atmegatron MINI Controller
//                                 v1.0 2016-01-22
//
//                This is a simple MIDI-CC Controller for the Soulsbysynths
//                Atmegatron MINI, found at
//                http://soulsbysynths.com/miniatmegatron/
//
//                The sourcecode and the hardware is open source
//                and is based on the Arduino platform
//
//
//                             Written by Syncope (c) 2016
//
//        https://soundcloud.com/syncope-1/
//        https://soundcloud.com/weirdsciencenfreakinmagic/
//        https://soundcloud.com/jimi-heinrich-orchestra/
//        https://soundcloud.com/jazzelectric/
//
//        http://home.voltage-life-support.de/
//
 
 
desc: MIDI - Soulsbysynths Atmegatron MINI Controller
//tags: MIDI editor Soulsbysyths
 
in_pin:none
out_pin:none
 
// Slider Setup
slider1:0<0,127,1>Pitch Envelope
slider2:0<0,127,1>Filter Envelope
slider3:0<0,127,1>PWM
 
slider4:127<0,127,1>Filter Cutoff
slider5:0<0,127,1>Filter Resonance
slider6:127<0,127,1>LFO Clock Divider
 
slider7:0<0,127,1>Amplitude LFO Ammount
slider8:0<0,127,1>Pitch LFO Ammount
slider9:0<0,127,1>Filter LFO Ammount
 
slider10:0<0,127,1>Flange
slider11:0<0,127,1>Distortion
 
// initialize constants
// ----------------------------------------------------------------------------
@init
 
CC_MESG_MIN = 176;  // a CC message on MIDI channel 1
CC_MESG_MAX = 191;  // a CC message on MIDI channel 16
BYTE_SIZE   = 256;  // size of an 8-bit byte
 
CC_PITCHLFO = 1;
CC_FILTERENV = 16;
CC_DISTORTION = 17;
CC_FILTCUTOFF = 74;
CC_FILTRES = 71;
CC_LFOCLOCKDIV = 79;
CC_PWM = 91;
CC_AMPLFO = 92;
CC_FILTLFO = 93;
CC_PITCHENV = 94;
CC_FLANGE = 95;
CC_ALLNOTESOFF = 123;
 
 
// link each slider with a variable
// ----------------------------------------------------------------------------
@slider
 
// Have sliders changed?
ptenv != slider1 ? (ptenv = slider1; sldr1chng = 1;);
flenv != slider2 ? (flenv = slider2; sldr2chng = 1;);
pwm != slider3 ? (pwm = slider3; sldr3chng = 1;);
 
flcut != slider4 ? (flcut = slider4; sldr4chng = 1;);
flres != slider5 ? (flres = slider5; sldr5chng = 1;);
lforat != slider6 ? (lforat = slider6; sldr6chng = 1;);
 
lfoamp != slider7 ? (lfoamp = slider7; sldr7chng = 1;);
lfoptc != slider8 ? (lfoptc = slider8; sldr8chng = 1;);
lfoflt != slider9 ? (lfoflt = slider9; sldr9chng = 1;);
 
flange != slider10 ? (flange = slider10; sldr10chng = 1;);
disto != slider11 ? (disto = slider11; sldr11chng = 1;);
 
 
// set slider
ptenv = slider1;
flenv = slider2;
pwm = slider3;
 
flcut = slider4;
flres = slider5;
lforat = slider6;
 
lfoamp = slider7;
lfoptc = slider8;
lfoflt = slider9;
 
flange = slider10;
disto = slider11;
 
 
// the main loop
// ----------------------------------------------------------------------------
@block
 
// Only set sliders, if they have changed (moved)
sldr1chng ? (
midisend( 0, CC_MESG_MIN, CC_PITCHENV + ( ptenv * BYTE_SIZE ) );
sldr1chng = 0;);
 
sldr2chng ? (
midisend( 0, CC_MESG_MIN, CC_FILTERENV + ( flenv * BYTE_SIZE ) );
sldr2chng = 0;);
 
sldr3chng ? (
midisend( 0, CC_MESG_MIN, CC_PWM + ( pwm * BYTE_SIZE ) );
sldr3chng = 0;);
 
 
sldr4chng ? (
midisend( 0, CC_MESG_MIN, CC_FILTCUTOFF + ( flcut * BYTE_SIZE ) );
sldr4chng = 0;);
 
sldr5chng ? (
midisend( 0, CC_MESG_MIN, CC_FILTRES + ( flres * BYTE_SIZE ) );
sldr5chng = 0;);
 
sldr6chng ? (
midisend( 0, CC_MESG_MIN, CC_LFOCLOCKDIV + ( lforat * BYTE_SIZE ) );
sldr6chng = 0;);
 
 
sldr7chng ? (
midisend( 0, CC_MESG_MIN, CC_AMPLFO + ( lfoamp * BYTE_SIZE ) );
sldr7chng = 0;);
 
sldr8chng ? (
midisend( 0, CC_MESG_MIN, CC_PITCHLFO + ( lfoptc * BYTE_SIZE ) );
sldr8chng = 0;);
 
sldr9chng ? (
midisend( 0, CC_MESG_MIN, CC_FILTLFO + ( lfoflt * BYTE_SIZE ) );
sldr9chng = 0;);
 
 
sldr10chng ? (
midisend( 0, CC_MESG_MIN, CC_FLANGE + ( flange * BYTE_SIZE ) );
sldr10chng = 0;);
 
sldr11chng ? (
midisend( 0, CC_MESG_MIN, CC_DISTORTION + ( disto * BYTE_SIZE ) );
sldr11chng = 0;);

Dann wird die Datei kopiert nach;

MAC: Macintosh HD/Benutzer/[Benutzername]/Library/Application Support/REAPER/Effects/Syncope

PC: C:\Benutzer\[Benutzername]\AppData\Roaming\REAPER\Effects\Syncope

 

Bei [Benutzername] muss dann der Benutzername des aktuellen Kontos eingesetzt werden.

Der Ordner Syncope muss noch erstellt werden.