«SCGAZER version 1.0» by kergener

on 25 Apr'20 08:34 in emulationdronesynthwavetable

SC recreation of Møffenzeef Mødular Stargazer drone synthesizer

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
// SCgazer versiøn 1.0.
//
// Møffenzeef Mødular Stargazer Drone Synth Emulation
//
// Description:
//
// STARGAZER is øne beast øf a drøne machine: dual wavetable øscillatør
// with ninety arbitrary waveførms,
// twø resønant løwpass filters, three wavetable LFØ's,
// sample rate reductiøn, bit rate reductiøn,
// amplitude mødulatiøn, and CMØS distørtiøn.
// STARGAZER can handle the abuse it will inevitably take at gigs
// and is røad ready før whatever horrible treatment lies ahead.
// Stare intø the sky møuth agape while shredding
// parallel dimensiøns with this hypnøtic vømitrøn.
//
// Website: https://www.moffenzeefmodular.com/stargazer
//
// This is an emulatiøn from what the website is describing.
// I bet the hardware versiøn is much weirder and sø much more interesting.
// If you like it gø buy it.
//
// This is definetly nøt a spønsøred emulatiøn.
//
// 25/04/2020
// Bangkøk, Thailand
// K.E.


// Initialize randomly created waveforms

(~wt = Array.fill(90, {

	var numSegs = rrand (90, 20);
	Env(
		(({rrand(0.0, 1.0)}!(numSegs-1))*[1, -1]).scramble,
		{rrand(1, 20)}!numSegs,
		'sine'
		// {rrand(-20,20)}!numSegs
	).asSignal(1024).asWavetable;
});

~vbuf = Buffer.allocConsecutive(90, s, 2048);
~vbuf.do({
	arg buf, i;
	buf.loadCollection(~wt[i]);

});)

// Initialize the synth

(SynthDef.new(\stargazer, {

	arg amp=1, out=0, pan=0.0, freq=440, gain=(-1.0), wave=0, sub=0, detune=1,
	mix=(-1.0), freq1=880, freq2=880, res1=0.0, res2=0.0, alias=44100, redux=24,
	rate1 = 10, rate2 = 10, rate3 = 10, depth1 = 1, depth2 = 1, depth3 = 1,
	lfo1type1 = 0, 	lfo1type2 = 0, 	lfo1type3 = 0;

	var sig, detuned, pitch, lfo1, lfo2, lfo3, filter1, filter2;


	lfo1=Select.kr(lfo1type1, [LFTri.kr(rate1), LFSaw.kr(rate1), LFPulse.kr(rate1)]);
	lfo2=Select.kr(lfo1type2, [LFTri.kr(rate2), LFSaw.kr(rate2), LFPulse.kr(rate2)]);
	lfo3=Select.kr(lfo1type3, [LFTri.kr(rate3), LFSaw.kr(rate3), LFPulse.kr(rate3)]);
	detuned = Select.ar(sub, [VOsc.ar(wave, freq*detune), VOsc.ar(wave, (freq*0.5)*detune)]);

	wave = ~vbuf[0].bufnum + wave;
	sig = VOsc.ar(wave, freq);
	sig = XFade2.ar(sig, detuned, mix);
	filter1 = MoogLadder.ar(sig, freq1*lfo1.range(1, depth1), res1);
	sig = Decimator.ar(filter1, alias, redux);
	filter2 = MoogLadder.ar(sig, freq2*lfo2.range(1, depth2), res2);
	sig = Splay.ar(filter2);
	sig = LeakDC.ar(sig);
	sig = XFade2.ar(sig, sig.clip, gain);
	sig=sig*amp*lfo3.range(1, depth3);
	sig = Limiter.ar(sig, 0.8);

	Out.ar(out, sig)

}).add;)

// Example

