Discussion:
A Gentle Introduction to SuperCollider
Bruno Ruviaro
2014-09-11 23:09:04 UTC
Permalink
Hi all,

I would like to share with everyone this new SuperCollider tutorial I wrote
over the Summer. It's specifically written for total beginners, and it's
Creative Commons licensed, so feel free to share, copy, distribute,
remix...:

PDF:
https://ccrma.stanford.edu/~ruviaro/temp/00_PDF_A_Gentle_Introduction_To_SuperCollider_LULU_2014-09-06.pdf

Source files (LaTeX):
https://github.com/brunoruviaro/A_Gentle_Introduction_To_SuperCollider

... and in case you'd like a nicely printed copy at cost value:
http://www.lulu.com/shop/bruno-ruviaro/a-gentle-introduction-to-supercollider/paperback/product-21802118.html

The title is a little homage to Touretzky's Common Lisp book, which I loved
when I read it years ago. This tutorial is also very much indebted to David
Cottle's intro chapter on the SuperCollider book.

Differently from other tutorials that I know, this one focuses a lot on
Patterns first, leaving UGens and synthesis for a bit later. Over the last
couple years I've found this to be a successful approach with my students
at Santa Clara University.

I consider this tutorial to be in "beta version" -- I'll try it for the
first time in a classroom situation this Fall, and probably will change
things over time. So I very much welcome feedback from anyone who cares to
read it -- anything from typos to possible mistakes, unclear explanations,
suggestions for nicer examples, etc.

And thank you all for making this list such a great learning resource!!!

Best,

Bruno
Laurence Counihan
2014-09-12 07:48:17 UTC
Permalink
This is really great!!
Post by Bruno Ruviaro
Hi all,
I would like to share with everyone this new SuperCollider tutorial I
wrote over the Summer. It's specifically written for total beginners, and
it's Creative Commons licensed, so feel free to share, copy, distribute,
https://ccrma.stanford.edu/~ruviaro/temp/00_PDF_A_Gentle_Introduction_To_SuperCollider_LULU_2014-09-06.pdf
https://github.com/brunoruviaro/A_Gentle_Introduction_To_SuperCollider
http://www.lulu.com/shop/bruno-ruviaro/a-gentle-introduction-to-supercollider/paperback/product-21802118.html
The title is a little homage to Touretzky's Common Lisp book, which I
loved when I read it years ago. This tutorial is also very much indebted to
David Cottle's intro chapter on the SuperCollider book.
Differently from other tutorials that I know, this one focuses a lot on
Patterns first, leaving UGens and synthesis for a bit later. Over the last
couple years I've found this to be a successful approach with my students
at Santa Clara University.
I consider this tutorial to be in "beta version" -- I'll try it for the
first time in a classroom situation this Fall, and probably will change
things over time. So I very much welcome feedback from anyone who cares to
read it -- anything from typos to possible mistakes, unclear explanations,
suggestions for nicer examples, etc.
And thank you all for making this list such a great learning resource!!!
Best,
Bruno
beryann
2014-09-12 08:55:53 UTC
Permalink
Hi bruno, great tutoriel! thanks....It takes a long time to write such a
document like this...Just a suggestion, there are some others goods
tutoriels for SC here and there and a very good thing would be to realize a
kind of mix for all newbies (or not!). I made mysefl a traduction of the
native help documents in SC (some of them) in french for my thesis and
sometimes i dream to collaborate (in anyway i can!) to a collective work
like this....!!
Anyway! Bravo Bruno!



--
View this message in context: http://new-supercollider-mailing-lists-forums-use-these.2681727.n2.nabble.com/A-Gentle-Introduction-to-SuperCollider-tp7613366p7613369.html
Sent from the SuperCollider Users New (Use this!!!!) mailing list archive at Nabble.com.

_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
felix
2014-09-12 13:19:11 UTC
Permalink
There is a list of tutorials here:

http://supercollider.github.io/tutorials/index.html

