Csound Csound-dev Csound-tekno Search About

[Csnd] "phase reversal" "soft sync"

Date2014-01-13 21:15
Fromcameron bobro
Subject[Csnd] "phase reversal" "soft sync"
Tallying up various synthesis techniques which I've found good for responsive performance, I did not come across any simple documentation of this basic but powerful technique when googling around. 

So, for anyone who might be interested, here is the core idea of an implementation of "phase-reversal soft-sync" which is easy as pie to do in Csound and I would guess almost as easy to implement in Max/Msp, Pd, Reaktor and so on. 

kMod      poscil3  kModAmp, kModCps, ifn
if     (kMod >= 0) then 
        kMod = 1
elseif (kMod < 0)   then
        kMod = -1
endif

aSound  poscil3 kAmp, kCps*kMod, ifn

aSound  dcblock aSound

What happens is that whenever kMod, the modulating signal, dips below 0 (ie, is in a negative phase state), the frequency at which the oscillator aSound is read becomes negative, which means that the index into the wavetable reads *backwards*. 

This creates a sync-type effect. When the modulating oscillator is in positive phase or at zero (whether at a zero crossing or because the amplitude of the modulator is zero), the frequency (rate of index into the wavetable) of aSound is read forward, unchanged (it is simply the standard indexing multiplied by one).

The index moves backwards and forwards from whatever point in the table it is at, rather than leaping to a zero as it would in the reset of "hard" sync, or wrapping around  from who-knows-what amplitude to zero as it does in phase advance sync. So, no discontinuities and their associated aliasing. It is also possible to "rewrite" classic hard-sync resultant shapes but gauge them so as not to alias.

Those familiar with these things will notice that I'm not using the traditional "master" and "slave" paradigm, which I think is misleading. Like many other techniques in digital synthesis, this boils down to index modulation. 



Date2014-01-14 04:26
FromJim Aikin
Subject[Csnd] Re: "phase reversal" "soft sync"
Thanks for the tip. This produces anything from a nice rolling sync sound to
insane gargling, depending on how I tweak the values. For best results,
ksmps=1. For gargling, flip from positive to negative phase somewhere other
than zero....



--
View this message in context: http://csound.1045644.n5.nabble.com/phase-reversal-soft-sync-tp5731599p5731624.html
Sent from the Csound - General mailing list archive at Nabble.com.

Date2014-02-06 14:57
FromSteven Yi
SubjectRe: [Csnd] Re: "phase reversal" "soft sync"
Hi Jim and Cameron,

First, thanks Cameron for posting this!  I wanted to ask, do either of
you have a CSD example you could post here?

Thanks!
steven

On Mon, Jan 13, 2014 at 11:26 PM, Jim Aikin  wrote:
> Thanks for the tip. This produces anything from a nice rolling sync sound to
> insane gargling, depending on how I tweak the values. For best results,
> ksmps=1. For gargling, flip from positive to negative phase somewhere other
> than zero....
>
>
>
> --
> View this message in context: http://csound.1045644.n5.nabble.com/phase-reversal-soft-sync-tp5731599p5731624.html
> Sent from the Csound - General mailing list archive at Nabble.com.
>
>
> Send bugs reports to the Sourceforge bug trackers
> csound6:
>             https://sourceforge.net/p/csound/tickets/
> csound5:
>             https://sourceforge.net/p/csound/bugs/
> Discussions of bugs and features can be posted here
> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"
>
>

Date2014-02-07 15:32
Fromcameron bobro
SubjectRe: [Csnd] Re: "phase reversal" "soft sync"
Hi Steven, I'll try to get a csd up tomorrow. I don't use MIDI or the score for my own work, but pitch/amp following of acoustic playing, so I'll have to modify a csd to work for others!

-Cameron 


From: Steven Yi <stevenyi@gmail.com>
To: Csound <csound@lists.bath.ac.uk>
Sent: Thursday, February 6, 2014 3:57 PM
Subject: Re: [Csnd] Re: "phase reversal" "soft sync"

Hi Jim and Cameron,

First, thanks Cameron for posting this!  I wanted to ask, do either of
you have a CSD example you could post here?