(x=Synth(\stargazer,
	[
		\freq, 62.midicps, //Pitch
		\wave, 9, //waveform selector 0 to 89 waveform
		\detune, 1.midiratio, //detune parameter of the second oscillator
		\sub, 1, // 1 takes detune one octave lower, 0 for using detune as it is
		\mix, 0, // Mix for 2 oscillator. -1 is 1st oscillator and 1 for the 2nd oscillator only 0 is the middle
		\freq1, 800, // Cutoff frequency for the 1st filter
		\lfo1type1, 0, // LFO of 1st filter choose between 3 waveforms 0 for Triangle, 1 for Saw, 2 for Pulse
		\rate1, 10, // Rate of 1st LFO in Hz
		\depth1, 1, // Depth of 1st LFO in Hz, 1 means no modulation, 0 is max
		\alias, 44100, // Sample rate reduction in Hz
		\redux, 24, // Bit rate reduction between 0-24 bits
		\freq2, 800, // Cutoff frequency for the 2nd filter
		\lfo1type2, 0, // LFO of 2nd filter choose between 3 waveforms 0 for Triangle, 1 for Saw, 2 for Pulse
		\rate2, 10, // Rate of 2nd LFO in Hz
		\depth2, 1, // Depth of 2nd LFO in Hz, 1 means no modulation, 0 is max
		\gain, -1, // Gain stage for distortion kinda effect -1 is clean, 1 is dirty
		\lfo1type3, 0, // LFO of amplitude choose between 3 waveforms 0 for Triangle, 1 for Saw, 2 for Pulse
		\rate3, 10, // Rate of 3rd LFO in Hz
		\depth3, 1, // Depth of 3rd LFO in Hz, 1 means no modulation, 0 is max

]);)



(x.set(
	\freq, 55.midicps, //Pitch
	\wave, 69, //waveform selector 0 to 89 waveform
	\detune, 1.midiratio, //detune parameter of the second oscillator
	\sub, 1, // 1 takes detune one octave lower, 0 for using detune as it is
	\mix, 0, // Mix for 2 oscillator. -1 is 1st oscillator and 1 for the 2nd oscillator only 0 is the middle
	\freq1, 1000, // Cutoff frequency for the 1st filter
	\lfo1type1, 0, // LFO of 1st filter choose between 3 waveforms 0 for Triangle, 1 for Saw, 2 for Pulse
	\rate1, 1, // Rate of 1st LFO in Hz
	\depth1, 1, // Depth of 1st LFO in Hz, 1 means no modulation, 0 is max
	\alias, 44100/8, // Sample rate reduction in Hz
	\redux, 8, // Bit rate reduction between 0-24 bits
	\freq2, 600, // Cutoff frequency for the 2nd filter
	\lfo1type2, 0, // LFO of 2nd filter choose between 3 waveforms 0 for Triangle, 1 for Saw, 2 for Pulse
	\rate2, 60, // Rate of 2nd LFO in Hz
	\depth2, 0.3, // Depth of 2nd LFO in Hz, 1 means no modulation, 0 is max
	\gain, -1, // Gain stage for distortion kinda effect -1 is clean, 1 is dirty
	\lfo1type3, 2, // LFO of amplitude choose between 3 waveforms 0 for Triangle, 1 for Saw, 2 for Pulse
	\rate3, 20, // Rate of 3rd LFO in Hz
	\depth3, 1, // Depth of 3rd LFO in Hz, 1 means no modulation, 0 is max)
))
raw 5173 chars (focus & ctrl+a+c to copy)
reception
comments
g_montel user 26 Apr'20 05:54

This is fantastic, and very playful, thanks !

b1t user 27 May'20 14:00

hey, went to log in with my google account and it logged me in as your account. Dunno how to dm but I figured I'd let you know. I'll try to submit a ticket or something. Probably some weird mixup

vividsnow user 27 May'20 19:23

@b1t: fixed and thanks for pointing - looks like echo from discontinued google plus api

@kergener: feel free to contact me (vividsnow at gmail) if you have any problems logging in