please feel free to add to the list.
Post by beryann
Hi bruno, great tutoriel! thanks....It takes a long time to write such a
document like this...Just a suggestion, there are some others goods
tutoriels for SC here and there and a very good thing would be to realize a
kind of mix for all newbies (or not!). I made mysefl a traduction of the
native help documents in SC (some of them) in french for my thesis and
sometimes i dream to collaborate (in anyway i can!) to a collective work
like this....!!
Anyway! Bravo Bruno!
--
http://new-supercollider-mailing-lists-forums-use-these.2681727.n2.nabble.com/A-Gentle-Introduction-to-SuperCollider-tp7613366p7613369.html
Sent from the SuperCollider Users New (Use this!!!!) mailing list archive at Nabble.com.
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
--
..
http://soundcloud.com/crucialfelix
http://github.com/crucialfelix
.
beryann
2014-09-12 13:47:47 UTC
Permalink
Hi Felix,

I am already registered...what are the next steps to upload my tutorial
files?

Beryann



--
View this message in context: http://new-supercollider-mailing-lists-forums-use-these.2681727.n2.nabble.com/A-Gentle-Introduction-to-SuperCollider-tp7613366p7613372.html
Sent from the SuperCollider Users New (Use this!!!!) mailing list archive at Nabble.com.

_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
kilon alios
2014-09-12 13:59:46 UTC
Permalink
this is the best tutorial I have seen for Supercollider and its quite
lengthy too, well done and thanks.
Post by beryann
Hi Felix,
I am already registered...what are the next steps to upload my tutorial
files?
Beryann
--
http://new-supercollider-mailing-lists-forums-use-these.2681727.n2.nabble.com/A-Gentle-Introduction-to-SuperCollider-tp7613366p7613372.html
Sent from the SuperCollider Users New (Use this!!!!) mailing list archive at Nabble.com.
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
joesh
2014-09-12 08:15:04 UTC
Permalink
Big thanks, looks very interesting, especially as I'm half way through the
Cottle book at the present - which is certainly a great book ... I should
add!



--
View this message in context: http://new-supercollider-mailing-lists-forums-use-these.2681727.n2.nabble.com/A-Gentle-Introduction-to-SuperCollider-tp7613366p7613368.html
Sent from the SuperCollider Users New (Use this!!!!) mailing list archive at Nabble.com.

_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Daniel Mayer
2014-09-12 13:06:45 UTC
Permalink
Hi Bruno,

great effort, I think it's a very good idea to introduce
things starting with this focus.
Of course I haven't gone through all yet, just one remark -
I think James mentioned it at some point:

When starting from the language side and having
Pbind in mind actually the Event is a basic thing,
ready for all the conversion convenience when played.
So to start the default synth one can do

(note: 0).play

To play it lasting:

(note: 0, type: \on).play

or

(note: 0, dur: inf).play


Now when thinking about it, you might have good reasons
to start rather with Pbind than Event, as with the latter we have
a quite exceptional syntax with parenthesis.

And just now I realize that creating an Event
with other syntax either looks strange ...

Event.newFrom([\note, 0]).play

... or forces to explain other quite exceptional syntax:

Event[\note -> 0]


But if it makes sense it could be mentioned -
I think it's an underestimated feature to start synths this way,
people who discover it, love it.

A very simple extension can make the whole thing more intuitive:

+Event {
on {
this[\dur] ?? { this.put(\dur, inf) };
^this.play
}
off { |releaseTime| ^this.release(releaseTime) }
}


So to start and stop a lasting synth with default instrument via an Event:

x = (note: 0).on

x.off


Recently I thought about a keyword shortcut mechanism for
events and event patterns, then you can e.g. play 5 seconds middle C with
instrument \sine like this:

(d: 5, n: 0, i: \sine).on

http://new-supercollider-mailing-lists-forums-use-these.2681727.n2.nabble.com/Event-synth-play-release-not-working-as-expected-td7613229.html

I revised above - now it works for all event types - and put
it in a class supporting customizable shortcut definitions, will document it.