Thanks!
steven

On Mon, Jan 13, 2014 at 11:26 PM, Jim Aikin <midiguru23@sbcglobal.net> wrote:
> Thanks for the tip. This produces anything from a nice rolling sync sound to
> insane gargling, depending on how I tweak the values. For best results,
> ksmps=1. For gargling, flip from positive to negative phase somewhere other
> than zero....
>
>
>
> --
> View this message in context: http://csound.1045644.n5.nabble.com/phase-reversal-soft-sync-tp5731599p5731624.html
> Sent from the Csound - General mailing list archive at Nabble.com.
>
>
> Send bugs reports to the Sourceforge bug trackers
> csound6:
>            https://sourceforge.net/p/csound/tickets/
> csound5:
>            https://sourceforge.net/p/csound/bugs/
> Discussions of bugs and features can be posted here
> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"
>
>


Send bugs reports to the Sourceforge bug trackers
csound6:
            https://sourceforge.net/p/csound/tickets/
csound5:
            https://sourceforge.net/p/csound/bugs/
Discussions of bugs and features can be posted here
To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"





Date2014-02-07 17:40
FromJim Aikin
Subject[Csnd] Re: "phase reversal" "soft sync"
Here you go, Steven.

**********************






sr = 44100
ksmps = 1
nchnls = 2
0dbfs = 1

giSine	 ftgen	0, 0, 65536, 10, 1
giSaw	 ftgen	0, 0, 65536, 10, 1, 0.8, 0.65, 0.4, 0.25

instr 1

kModAmp	init	1
kModCps	linseg	60, p3, 60
kAmp		init 0.4
kCps		linseg	180, p3, 660

kMod      poscil3  kModAmp, kModCps, giSine

if     (kMod >= 0) then 
        kMod = 1
elseif (kMod < 0)   then
        kMod = -1
endif

aSound  poscil3 kAmp, kCps*kMod, giSaw

aSound  dcblock aSound
		outs	aSound, aSound

endin




i 1 0 15






--
View this message in context: http://csound.1045644.n5.nabble.com/phase-reversal-soft-sync-tp5731599p5732431.html
Sent from the Csound - General mailing list archive at Nabble.com.

Date2014-02-07 18:20
FromSteven Yi
SubjectRe: [Csnd] Re: "phase reversal" "soft sync"
Hi Jim and Cameron,

Thanks very much!  The example Jim posted is neat. It made me look up
the Oscillator Sync article on Wikipedia[1] that describes "Reversing
Sync".  From there I saw Eli Brandt's paper "Hard Sync without
Aliasing"[2], and a nice video demoing sync on the Moog Little Phatty.

I hadn't thought about sync or had much experience using it in the
past.  I'll be looking forward to experimenting with this reversal
sync and looking into that paper.

Thanks again!
steven

[1] - http://en.wikipedia.org/wiki/Oscillator_sync
[2] - http://www.cs.cmu.edu/~eli/papers/icmc01-hardsync.pdf
[3] - http://www.youtube.com/watch?v=INqbAWnbstI

On Fri, Feb 7, 2014 at 12:40 PM, Jim Aikin  wrote:
> Here you go, Steven.
>
> **********************
>
> 
> 
> 
> 
>
> sr = 44100
> ksmps = 1
> nchnls = 2
> 0dbfs = 1
>
> giSine   ftgen  0, 0, 65536, 10, 1
> giSaw    ftgen  0, 0, 65536, 10, 1, 0.8, 0.65, 0.4, 0.25
>
> instr 1
>
> kModAmp init    1
> kModCps linseg  60, p3, 60
> kAmp            init 0.4
> kCps            linseg  180, p3, 660
>
> kMod      poscil3  kModAmp, kModCps, giSine
>
> if     (kMod >= 0) then
>         kMod = 1
> elseif (kMod < 0)   then
>         kMod = -1
> endif
>
> aSound  poscil3 kAmp, kCps*kMod, giSaw
>
> aSound  dcblock aSound
>                 outs    aSound, aSound
>
> endin
>
> 
> 
>
> i 1 0 15
>
> 
> 
>
>
>
> --
> View this message in context: http://csound.1045644.n5.nabble.com/phase-reversal-soft-sync-tp5731599p5732431.html
> Sent from the Csound - General mailing list archive at Nabble.com.
>
>
> Send bugs reports to the Sourceforge bug trackers
> csound6:
>             https://sourceforge.net/p/csound/tickets/
> csound5:
>             https://sourceforge.net/p/csound/bugs/
> Discussions of bugs and features can be posted here
> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"
>
>

