SuperCollider Tutorial: 8. Buffers

  Рет қаралды 33,060

Eli Fieldsteel

Eli Fieldsteel

Күн бұрын

Пікірлер: 55
@kn58657
@kn58657 5 жыл бұрын
Eli, these tutorials are great. They're not only an excellent introduction to Supercollider specifically, but an example of how to do clear, to-the-point, well-produced tutorials in general. Thank you!
@abbasnake
@abbasnake 10 жыл бұрын
Finally, been waiting for your next tutorial forever.range(few months). Once again it's very helpful and incredibly clear, thank you.
@PhilBusby
@PhilBusby 4 жыл бұрын
You are the SuperCollider guru. Thank you, Eli, for these tutorials. Clear, extensive and highly informative.
@missoula2213
@missoula2213 6 жыл бұрын
I really appreciate these videos. I’ve been watching them for a couple of weeks now and they are really helping. This isn’t something you can cram, it’s a language, it takes time.
@NealJackMeKC
@NealJackMeKC 4 жыл бұрын
Your tutorials are amazing. Your examples always end up impressing me so much.
@eriktrips
@eriktrips 9 жыл бұрын
I have been waiting *so long* for tutorials like these for SuperCollider. Thank you for distilling the interminable Help Files into the essentials needed to use so many of the powerful tools hidden therein! I was beginning to think I was going to be stuck in PureData for the rest of my life. pd is a fine piece of software too, but it doesn't scale at all, and trying to understand mathematical constructs implemented using boxes and patch cords in example source code makes both my head and my eyes hurt. Self-taught music geeks everywhere must be rejoicing.
@JaeCreator
@JaeCreator 9 жыл бұрын
sincerely like to thank you for these tutorials, I learn much better visually.
@MsDganit
@MsDganit 6 жыл бұрын
Your tutorials are enlightening - I learn so very much from you. Thank you for making them and sharing! Yours, Dganit, composer, Tel-Aviv
@peterjay5301
@peterjay5301 3 жыл бұрын
Thanks a lot for all these tutorials!!
@andygarcia5270
@andygarcia5270 6 жыл бұрын
Thank you so much for these tutorials and the github resources you rock!
@insightfool
@insightfool 9 жыл бұрын
Your tutorials are so valuable! Thank you. Wondering if there is an argument type for midiratio that allows one to adjust ratios according to something other than the chromatic scale? Couldn't find any clarity in the SC help docs on this. Thanks.
@elifieldsteel
@elifieldsteel 9 жыл бұрын
Cere Mony You might find the Scale class to be useful. I also know that Cole Ingraham often works with custom scales and intonations: coleingraham.com/2014/09/26/an-approach-to-custom-scales-in-supercollider/
@insightfool
@insightfool 9 жыл бұрын
Thanks Eli!
@hbayumy
@hbayumy 9 жыл бұрын
Thank you very much, wonderful tutorial :)
@mersadmuminovic1494
@mersadmuminovic1494 10 жыл бұрын
great as always! thank you for doing this, eli!
@franciscochinchurreta
@franciscochinchurreta 7 жыл бұрын
Anazing tutorials! Thank you so much
@nextlevelist8921
@nextlevelist8921 5 жыл бұрын
Eli you are a god
@hermanverbaeten1631
@hermanverbaeten1631 10 жыл бұрын
Hi Eli, Your tutorials have all been of great use to understand Supercollider. But once again i have a question. Unfortunately i don't get an answer on the mailinglist. I tried using the SinOSC.ar as you did to controle the pointer (at time 25m50s). But I also wanted to make the amplitude (e.g.Mul:0.1) smaller to diminish the sine amplitude curve and thus the difference between the high and low pitch. But instead i diminished the whole pitch. Is there a logic explaination for this? Thanks for your help. Gr. Herman
@elifieldsteel
@elifieldsteel 10 жыл бұрын
Remember that SinOsc does not directly control the pitch of the sound, but instead directly controls the pointer position. The slope (or steepness) of SinOsc at a given moment determines the pitch of the sound. A SinOsc with a high frequency will create a wide pitch range. A slower SinOsc will give a narrower pitch range. SinOsc's amplitude determines how much of the sound file is traversed. With mul:0.1, you only read one tenth of the buffer. You could also try a different oscillating pointer (a soft-clipped LFTri.ar, maybe).
@Λ.Κ
@Λ.Κ 4 жыл бұрын
Hello Eli. I like more the BufRd method to execute soundfiles via buffers.However, it has a disadvantage. It hasn't a doneAction parameter,like PlayBuf has,so the Synths do not free themselves.How we could let synths free themselves after execution inside a BufRd?Also, can an envelope be practical in SynthDefs that manipulate sound from buffers?
@elifieldsteel
@elifieldsteel 4 жыл бұрын
Use an audio rate UGen that *does* have a doneAction argument (like Line.ar) to control the pointer position (phase argument) of BufRd. If that doneAction is set to 2, the Synth will free itself when the UGen is finished. Envelopes are very practical in buffer-playing SynthDefs. For example, if you have a long buffer, but only want to hear a short section of it, you can multiply the buffer-reading UGen by an instance of EnvGen that has doneAction:2. In this case, you'll only hear a section of the buffer equal to the duration of the envelope.
@jaymrichardson
@jaymrichardson 3 жыл бұрын
Hi Eli, is it possible to store an array of numerical values in a buffer? I'm trying to get an EnvGen within a SynthDef to read values from a CSV file. I tried doing that using CSVFileReader but I can't find a way to store the CSV on the server side--using ~data = CSVFileReader(path) seems to just store it on the client side. Any help would be hugely appreciated!
@jaymrichardson
@jaymrichardson 3 жыл бұрын
Never mind--I figured out how to do it without using a buffer! Turns out I was wrong about CSVFileReader, I just forgot to put .readInterpret on the end of it lol
@elifieldsteel
@elifieldsteel 3 жыл бұрын
@@jaymrichardson Nice! Glad you got it figured out.
@dreamcorners
@dreamcorners 2 жыл бұрын
good tutorial
@shyofshyness
@shyofshyness 7 жыл бұрын
hey Eli, I forget if I have already asked you (nor if you check the comment threads tbh), but, is there a github repo for your example snippets? It would be helpful for following your tutorials
@elifieldsteel
@elifieldsteel 7 жыл бұрын
Sung Hoon Yang github.com/zeffii/Supercollider3_tutorials_code
@shyofshyness
@shyofshyness 7 жыл бұрын
thank you so much
@n.stevik
@n.stevik 8 жыл бұрын
love ur tutorials, i have a question though...at the 20min-ish mark, when u talk about your group example, at the point where i use g.set[ ate, 0.5]; i keep gettin this error: ----- ERROR: Message 'at' not understood. RECEIVER: Instance of Group { (0x106a44ac8, gc=D0, fmt=00, flg=00, set=03) instance variables [5] nodeID : Integer 1002 server : instance of Server (0x10a647588, size=47, set=6) group : instance of Group (0x11e9ba738, size=5, set=3) isPlaying : false isRunning : false } ARGS: Symbol 'rate' Float 0.500000 00000000 3FE00000 PATH: /Users/humbert/tut8dot3.scd CALL STACK: DoesNotUnderstandError:reportError 0x106a1fb08 arg this = Nil:handleError 0x11e9bf438 arg this = nil arg error = Thread:handleError 0x11e9b8638 arg this = arg error = Object:throw 0x11e9cdbe8 arg this = Object:doesNotUnderstand 0x11a926328 arg this = arg selector = 'at' arg args = [*2] Interpreter:interpretPrintCmdLine 0x11c268ae8 arg this = var res = nil var func = var code = "g.set[ ate, 0.5];" var doc = nil var ideClass = Process:interpretPrintCmdLine 0x11aae4e88 arg this = ^^ The preceding error dump is for ERROR: Message 'at' not understood. RECEIVER: Group(1002) ---- i kno it has something to do w groups, like my noodtree also looks slightly different from urs: i.imgur.com/6l9uYXe.png i'm jus very confused what the problem is...i even restart the server and the programm, but keep gettin this error hope u can help me w the info i can give u..thx
@elifieldsteel
@elifieldsteel 8 жыл бұрын
+Nicolas Humbert Use parentheses, not square brackets. g.set( ate, 0.5);
@n.stevik
@n.stevik 8 жыл бұрын
oops, simple mistake...thx for the quick help
@magonsar
@magonsar 7 жыл бұрын
Hello man, Great tutorials, id like to ask u about an issue: I am unable to load any file to super collider. I reinstalled windows allready and downloaded the 3.8 version with no super nova. Any time i start the program, the post window says: init_OSC compiling class library... initPassOne started NumPrimitives = 692 initPassOne done compiling dir: 'C:\Program Files\SuperCollider-3.8.0\SCClassLibrary' pass 1 done numentries = 809690 / 11150036 = 0.073 5059 method selectors, 2204 classes method table size 12214248 bytes, big table size 89200288 Number of Symbols 11518 Byte Code Size 348612 compiled 313 files in 0.29 seconds Info: 2 methods are currently overwritten by extensions. To see which, execute: MethodOverride.printAll compile done Class tree inited in 0.02 seconds Cleaning up temp synthdefs... *** Welcome to SuperCollider 3.8.0. *** For help press Ctrl-D. SCDoc: Indexing help-files... SCDoc: Indexed 1331 documents in 1.3 seconds ...So i execute the thing and it gives me this: String ------ String:absolutePath C:\Program Files\SuperCollider-3.8.0\SCClassLibrary\Platform\windows\SystemOverwrites\overwrites.sc C:\Program Files\SuperCollider-3.8.0\SCClassLibrary\Common\Collections\String.sc PathName -------- PathName:isAbsolutePath C:\Program Files\SuperCollider-3.8.0\SCClassLibrary\Platform\windows\SystemOverwrites\overwrites.sc C:\Program Files\SuperCollider-3.8.0\SCClassLibrary\Common\Files\PathName.sc -> MethodOverride Making any Ugen can work, like {SinOsc.ar}.play; but when i try to load the buffer, i write: c = Buffer.read(s, "The path of any wav file just like you say"); i press Ctrl + Enter and post window gives me: -> Buffer(1, nil, nil, nil, C:/Users/magon/Documents/Tranajo Orquestación/Bounced Files/Tranajo Orquestación.wav) File 'C:/Users/magon/Documents/Tranajo Orquestación/Bounced Files/Tranajo Orquestación.wav' could not be opened: System error : The system cannot find the path specified. I would so much apreciate if you can help me with that, im a musician and i have to load audios in a class, i speak spanish and i honestly have no technical vocabulary or knowdlege of the inner workings of Supercollider. Hope u could answer, Greetings.
@elifieldsteel
@elifieldsteel 7 жыл бұрын
Sorry I missed this comment -- unfortunately, a lot of comments with pasted code get caught by my YT spam filter, and I sometimes overlook them. But, glad to see you got your question answered on the SC listserv: new-supercollider-mailing-lists-forums-use-these.2681727.n2.nabble.com/Supercollider-does-not-recognize-the-path-to-any-external-audio-sample-tt7633164.html#a7633165
@Japerspn
@Japerspn 6 жыл бұрын
Hey Eli, quick question. is there something about the underscore in the trig argument that makes it reset automatically? I tried just using "trig" as the argument, and it only worked when I changed the value from a negative value to a positive, eg. 0 to 1. But when I changed it to "t_trig," it reset to the trigger every time I sent a 1. Just curious about the syntax there, and if it's a good idea to use that for all trigger applications.
@cikibli
@cikibli 4 жыл бұрын
in Eli's tutorial nr. 4 at 13:16 he explains this in the context of envelopes (and with t_gate), but it applies here too. Hope this helps! :)
@chiffonmyst
@chiffonmyst 10 жыл бұрын
Thank you!!
@genelecrau7019
@genelecrau7019 4 жыл бұрын
Hi Eli, why is it that phasor doesn't allow looping to go backwards, just as line does?
@elifieldsteel
@elifieldsteel 4 жыл бұрын
Phasor does allow backward looping. It's tempting to swap start and end values for Phasor, but that won't do it. You need to provide a negative value for Phasor's rate argument: s.boot; b = Buffer.read(s, Platform.resourceDir++"/sounds/a11wlk01.wav"); ( { var sig, phs; phs = Phasor.ar( 0, BufRateScale.ir(b).neg, //negative rate 0, b.numFrames-1 ); sig = BufRd.ar(1, b, phs); sig = sig * 0.5!2; }.play )
@genelecrau7019
@genelecrau7019 4 жыл бұрын
@@elifieldsteel Great! This clarifies everything. Thanks so much!
@latanun
@latanun 3 жыл бұрын
Thx!
@gravisan
@gravisan 6 жыл бұрын
Is there a way to change the pitch of a sample without the rate?
@elifieldsteel
@elifieldsteel 6 жыл бұрын
Yes, but not using the techniques shown in this video. For pitch-shifting independent of time-stretching, I will take either a granular approach using GrainBuf, or an FFT-based approach using PV_RecordBuf and PV_PlayBuf (available in the JoshUGens collection, part of the SC3 plugins package: github.com/supercollider/sc3-plugins)
@phenixnunlee372
@phenixnunlee372 5 жыл бұрын
I am using a custom server and I want to play a buffer. I think the buffer is playing on the wrong server as I get no sound and no errors
@elifieldsteel
@elifieldsteel 5 жыл бұрын
What code are you using to read the audio file into a Buffer?
@phenixnunlee372
@phenixnunlee372 5 жыл бұрын
@@elifieldsteel ( m=Server.local.options; m.numOutputBusChannels=8; m.numInputBusChannels=8; m.sampleRate=16000; m.device="xCORE USB Audio 2.0"; m.numBuffers=2000; //start server n=Server.new(\super,NetAddr("127.0.0.1", 57111)); n.options.device="xCORE USB Audio 2.0"; n.options.numBuffers=2000; n.boot; s.boot; n.quit; n.meter; n.makeWindow; MIDIClient.init; MIDIIn.connectAll; h=MIDIOut.new(0); h.latency=0; //need on linux //clock script t=TempoClock.new; t.tempo_(0.5); ) //loading multiple buffers ( var person1,person2,person3,person4,person5; ~per1=Array.new; ~per2=Array.new; ~per3=Array.new; ~per4=Array.new; ~per5=Array.new; ~person1=PathName.new("/Users/phenix/Music/VS_Data/Person 1/"); ~person2=PathName.new("/Users/phenix/Music/VS_Data/Person 2/"); ~person3=PathName.new("/Users/phenix/Music/VS_Data/Person 3/"); ~person4=PathName.new("/Users/phenix/Music/VS_Data/Person 4/"); ~person5=PathName.new("/Users/phenix/Music/VS_Data/Person 5/"); ~person1.entries.do({ arg path; ~per1=~per1.add(Buffer.read(s,path.fullPath)); }); ~person2.entries.do({ arg path; ~per2=~per2.add(Buffer.read(s,path.fullPath)); }); ~person3.entries.do({ arg path; ~per3=~per3.add(Buffer.read(s,path.fullPath)); }); ~person4.entries.do({ arg path; ~per4=~per4.add(Buffer.read(s,path.fullPath)); }); ~person5.entries.do({ arg path; ~per5=~per5.add(Buffer.read(s,path.fullPath)); }); ) //creating play back buffer ( SynthDef.new(\playbuf_test,{ arg amp=1,out=0,buf; var sig; sig=PlayBuf.ar(1,buf,BufRateScale.kr(buf)); sig=sig*amp; Out.ar(out,sig); }).add; )
@elifieldsteel
@elifieldsteel 5 жыл бұрын
I'm guessing you meant to type Buffer.read(n,path.fullPath) instead of Buffer.read(s,path.fullPath), since you are defining a custom server instance and storing it in the environment variable n.
@phenixnunlee372
@phenixnunlee372 5 жыл бұрын
@@elifieldsteel ohhhh
@axelkramble
@axelkramble 8 жыл бұрын
is it posible to make patterns with buffers?
@elifieldsteel
@elifieldsteel 8 жыл бұрын
Most definitely. I cover the basics of this topic in the second half of SC Tutorial 10.
@germboy123
@germboy123 5 жыл бұрын
how did you go from ~bells.at(i) to ~b(i)
@elifieldsteel
@elifieldsteel 5 жыл бұрын
This is a syntax shortcut for addressing items in an ordered collection. ~bells.at(i) is equivalent to ~bells[i]. Note that this syntax shortcut has square brackets, not the parentheses you used in your comment.
@JaeCreator
@JaeCreator 9 жыл бұрын
Eli, wonder if you can help, i am on your buffers tutorial, and keep receiving nth_set error (FAILURE NOT IN SERVER) could you possibly forward a email so could pick your wonderfully corey brain :)
@elifieldsteel
@elifieldsteel 8 жыл бұрын
+Jae Creator You can send your code to me via private message on KZbin and I'll try to help.
@thatnewcool7669
@thatnewcool7669 3 жыл бұрын
the sounds you picked in this one are so loud dude lol
@hanbeenlee3718
@hanbeenlee3718 3 жыл бұрын
10:00
SuperCollider Tutorial: 9. MIDI, Part I
18:33
Eli Fieldsteel
Рет қаралды 33 М.
SuperCollider Tutorial: 10. Patterns, Part I
28:13
Eli Fieldsteel
Рет қаралды 43 М.
Это было очень близко...
00:10
Аришнев
Рет қаралды 7 МЛН
🕊️Valera🕊️
00:34
DO$HIK
Рет қаралды 19 МЛН
Elza love to eat chiken🍗⚡ #dog #pets
00:17
ElzaDog
Рет қаралды 17 МЛН
Fake watermelon by Secret Vlog
00:16
Secret Vlog
Рет қаралды 36 МЛН
SuperCollider Tutorial: 20. Microphones and SoundIn
34:06
Eli Fieldsteel
Рет қаралды 12 М.
Coding a Web Server in 25 Lines - Computerphile
17:49
Computerphile
Рет қаралды 342 М.
SuperCollider Tutorial: 14. GUI
40:06
Eli Fieldsteel
Рет қаралды 21 М.
SuperCollider Tutorial: 25. Granular Synthesis, Part I
51:48
Eli Fieldsteel
Рет қаралды 16 М.
Vim Tips I Wish I Knew Earlier
23:00
Sebastian Daschner
Рет қаралды 75 М.
This Single Rule Underpins All Of Physics
32:44
Veritasium
Рет қаралды 3,9 МЛН
How to play a composition like an instrument in SuperCollider
29:33
SuperCollider Tutorial: 23. Wavetable Synthesis, Part I
30:18
Eli Fieldsteel
Рет қаралды 12 М.
All Rust string types explained
22:13
Let's Get Rusty
Рет қаралды 180 М.
Это было очень близко...
00:10
Аришнев
Рет қаралды 7 МЛН