Greetings

Daniel

-----------------------------
www.daniel-mayer.at
-----------------------------





_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Julian Rohrhuber
2014-09-12 19:17:19 UTC
Permalink
Post by Daniel Mayer
+Event {
on {
this[\dur] ?? { this.put(\dur, inf) };
^this.play
}
off { |releaseTime| ^this.release(releaseTime) }
}
x = (note: 0).on
x.off
I think something like this should be the standard. It makes it much easier to explain.

conceptually,

x = (note: 0, dur: inf).play;

is OK, I think?

x.release(dt)

should be ok, too?


_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Bruno Ruviaro
2014-09-12 19:36:54 UTC
Permalink
Hi all,

Thanks for all the comments!

@beryann: the very last section of the tutorial contains a small list of
other resources (tutorials, videos) for people to keep studying. I will
definitely keep that section growing.

@Daniel: great points about Event -- I might add a mention of it in the
next revision. In particular, I love the kind of extension you propose --
definitely would make it very intuitive to play single notes using the
Event mechanism!
And as you guessed, the reason I chose Pbind as the "center of attention"
is because it's the cleanest and most direct way I know to get people
composing simple musical sequences with minimal amount of up-front
explanation. Often in a first or second class I give my students some bare
bones indications about four objects only -- Pbind, Pseq, Prand, Pwhite --,
then I give them a nice-sounding Synthdef ("just use it, don't worry about
it now"), and in no time they are having genuine fun composing entire
pieces as first time users of a programming language. After that moment,
it's very easy to move forward... ;-) In the tutorial I am trying to
recreate that kind of moment for the reader.

@patrick: thanks! Yes, that analogy (score/player) comes in very handy...

Best,

Bruno

On Fri, Sep 12, 2014 at 12:17 PM, Julian Rohrhuber <
Post by Julian Rohrhuber
Post by Daniel Mayer
+Event {
on {
this[\dur] ?? { this.put(\dur, inf) };
^this.play
}
off { |releaseTime| ^this.release(releaseTime) }
}
So to start and stop a lasting synth with default instrument via an
x = (note: 0).on
x.off
I think something like this should be the standard. It makes it much easier to explain.
conceptually,
x = (note: 0, dur: inf).play;
is OK, I think?
x.release(dt)
should be ok, too?
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Kuivila, Ronald
2014-09-21 13:24:23 UTC
Permalink
Hi Bruno,

This looks like a wonderful addition. Here are a couple of quick thoughts

Right at the beginning you might have them evaluate either Server.default.makeWindow or s.makeWindow. This would give them a way to control
the volume of {SinOsc.ar<http://SinOsc.ar>}.play right away.

Also, a small library of SynthDefs to use in the patterns section will probably make it much more engaging for students and can provide a basis for the
synthesis section later on. These might be as simple as waveforms (sine, triangle, pulse, noise) with attack/decay parameters.

But, come to think of it, a library of patterns related synthdefs would also be a good github project….

Cheers,

RJK

On Sep 12, 2014, at 3:36 PM, Bruno Ruviaro <bruviaro-***@public.gmane.org<mailto:***@scu.edu>> wrote:

Hi all,

Thanks for all the comments!

@beryann: the very last section of the tutorial contains a small list of other resources (tutorials, videos) for people to keep studying. I will definitely keep that section growing.

@Daniel: great points about Event -- I might add a mention of it in the next revision. In particular, I love the kind of extension you propose -- definitely would make it very intuitive to play single notes using the Event mechanism!
And as you guessed, the reason I chose Pbind as the "center of attention" is because it's the cleanest and most direct way I know to get people composing simple musical sequences with minimal amount of up-front explanation. Often in a first or second class I give my students some bare bones indications about four objects only -- Pbind, Pseq, Prand, Pwhite --, then I give them a nice-sounding Synthdef ("just use it, don't worry about it now"), and in no time they are having genuine fun composing entire pieces as first time users of a programming language. After that moment, it's very easy to move forward... ;-) In the tutorial I am trying to recreate that kind of moment for the reader.

@patrick: thanks! Yes, that analogy (score/player) comes in very handy...

Best,

Bruno
Post by Daniel Mayer
+Event {
on {
this[\dur] ?? { this.put(\dur, inf) };
^this.play
}
off { |releaseTime| ^this.release(releaseTime) }
}
x = (note: 0).on
x.off
I think something like this should be the standard. It makes it much easier to explain.

conceptually,

x = (note: 0, dur: inf).play;

is OK, I think?

x.release(dt)

should be ok, too?


_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Bruno Ruviaro
2014-09-21 18:11:45 UTC
Permalink
Hi Ron,

Thanks for the feedback!

The volume gui is a good idea -- I'll include it a future version. Now that
I'm thinking of it, I just remembered s.volume.gui as well (which I learned
from this list!).

SynthDefs for patterns: the github idea for collecting pattern-ready
SynthDefs is great. In fact I have a loose collection of various synthdefs
that I often give to students soon after they learn patterns -- I'll throw
those in a repository later today, and perhaps we can collectively improve
from there?

Cheers,

Bruno
Post by Daniel Mayer
Hi Bruno,
This looks like a wonderful addition. Here are a couple of quick thoughts
Right at the beginning you might have them evaluate either
Server.default.makeWindow or s.makeWindow. This would give them a way to
control
the volume of {SinOsc.ar}.play right away.
Also, a small library of SynthDefs to use in the patterns section will
probably make it much more engaging for students and can provide a basis
for the
synthesis section later on. These might be as simple as waveforms (sine,
triangle, pulse, noise) with attack/decay parameters.
But, come to think of it, a library of patterns related synthdefs would
also be a good github project
.
Cheers,
RJK
Hi all,
Thanks for all the comments!
@beryann: the very last section of the tutorial contains a small list of
other resources (tutorials, videos) for people to keep studying. I will
definitely keep that section growing.
@Daniel: great points about Event -- I might add a mention of it in the
next revision. In particular, I love the kind of extension you propose --
definitely would make it very intuitive to play single notes using the
Event mechanism!
And as you guessed, the reason I chose Pbind as the "center of attention"
is because it's the cleanest and most direct way I know to get people
composing simple musical sequences with minimal amount of up-front
explanation. Often in a first or second class I give my students some bare
bones indications about four objects only -- Pbind, Pseq, Prand, Pwhite --,
then I give them a nice-sounding Synthdef ("just use it, don't worry about
it now"), and in no time they are having genuine fun composing entire
pieces as first time users of a programming language. After that moment,
it's very easy to move forward... ;-) In the tutorial I am trying to
recreate that kind of moment for the reader.
@patrick: thanks! Yes, that analogy (score/player) comes in very handy...
Best,
Bruno
On Fri, Sep 12, 2014 at 12:17 PM, Julian Rohrhuber <
Post by Julian Rohrhuber
Post by Daniel Mayer
+Event {
on {
this[\dur] ?? { this.put(\dur, inf) };
^this.play
}
off { |releaseTime| ^this.release(releaseTime) }
}
So to start and stop a lasting synth with default instrument via an
x = (note: 0).on
x.off
I think something like this should be the standard. It makes it much easier to explain.
conceptually,
x = (note: 0, dur: inf).play;
is OK, I think?
x.release(dt)
should be ok, too?
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Bruno Ruviaro
2014-09-22 01:45:47 UTC
Permalink
I have created a github repository to start collecting "pattern-ready"
SynthDefs. Still very crude --

https://github.com/brunoruviaro/SynthDefs-for-Patterns

B
Post by Bruno Ruviaro
Hi Ron,
Thanks for the feedback!
The volume gui is a good idea -- I'll include it a future version. Now
that I'm thinking of it, I just remembered s.volume.gui as well (which I
learned from this list!).
SynthDefs for patterns: the github idea for collecting pattern-ready
SynthDefs is great. In fact I have a loose collection of various synthdefs
that I often give to students soon after they learn patterns -- I'll throw
those in a repository later today, and perhaps we can collectively improve
from there?
Cheers,
Bruno
Post by Daniel Mayer
Hi Bruno,
This looks like a wonderful addition. Here are a couple of quick thoughts
Right at the beginning you might have them evaluate either
Server.default.makeWindow or s.makeWindow. This would give them a way to
control
the volume of {SinOsc.ar}.play right away.
Also, a small library of SynthDefs to use in the patterns section will
probably make it much more engaging for students and can provide a basis
for the
synthesis section later on. These might be as simple as waveforms (sine,
triangle, pulse, noise) with attack/decay parameters.
But, come to think of it, a library of patterns related synthdefs would
also be a good github project
.
Cheers,
RJK
Hi all,
Thanks for all the comments!
@beryann: the very last section of the tutorial contains a small list
of other resources (tutorials, videos) for people to keep studying. I will
definitely keep that section growing.
@Daniel: great points about Event -- I might add a mention of it in the
next revision. In particular, I love the kind of extension you propose --
definitely would make it very intuitive to play single notes using the
Event mechanism!
And as you guessed, the reason I chose Pbind as the "center of attention"
is because it's the cleanest and most direct way I know to get people
composing simple musical sequences with minimal amount of up-front
explanation. Often in a first or second class I give my students some bare
bones indications about four objects only -- Pbind, Pseq, Prand, Pwhite --,
then I give them a nice-sounding Synthdef ("just use it, don't worry about
it now"), and in no time they are having genuine fun composing entire
pieces as first time users of a programming language. After that moment,
it's very easy to move forward... ;-) In the tutorial I am trying to
recreate that kind of moment for the reader.
@patrick: thanks! Yes, that analogy (score/player) comes in very handy...
Best,
Bruno
On Fri, Sep 12, 2014 at 12:17 PM, Julian Rohrhuber <
Post by Julian Rohrhuber
Post by Daniel Mayer
+Event {
on {
this[\dur] ?? { this.put(\dur, inf) };
^this.play
}
off { |releaseTime| ^this.release(releaseTime) }
}
So to start and stop a lasting synth with default instrument via an
x = (note: 0).on
x.off
I think something like this should be the standard. It makes it much easier to explain.
conceptually,
x = (note: 0, dur: inf).play;
is OK, I think?
x.release(dt)
should be ok, too?
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
wallace
2014-09-22 08:23:22 UTC
Permalink
Hi all,

is it possible to use Pbind into a Synthdef?
If not, how can i create a function with some Pbind structures?


Marcello

_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Konstantinos Vasilakos
2014-09-22 08:40:10 UTC
Permalink
I am not sure what you mean by ‘into’. If you want to control or map some control values to a synthdef generated by a Pbind then the answer is yes. Without checking it, I would bet there are couple of examples doing it at the Pbind help file. Otherwise, check patterns cookbook.

Best
K.

On 22 Sep 2014, at 11:23 am, wallace <wallace-GaUfNO9RBHfsrOwW+***@public.gmane.org> wrote:

Hi all,

is it possible to use Pbind into a Synthdef?
If not, how can i create a function with some Pbind structures?


Marcello

_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
--
Best
Konstantinos

SuperCollider: 3.7 - OS: 10.9
Daniel Mayer
2014-09-23 18:24:17 UTC
Permalink
Post by Bruno Ruviaro
Hi all,
is it possible to use Pbind into a Synthdef?
If not, how can i create a function with some Pbind structures?
Hi,

some more info of what you're going to achieve would be helpful.
As SynthDef is for producing synthdefs to be used server-side
and Pbind is a language-side construct I don't get the connection.
Many ways on the other hand to combine Functions and Pbinds,
but what should be done ?

Greetings

Daniel

-----------------------------
www.daniel-mayer.at
-----------------------------




_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Lucas Samaruga
2014-09-27 05:51:03 UTC
Permalink
Hi

The demand rate ugens (e.g. Dseq) has some kind of pattern like
structure... but server side, not events just control signals.

best
lucas
Post by Daniel Mayer
Post by Bruno Ruviaro
Hi all,
is it possible to use Pbind into a Synthdef?
If not, how can i create a function with some Pbind structures?
Hi,
some more info of what you're going to achieve would be helpful.
As SynthDef is for producing synthdefs to be used server-side
and Pbind is a language-side construct I don't get the connection.
Many ways on the other hand to combine Functions and Pbinds,
but what should be done ?
Greetings
Daniel
-----------------------------
www.daniel-mayer.at
-----------------------------
_______________________________________________
sc-users mailing list
http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Kuivila, Ronald
2014-09-22 12:33:52 UTC
Permalink
On Sep 21, 2014, at 2:11 PM, Bruno Ruviaro <bruviaro-***@public.gmane.org<mailto:***@scu.edu>> wrote:

Hi Ron,

Thanks for the feedback!

The volume gui is a good idea -- I'll include it a future version. Now that I'm thinking of it, I just remembered s.volume.gui as well (which I learned from this list!).

never used it, but trying just now I notice it prints to the post window. (There is a call to debug in a SimpleController it generates.)

SynthDefs for patterns: the github idea for collecting pattern-ready SynthDefs is great. In fact I have a loose collection of various synthdefs that I often give to students soon after they learn patterns -- I'll throw those in a repository later today, and perhaps we can collectively improve from there?


sounds good - let me know when you put it up there.

RJK


Cheers,

Bruno




On Sun, Sep 21, 2014 at 6:24 AM, Kuivila, Ronald <rkuivila-KaPM4R2U43T2fBVCVOL8/***@public.gmane.org<mailto:rkuivila-KaPM4R2U43T2fBVCVOL8/***@public.gmane.org>> wrote:
Hi Bruno,

This looks like a wonderful addition. Here are a couple of quick thoughts

Right at the beginning you might have them evaluate either Server.default.makeWindow or s.makeWindow. This would give them a way to control
the volume of {SinOsc.ar<http://sinosc.ar/>}.play right away.

Also, a small library of SynthDefs to use in the patterns section will probably make it much more engaging for students and can provide a basis for the
synthesis section later on. These might be as simple as waveforms (sine, triangle, pulse, noise) with attack/decay parameters.

But, come to think of it, a library of patterns related synthdefs would also be a good github project….

Cheers,

RJK

On Sep 12, 2014, at 3:36 PM, Bruno Ruviaro <bruviaro-***@public.gmane.org<mailto:***@scu.edu>> wrote:

Hi all,

Thanks for all the comments!

@beryann: the very last section of the tutorial contains a small list of other resources (tutorials, videos) for people to keep studying. I will definitely keep that section growing.

@Daniel: great points about Event -- I might add a mention of it in the next revision. In particular, I love the kind of extension you propose -- definitely would make it very intuitive to play single notes using the Event mechanism!
And as you guessed, the reason I chose Pbind as the "center of attention" is because it's the cleanest and most direct way I know to get people composing simple musical sequences with minimal amount of up-front explanation. Often in a first or second class I give my students some bare bones indications about four objects only -- Pbind, Pseq, Prand, Pwhite --, then I give them a nice-sounding Synthdef ("just use it, don't worry about it now"), and in no time they are having genuine fun composing entire pieces as first time users of a programming language. After that moment, it's very easy to move forward... ;-) In the tutorial I am trying to recreate that kind of moment for the reader.

@patrick: thanks! Yes, that analogy (score/player) comes in very handy...

Best,

Bruno
Post by Daniel Mayer
+Event {
on {
this[\dur] ?? { this.put(\dur, inf) };
^this.play
}
off { |releaseTime| ^this.release(releaseTime) }
}
x = (note: 0).on
x.off
I think something like this should be the standard. It makes it much easier to explain.

conceptually,

x = (note: 0, dur: inf).play;

is OK, I think?

x.release(dt)

should be ok, too?


_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Nick Collins
2014-09-27 14:27:04 UTC
Permalink
Post by Kuivila, Ronald
Post by Kuivila, Ronald
SynthDefs for patterns: the github idea for collecting pattern-ready SynthDefs is great. In fact I have a loose collection of various synthdefs that I often give to students soon after they learn patterns -- I'll throw those in a repository later today, and perhaps we can collectively improve from there?
sounds good - let me know when you put it up there.
Aside from other examples with SC, and the sccode website, with SC app under examples/demonstrations/stealthissound.scd you'll find a bunch of pattern ready SynthDefs with pattern control examples that are relatively developed, relating to the 'Steal this Sound' book, in case that helps.

You could also link to:
http://composerprogrammer.com/teaching/supercollider/sctutorial/tutorial.html
in the 'other tutorials'

best,
N
Bruno Ruviaro
2014-09-27 18:26:41 UTC
Permalink
Thanks -- great suggestions! I added them to my to-do lists on github.

B
Post by Bruno Ruviaro
SynthDefs for patterns: the github idea for collecting pattern-ready
SynthDefs is great. In fact I have a loose collection of various synthdefs
that I often give to students soon after they learn patterns -- I'll throw
those in a repository later today, and perhaps we can collectively improve
from there?
sounds good - let me know when you put it up there.
Aside from other examples with SC, and the sccode website, with SC app
under examples/demonstrations/stealthissound.scd you'll find a bunch of
pattern ready SynthDefs with pattern control examples that are relatively
developed, relating to the 'Steal this Sound' book, in case that helps.
http://composerprogrammer.com/teaching/supercollider/sctutorial/tutorial.html
in the 'other tutorials'
best,
N
Daniel W. Delâtre
2014-09-12 15:35:09 UTC
Permalink
Brilliant job, many thanks!
Post by Bruno Ruviaro
Hi all,
over the Summer. It's specifically written for total beginners, and it's
Creative Commons licensed, so feel free to share, copy, distribute,
https://ccrma.stanford.edu/~ruviaro/temp/00_PDF_A_Gentle_Introduction_To_SuperCollider_LULU_2014-09-06.pdf
https://github.com/brunoruviaro/A_Gentle_Introduction_To_SuperCollider
http://www.lulu.com/shop/bruno-ruviaro/a-gentle-introduction-to-supercollider/paperback/product-21802118.html
The title is a little homage to Touretzky's Common Lisp book, which I loved
when I read it years ago. This tutorial is also very much indebted to David
Cottle's intro chapter on the SuperCollider book.
Differently from other tutorials that I know, this one focuses a lot on
Patterns first, leaving UGens and synthesis for a bit later. Over the last
couple years I've found this to be a successful approach with my students
at Santa Clara University.
I consider this tutorial to be in "beta version" -- I'll try it for the
first time in a classroom situation this Fall, and probably will change
things over time. So I very much welcome feedback from anyone who cares to
read it -- anything from typos to possible mistakes, unclear explanations,
suggestions for nicer examples, etc.
And thank you all for making this list such a great learning resource!!!
Best,
Bruno
patrick
2014-09-12 19:33:23 UTC
Permalink
Thank you Bruno for this great tutorial!

I like how you deal with Pbind and EventStreamPlayer. It's definitely
confusing how calling play on a Pbind works, but not stop. Indeed, it
doesn't make much sense to tell the score to stop playing :)

Cheers,

Patrick





--
View this message in context: http://new-supercollider-mailing-lists-forums-use-these.2681727.n2.nabble.com/A-Gentle-Introduction-to-SuperCollider-tp7613366p7613384.html
Sent from the SuperCollider Users New (Use this!!!!) mailing list archive at Nabble.com.

_______________________________________________
sc-users mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: http://www.listarc.bham.ac.uk/marchives/sc-users/
search: http://www.listarc.bham.ac.uk/lists/sc-users/search/
Loading...