[Csnd] buzz, gbuzz, Synclavier
| Date | 2019-08-12 21:48 |
| From | Roger Kelly |
| Subject | [Csnd] buzz, gbuzz, Synclavier |
I recently bought Synclavier V from Arturia. It is a software emulation of the Synclavier synthesizer from 80s/90s. It appears to be some type of FM Synthesis where the carrier and modulator are each a type of additive harmonic spectra operator. It seems to be far more capable than tradition FM synthesis along the lines of DX7.
Csound mailing list
Csound@listserv.heanet.ie
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here
Would it be possible to produce something similar in Csound with buzz operator modulating another buzz operator? Would that approximate the same type of algorithm? |
| Date | 2019-08-12 21:59 |
| From | Victor Lazzarini |
| Subject | Re: [Csnd] buzz, gbuzz, Synclavier |
|
I'd say that would be no problem. Victor Lazzarini
Dean of Arts, Celtic Studies, and Philosophy
Maynooth University
Ireland
|
| Date | 2019-08-12 22:01 |
| From | Francois PINOT |
| Subject | Re: [Csnd] buzz, gbuzz, Synclavier |
From what I remember, the Synclavier II had four harmonic wave tables, each one up to 24 harmonics. Each wave table could be frequency modulated by a sine wave. Each carrier and modulator had its own ADSR envelope and one could set the frequency of each carrier and the FM ratio for each modulation. There were additional parameters for vibrato, portamento, chorus and the like. François Le lun. 12 août 2019 à 22:49, Roger Kelly <loraxman@gmail.com> a écrit :
|
| Date | 2019-08-12 22:07 |
| From | Roger Kelly |
| Subject | Re: [Csnd] buzz, gbuzz, Synclavier |
So following the above. I could attempt something similar with an operator composed of a buzz and oscil combination -- then use that operator as a modulator to a "carrier" operator perhaps? It sounds quite amazing given that it looks fairly simple in algorithm. On Mon, Aug 12, 2019 at 4:01 PM Francois PINOT <fggpinot@gmail.com> wrote:
|
| Date | 2019-08-12 22:20 |
| From | Victor Lazzarini |
| Subject | Re: [Csnd] buzz, gbuzz, Synclavier |
|
or vco, vco2.
But be careful with aliasing. If you use a carrier with many components, each will be modulated and create sidebands.
Victor Lazzarini
Dean of Arts, Celtic Studies, and Philosophy
Maynooth University
Ireland
|
| Date | 2019-08-12 22:24 |
| From | Bill Alves |
| Subject | [Csnd] Synclavier |
Since the topic has been brought up, I wanted to mention a feature on the Synclavier that I loved but have not seen replicated since. (I have not tried the Arturia software.) It had an analysis/resynthesis function where, for each breakpoint, it would record a frequency, amplitude, and a waveshape. The resynthesis would then be quite inexpensive, consisting simply of crossfades between pairs of wavetables. When I heard of this, I assumed that the resulting sounds would be limited to harmonic spectra, because that’s all that could be stored in the wavetable. However, if the tables are swapped quickly enough, non-harmonics and noise are quite possible. I recall that, as a demo, Sydney Alonzo resynthesized a recording of himself speaking his first name. The resynthesis of the sibilant that starts his name, while not perfect, was startlingly close. I should also note that one had to manually set up the spacing of the breakpoints for the analysis. Although time-consuming, this allowed you to shorten the time between breakpoints when the sound was complex and changing quickly and space them out widely when the changes were gradual.
Bill Alves Professor of Music, The Claremont Colleges Harvey Mudd College 301 Platt Blvd. Claremont CA 91711 http://pages.hmc.edu/alves/ http://www.billalves.com/ |
| Date | 2019-08-12 23:28 |
| From | Steven Yi |
| Subject | Re: [Csnd] buzz, gbuzz, Synclavier |
| Attachments | synclavier-like.csd synclavier-like.livecode |
I've attached an attempt and making something like a Synclavier II. There foscili2 UDO here uses sine modulator and user-supplied carrier table. (Warning: foscili2 has arguments of modulator then carrier as that's what I tend to think in.) There's four oscillators and the foscili2 largely works like foscili. This patch is alright, but I experimented with various slow and fast attacks for the index and amplitude envelopes and got some nice sounds. Same with changing the gitab table with various partial strengths for the additive synthesis part. I haven't ever worked with a Synclavier II so I'm largely interpreting what I found online for the signal paths. (I'll try downloading and trying out Synclavier V when I have a chance.) The CSD was started in live.csound.com, but then modified and further edited using Vim/Csound with live coding via --port. If you don't have a livecoding setup, I've attached a synclavier-like.livecode file that you can copy/paste into https://live.csound.com to try out there. (And if you haven't used live.csound.com, try selecting all text, delete; then paste in contents from file; then select all and press ctrl-e. You can then edit code and press ctrl-e to update the code.) On Mon, Aug 12, 2019 at 5:20 PM Victor Lazzarini |
| Date | 2019-08-13 01:02 |
| From | Steven Yi |
| Subject | Re: [Csnd] buzz, gbuzz, Synclavier |
| Attachments | synclavier-like2.livecode |
And I realized the initial version had a bug with gamix mixing. This version includes a fix, uses a more crystal-like patch and different tables for the foscili2 oscillators, as well as little more harmonic set of pitches in the note generator. On Mon, Aug 12, 2019 at 6:28 PM Steven Yi |
| Date | 2019-08-13 03:19 |
| From | Pete Goodeve |
| Subject | Re: [Csnd] buzz, gbuzz, Synclavier |
| Attachments | None |
| Date | 2019-08-13 04:07 |
| From | Steven Yi |
| Subject | Re: [Csnd] buzz, gbuzz, Synclavier |
Just some quick coding. Did other modifications locally to adjust levels of the Syn instrument, fix that the second expseg's should probably be expsegr's, etc. and was having a good time exploring it. I imagine it's in alright enough shape for anyone to use it as a starting point. ;) Thinking out loud: To Victor's point, I found it interesting working with a non-sine carrier but it was definitely easy to alias. Thinking backwards, starting with a sine and working with it as an FM oscillator, introducing partials was like stacking the FM oscil on top of itself at the each partial frequency and strength. The four oscillators with wavetables made me also think about banded wavetable synthesis ala Beauchamp/Horner/Ayers, which gave some options on how to approach sound design. I sort of enjoyed moving between thinking in FM and Additive and mixing in whether to use FM or use a 0 index and get just the wavetable. I suppose if the oscillators were re-written for PM and had feedback options it'd get really interesting. Thanks Roger for posting about this! (And glad this code proved interesting to you Pete!) On Mon, Aug 12, 2019 at 10:19 PM Pete Goodeve |
| Date | 2019-08-13 12:23 |
| From | rasmus ekman |
| Subject | Re: [Csnd] buzz, gbuzz, Synclavier |
This type of FM is exactly what squinewave is intended for.
It produces variable waveforms, not as summation of sinewave partials
(where eg a squarewave has lots of "wiggling" around the corners),
but more like a line drawing with rounded corners.
Also, with higher frequencies, the squinewave waveform "degrades" to sinewave,
because there's a minimum number of samples to bend each saw/pulse/square corner.
This creates much less aliasing.
I use it both as carrier, modulator and LFO for its own parameters (clip/skew).
The waveshape params may seem a little obtuse, but they are easy to use with visualisation
- try out by zooming in to cycle level in a soundfile editor.
Cheers,
/rasmus
((Sorry for harping on with self-promotion, I just very humbly think that
approximately every softsynth ever made *should* have used something like this for basic waveforms,
instead of table oscils. But it wasn't practical in the 1970-80's... ))
Den 2019-08-13 kl. 05:07, skrev Steven Yi:
> (...)
>
> Thinking out loud: To Victor's point, I found it interesting working
> with a non-sine carrier but it was definitely easy to alias.
>
Thinking
> backwards, starting with a sine and working with it as an FM
> oscillator, introducing partials was like stacking the FM oscil on top
> of itself at the each partial frequency and strength. The four
> oscillators with wavetables made me also think about banded wavetable
> synthesis ala Beauchamp/Horner/Ayers, which gave some options on how
> to approach sound design. I sort of enjoyed moving between thinking in
> FM and Additive and mixing in whether to use FM or use a 0 index and
> get just the wavetable. I suppose if the oscillators were re-written
> for PM and had feedback options it'd get really interesting.
>
> Thanks Roger for posting about this! (And glad this code proved
> interesting to you Pete!)
>
>
> On Mon, Aug 12, 2019 at 10:19 PM Pete Goodeve |
| Date | 2019-08-13 13:12 |
| From | Victor Lazzarini |
| Subject | Re: [Csnd] buzz, gbuzz, Synclavier |
Looks very good indeed. We should promote the use of these. Victor Lazzarini Dean of Arts, Celtic Studies, and Philosophy Maynooth University Ireland > On 13 Aug 2019, at 12:24, rasmus ekman |
| Date | 2019-08-13 15:08 |
| From | Roger Kelly |
| Subject | Re: [Csnd] buzz, gbuzz, Synclavier |
Thanks all for the great advice! Especially Steven! Can't wait to see the implementation to understand the method. I have a lofty goal of building out a Synclavier emulation on a Raspberry Pi and embedded in a small cheap Yamaha keyboard from the 80s converted to a Midi controller. Rasmus, How would I produce a squinewave in Csound? On Tue, Aug 13, 2019 at 7:12 AM Victor Lazzarini <Victor.Lazzarini@mu.ie> wrote: Looks very good indeed. We should promote the use of these. |
| Date | 2019-08-13 17:25 |
| From | Steven Yi |
| Subject | [Csnd] Squinewave |
Hi Rasmus,
(starting a new thread)
I've experimented just a bit with squinewave but I always found it a
bit dark in tone, like the bandlimiting cutoff was quite low? Any
hints/examples for a brighter sound?
As an aside: I haven't done any looking at the implementation, but the
cosine processing seems similar to BLEP and BLAMP to smooth out wave
forms at discontinuities. If so, I'd be curious to see if there'd be
any interesting audio possibilities of using the same oscillator code
but with BLEP or BLAMP.
I did try some FM just now with two squinewaves and got some unexpected results:
instr S1
ipch = 440
amod squinewave a(ipch), a(0), a(0), 0
acar squinewave a(ipch) + amod * expon:a(ipch * 4, p3, ipch), a(0), a(0), 0
;amod oscili 1, ipch
;acar oscili 1, ipch + amod * expon:a(ipch * 4, p3, ipch)
out(acar, acar)
endin
schedule("S1", 0, 4)
Using 0,0 for clip,skew, I get a fairly different sound than the
oscili pair. Not sure, but am I missing something?
I can't say I have much of a handle on squinewave yet, but the manual
example is certainly inspiring.
Thanks!
steven
On Tue, Aug 13, 2019 at 7:23 AM rasmus ekman |
| Date | 2019-08-13 18:20 |
| From | rasmus ekman |
| Subject | Re: [Csnd] Squinewave |
Hi,
Yes, probably because default iMinSweep is sr/3000, this is quite low.
(14 samples rounding at 44.1kHz => degrades to sinewave at 28 samples/cycle = 1575 Hz)
Set any value from 4 and up. I use 7-15 a lot.
Also recommend using different iMinSweep value for each squinewave.
If all are the same, the spectrum will have weak signal in some frequency bands
(also a result of the fixed rounding, this is the weakness of algorithm - nothing is perfect...)
So the default is a little muffled as you say,
I wanted it to be quite hard to alias, but may have rode that pony too far.
Perhaps we're also unused to FM that *doesn't* blow most of its energy near Nyquist frequency ;)
Regards,
/rasmus
Den 2019-08-13 kl. 18:25, skrev Steven Yi:
> Hi Rasmus,
>
> (starting a new thread)
>
> I've experimented just a bit with squinewave but I always found it a
> bit dark in tone, like the bandlimiting cutoff was quite low? Any
> hints/examples for a brighter sound?
>
> As an aside: I haven't done any looking at the implementation, but the
> cosine processing seems similar to BLEP and BLAMP to smooth out wave
> forms at discontinuities. If so, I'd be curious to see if there'd be
> any interesting audio possibilities of using the same oscillator code
> but with BLEP or BLAMP.
>
> I did try some FM just now with two squinewaves and got some unexpected results:
>
> instr S1
> ipch = 440
> amod squinewave a(ipch), a(0), a(0), 0
> acar squinewave a(ipch) + amod * expon:a(ipch * 4, p3, ipch), a(0), a(0), 0
>
> ;amod oscili 1, ipch
> ;acar oscili 1, ipch + amod * expon:a(ipch * 4, p3, ipch)
>
> out(acar, acar)
>
> endin
>
> schedule("S1", 0, 4)
>
> Using 0,0 for clip,skew, I get a fairly different sound than the
> oscili pair. Not sure, but am I missing something?
>
> I can't say I have much of a handle on squinewave yet, but the manual
> example is certainly inspiring.
>
> Thanks!
> steven
>
>
>
>
>
> On Tue, Aug 13, 2019 at 7:23 AM rasmus ekman |
| Date | 2019-08-13 19:07 |
| From | Steven Yi |
| Subject | Re: [Csnd] Squinewave |
Hm, I'm still not sure why the FM setup got such different results at
0,0 than the oscili pair, but modifying the iMinSweep to 4 _finally_
opened up the sound for me. That lead to some *really* nice timbres,
at least with a single squinewave here. I worked the clip and skew
params (expon's in the S1 instrument below) in a live code session and
pasted the example below. (Can cut/paste into live.csound.com to
test.) Going to have to put together a few instruments based on this
now to include with livecode.orc. :) (And a Blue instrument shortly
too!)
I'll probably have a few more questions when I practice with this a
bit more. Thanks for the tips!
Steven
;; [start code]
start("ReverbMixer")
instr S1
ipch = p4
asig squinewave a(ipch), expon:a(0.9, p3, 0.5), expon:a(1, p3, 0.1), 0, 4
asig = declick(asig) * p5
pan_verb_mix(asig, 0.5, 0.3)
endin
instr P1
hexplay("f",
"S1", p3,
in_scale(0, (p4 << (p4 &0x7)) % 19 % 5),
fade_in(5, 128) * ampdbfs(-12))
hexplay("f",
"S1", p3,
in_scale(0, 2 + (p4 << (p4 &0x7)) % 19 % 5),
fade_in(6, 128) * ampdbfs(-12))
hexplay("f",
"S1", p3,
in_scale(1, ((p4 & 0xffff) << (p4 &0x17)) % 31 % 11),
fade_in(7, 128) * ampdbfs(-12))
hexplay("f",
"S1", p3,
in_scale(1, 2 + ((p4 & 0xffff) << (p4 &0x17)) % 31 % 11),
fade_in(7, 128) * ampdbfs(-12))
endin
;; [end code]
On Tue, Aug 13, 2019 at 1:20 PM rasmus ekman |
| Date | 2019-09-03 18:21 |
| From | David Bowen |
| Subject | Re: [Csnd] Squinewave |
Rasmus, The man page for squinewave indicates that negative frequencies are not implemented. Has that changed? FM with any modulation index greater than 1 should produce negative frequencies. I've tried Steven's example and it worked fine. I'm looking to squine-ify the DX7 orchestras, but wanted to be sure there wasn't a potential problem awaiting. David Bowen On Tue, Aug 13, 2019 at 1:07 PM Steven Yi <stevenyi@gmail.com> wrote: Hm, I'm still not sure why the FM setup got such different results at |
| Date | 2019-09-03 21:55 |
| From | rasmus ekman |
| Subject | Re: [Csnd] Squinewave |
No, nothing has changed. Frequency uses positive value.
I tested both ways but landed in preferring that low is low. It's really a toss-up, depending how you use it.
Either way you can control the inputs to get what you want.
Internally, the control logic is too complicated to handle negative phase increments.
But if internal frequency instead had used abs(freq) value we could simulate the output:
Flip the sign on aSkew AND output (1 - aOut), that should do it.
It's a possible update, for sure.
I thought about it but didn't think it was rewarding enough to get into even more hassle.
There's way more regret that it doesn't handle line segments, so a proper triangle (or exactly-saw) waveform
is not supported.
So this could be a nice project for someone who likes to fiddle the wiggles a lot.
(like, a lot. I rewrote the damn thing so many times to make it smooth in all situations.
If you detect an element of desperate fatigue it may not be entirely figmental...)
Cheers,
/rasmus
Den 2019-09-03 kl. 19:21, skrev David Bowen:
> Rasmus,
>
> The man page for squinewave indicates that negative frequencies are not implemented. Has that changed? FM with any modulation index greater than 1 should produce negative frequencies. I've tried Steven's example and it worked fine. I'm looking to squine-ify the DX7 orchestras, but wanted to be sure there wasn't a potential problem awaiting.
>
> David Bowen
>
> On Tue, Aug 13, 2019 at 1:07 PM Steven Yi |