Date2014-02-07 19:05
FromRory Walsh
SubjectRe: [Csnd] Re: "phase reversal" "soft sync"
Attachmentssoftsync.csd  
Here's a version that doesn't need ksmps to be 1. Thanks for posting,
this is going to make a nice plugin.

On 7 February 2014 18:20, Steven Yi  wrote:
> Hi Jim and Cameron,
>
> Thanks very much!  The example Jim posted is neat. It made me look up
> the Oscillator Sync article on Wikipedia[1] that describes "Reversing
> Sync".  From there I saw Eli Brandt's paper "Hard Sync without
> Aliasing"[2], and a nice video demoing sync on the Moog Little Phatty.
>
> I hadn't thought about sync or had much experience using it in the
> past.  I'll be looking forward to experimenting with this reversal
> sync and looking into that paper.
>
> Thanks again!
> steven
>
> [1] - http://en.wikipedia.org/wiki/Oscillator_sync
> [2] - http://www.cs.cmu.edu/~eli/papers/icmc01-hardsync.pdf
> [3] - http://www.youtube.com/watch?v=INqbAWnbstI
>
> On Fri, Feb 7, 2014 at 12:40 PM, Jim Aikin  wrote:
>> Here you go, Steven.
>>
>> **********************
>>
>> 
>> 
>> 
>> 
>>
>> sr = 44100
>> ksmps = 1
>> nchnls = 2
>> 0dbfs = 1
>>
>> giSine   ftgen  0, 0, 65536, 10, 1
>> giSaw    ftgen  0, 0, 65536, 10, 1, 0.8, 0.65, 0.4, 0.25
>>
>> instr 1
>>
>> kModAmp init    1
>> kModCps linseg  60, p3, 60
>> kAmp            init 0.4
>> kCps            linseg  180, p3, 660
>>
>> kMod      poscil3  kModAmp, kModCps, giSine
>>
>> if     (kMod >= 0) then
>>         kMod = 1
>> elseif (kMod < 0)   then
>>         kMod = -1
>> endif
>>
>> aSound  poscil3 kAmp, kCps*kMod, giSaw
>>
>> aSound  dcblock aSound
>>                 outs    aSound, aSound
>>
>> endin
>>
>> 
>> 
>>
>> i 1 0 15
>>
>> 
>> 
>>
>>
>>
>> --
>> View this message in context: http://csound.1045644.n5.nabble.com/phase-reversal-soft-sync-tp5731599p5732431.html
>> Sent from the Csound - General mailing list archive at Nabble.com.
>>
>>
>> Send bugs reports to the Sourceforge bug trackers
>> csound6:
>>             https://sourceforge.net/p/csound/tickets/
>> csound5:
>>             https://sourceforge.net/p/csound/bugs/
>> Discussions of bugs and features can be posted here
>> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"
>>
>>
>
>
> Send bugs reports to the Sourceforge bug trackers
> csound6:
>             https://sourceforge.net/p/csound/tickets/
> csound5:
>             https://sourceforge.net/p/csound/bugs/
> Discussions of bugs and features can be posted here
> To unsubscribe, send email sympa@lists.bath.ac.uk with body "unsubscribe csound"
>
>

Date2014-02-07 22:47
Fromzappfinger
Subject[Csnd] Re: "phase reversal" "soft sync"
Nice one Rory!

Add some delay, modulation and play it like Jordan!

Richard



--
View this message in context: http://csound.1045644.n5.nabble.com/phase-reversal-soft-sync-tp5731599p5732441.html
Sent from the Csound - General mailing list archive at Nabble.com.