hsc3-0.15: Help/UGen/Buffer/playBuf.help.lhs
> Sound.SC3.UGen.Help.viewSC3Help "PlayBuf"
> Sound.SC3.UGen.DB.ugenSummary "PlayBuf"
> import Sound.SC3
Load sound file to buffer zero (single channel file required for examples)
> let fn = "/home/rohan/data/audio/pf-c5.aif"
> in withSC3 (async (b_allocRead 0 fn 0 0))
Play once only.
> let s = bufRateScale KR 0
> in audition (out 0 (playBuf 1 AR 0 s 1 0 NoLoop RemoveSynth))
Play in infinite loop.
> let s = bufRateScale KR 0
> in audition (out 0 (playBuf 1 AR 0 s 1 0 Loop DoNothing))
Trigger playback at each pulse.
> let {t = impulse KR 2 0
> ;s = bufRateScale KR 0}
> in audition (out 0 (playBuf 1 AR 0 s t 0 NoLoop DoNothing))
Trigger playback at each pulse (diminishing intervals).
> let {f = xLine KR 0.1 100 10 RemoveSynth
> ;t = impulse KR f 0
> ;s = bufRateScale KR 0}
> in audition (out 0 (playBuf 1 AR 0 s t 0 NoLoop DoNothing))
Loop playback, accelerating pitch.
> let r = xLine KR 0.1 100 60 RemoveSynth
> in audition (out 0 (playBuf 1 AR 0 r 1 0 Loop DoNothing))
Sine wave control of playback rate, negative rate plays backwards.
> let {f = xLine KR 0.2 8 30 RemoveSynth
> ;r = fSinOsc KR f 0 * 3 + 0.6
> ;s = bufRateScale KR 0 * r}
> in audition (out 0 (playBuf 1 AR 0 s 1 0 Loop DoNothing))
Release buffer.
> withSC3 (send (b_free 0))
Channel mismatch, single channel buffer, two channel playBuf, result
is silence and channel mismatch message in server log.
> let fn = "/home/rohan/data/audio/pf-c5.aif"
> in withSC3 (async (b_allocRead 0 fn 0 0))
> let s = bufRateScale KR 0
> in audition (out 0 (playBuf 2 AR 0 s 1 0 Loop DoNothing))
Graph will sound after loading a two channel signal to buffer, and
stop again after loading a single channel sound file.
> let fn = "/home/rohan/data/audio/sp/tinguely.aif"
> in withSC3 (async (b_allocRead 0 fn 0 0))
Scan sequence of buffers:
> let {n = 29 * 6
> ;b = mouseX KR 0 n Linear 0.2
> ;r = bufRateScale KR b}
> in audition (out 0 (playBuf 1 AR b r 1 0 Loop DoNothing))
In sclanguage:
{var fn = "/home/rohan/data/audio/pf-c5.aif"
;s.sendMsg("/b_allocRead",0,fn,0,0)}.value
{var sc = BufRateScale.kr(0)
;Out.ar(0,PlayBuf.ar(2,0,sc,1,0,1,0))}.play
{var fn = "/home/rohan/data/audio/sp/tinguely.aif"
;s.sendMsg("/b_allocRead",0,fn,0,0)}.value
{var b = MouseX.kr(32,64,0,0.2)
;var r = BufRateScale.kr(b)
;Out.ar(0,PlayBuf.ar(1,b,r,1,0,1,0))}.play