<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:og="http://ogp.me/ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:schema="http://schema.org/" xmlns:sioc="http://rdfs.org/sioc/ns#" xmlns:sioct="http://rdfs.org/sioc/types#" xmlns:skos="http://www.w3.org/2004/02/skos/core#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" version="2.0" xml:base="https://www.linuxjournal.com/tag/programming-language">
  <channel>
    <title>programming language</title>
    <link>https://www.linuxjournal.com/tag/programming-language</link>
    <description/>
    <language>en</language>
    
    <item>
  <title>Super Collision At Studio Dave: The New World Of SuperCollider3, Part 3</title>
  <link>https://www.linuxjournal.com/content/super-collision-studio-dave-new-world-supercollider3-part-3</link>
  <description>  &lt;div data-history-node-id="1024148" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-field-node-image field--type-image field--label-hidden field--item"&gt;  &lt;img src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/Puredyne-supercollider-eee_0.png" width="640" height="384" alt="An image of SuperCollider running in the Puredyne distro." title="SuperCollider running in the Puredyne distro." typeof="foaf:Image" class="img-responsive" /&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/dave-phillips" lang="" about="https://www.linuxjournal.com/users/dave-phillips" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Dave Phillips&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;&lt;strong&gt;Advanced Use&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The examples in the previous parts of this series should be fairly intelligible to someone with a background in Csound or a similar MusicN-derived language. They demonstrate a few basic principles of SuperCollider's linguistic elements, but they miss most of what's most interesting about the environment. In fact, SuperCollider's debt to the MusicN heritage is relatively small, and its design considerations have been differently ordered. From its inception SuperCollider has favored realtime operations in an interactive environment. On the server side the design has nurtured a high-performance audio synthesis/processing engine. On the client side the control language has developed many elements either not clearly defined or not present in other computer music systems. An in-depth presentation is not possible in this article, but we can catch a glimpse of some of SuperCollider's more advanced features. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Of Tasks, Routines, Patterns, And Streams&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We've already met a Task in our prettified example of a synth-plus-GUI. Tasks and Routines are closely related mechanisms often found working together in SuperCollider code. A Routine is a function with stop/resume capability, while a Task is a process with similar charactistics, i.e. it is a pausable process. Our synth GUI example in Part 2 showed off a typical combination of Routine and Task, the SuperCollider documentation includes many others.&lt;/p&gt;
&lt;p&gt;Routines are also closely related to Patterns. Musicians are accustomed to the term "pattern", but it means something unique in SuperCollider, where a Pattern is &lt;/p&gt;
&lt;p&gt;&lt;em&gt;"... an object that responds to asStream and embedInStream. A Pattern defines the behavior of a Stream and creates such streams in response to the messages asStream. The difference between a Pattern and a Stream is similar to the difference between a score and a performance of that score or a class and an instance of that class. All objects respond to this interface, most by returning themselves. So most objects are patterns that define streams that are an infinite sequence of the object and embed as singleton streams of that object returned once."&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;To the typical musician that explanation is probably about as clear as mud. Have no fear, illustrative examples abound in the SuperCollider documentation and elsewhere, but before we display one let's find out what's a Stream in SuperCollider-speak. The docs say this about it :&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/super-collision-studio-dave-new-world-supercollider3-part-3" hreflang="und"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Wed, 31 Aug 2011 14:00:00 +0000</pubDate>
    <dc:creator>Dave Phillips</dc:creator>
    <guid isPermaLink="false">1024148 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>The SuperCollider Book: A Review</title>
  <link>https://www.linuxjournal.com/content/supercollider-book-review</link>
  <description>  &lt;div data-history-node-id="1024175" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-field-node-image field--type-image field--label-hidden field--item"&gt;  &lt;img src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/sc3-book-cover.jpg" width="357" height="400" alt="An image of SuperCollider book." title="The SuperCollider Book" typeof="foaf:Image" class="img-responsive" /&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/dave-phillips" lang="" about="https://www.linuxjournal.com/users/dave-phillips" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Dave Phillips&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;&lt;strong&gt;The Book&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As a final flourish to my series on the SuperCollider audio programmng environment I present this review of &lt;a href="http://supercolliderbook.net/"&gt;The SuperCollider Book&lt;/a&gt;, a collective work edited by SuperCollider gurus Scott Wilson, David Cottle, and Nick Collins, and published by the MIT Press. This marvelous tome contains twenty-six chapters written by some of the leading lights of the SuperCollider community. As expected, they cover a wide range of topics, neatly organized into the following major divisions :&lt;/p&gt;
&lt;p&gt;  Tutorials&lt;br /&gt;  Advanced Tutorials&lt;br /&gt;  Platforms and GUI&lt;br /&gt;  Practical Applications&lt;br /&gt;  Projects and Perspectives&lt;br /&gt;  Developer Topics&lt;/p&gt;
&lt;p&gt;Each section includes up to six chapters detailing the division topic. The chapters are loaded with practical information, the writing is clear and well-edited, and the writers all convey their great enthusiasm for SuperCollider and its possibilities.&lt;/p&gt;
&lt;p&gt;I've been absorbed by the book since I got it. I haven't read everything in it yet - it's a big book, and I'm bouncing between it and various Web-based materials - but I've read enough of it to offer an opinion or two. With regards to my summary judgement, I'll just skip to the spoiler and tell my readers that this book is a must-have for any SuperCollider user and highly recommended as a general resource for anyone interesting in computer music programming and production.&lt;/p&gt;
&lt;p&gt;This book is definitely not a SuperCollider For Dummies. If you know absolutely nothing about the language I suggest reading first the &lt;a href="http://en.wikipedia.org/wiki/SuperCollider"&gt;Wikipedia page on SuperCollider&lt;/a&gt; to get a sense of the language design and some of its typical purposes. With that information in mind, new users should begin the book by reading the Beginner's Tutorial by David Cottle. Follow his recommendations (i.e. install, configure, start, and use SuperCollider), then read and follow the whole tutorial again. It has a few OSX-specific parts Linux users can safely ignore, and his presentation sails along briskly, but the chapter is an excellent general introduction to SuperCollider. It's a hands-on tutorial, and though you might not understand completely how or why things work you will have seen and heard a small sample of SuperCollider's power and how to use it.&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/supercollider-book-review" hreflang="und"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Mon, 29 Aug 2011 15:08:26 +0000</pubDate>
    <dc:creator>Dave Phillips</dc:creator>
    <guid isPermaLink="false">1024175 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>Super Collision At Studio Dave: The New World Of SuperCollider3, Part 2</title>
  <link>https://www.linuxjournal.com/content/super-collision-studio-dave-new-world-supercollider3-part-2</link>
  <description>  &lt;div data-history-node-id="1022844" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-field-node-image field--type-image field--label-hidden field--item"&gt;  &lt;img src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/sc3-graph.png" width="344" height="246" alt="sc3_graph.png" title="scsynth and sclang equals a synthdef" typeof="foaf:Image" class="img-responsive" /&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/dave-phillips" lang="" about="https://www.linuxjournal.com/users/dave-phillips" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Dave Phillips&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;In the first part of this series I introduced SuperCollider3 and its most basic operations. Now let's make things a little more interesting by adding a little randomization, a neat GUI, and some MIDI control.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Creating A GUI&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Let's add a simple GUI to control the synthesizer. We'll employ the services of a SuperCollider Quark called AutoGui to make things easy for us novices :&lt;/p&gt;
&lt;pre&gt;&lt;em&gt;    &lt;/em&gt;a = SynthDef(\sinetest, {arg out = 1, freq = 440; Out.ar(out, SinOsc.ar(freq))}) ;
    z = SynthDefAutogui(\sinetest, scopeOn:false) ;&lt;/pre&gt;&lt;p&gt;Easy, just two lines of code to produce the synthesizer control panel seen in Figure 1.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://www.linuxjournal.com/files/linuxjournal.com/ufiles/u800764/sc3-autogui.png" height="215" width="282" /&gt;&lt;/p&gt;
&lt;p&gt;Figure 1. SuperCollider's AutoGui Quark at work.&lt;/p&gt;
&lt;p&gt;As its name implies, the AutoGui class automatically creates a GUI to represent the elements of a SynthDef, i.e. a SuperCollider synthesizer definition. In the example, the SynthDef is built from our simple synth and an added output channel setter. AutoGui performs its magic on the SynthDef, and voila, we have a synthesizer with a graphic control panel, made with two lines of SuperCollider code.&lt;/p&gt;
&lt;p&gt;AutoGui is one of many realizations of SuperCollider's GUI capabilities. Other interesting manifestations include Fredrik Olofsson's red* quarks, James Harkins' dewdrop library, the Crucial extensions, and the EZ-GUI classes. As in other aspects of the system, SuperCollider gives you more than one way to do the job.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;img alt="photo of the hadron quark" src="http://www.linuxjournal.com/files/linuxjournal.com/ufiles/u800764/sc-hadron-small.jpg" height="309" width="550" /&gt;&lt;/p&gt;
&lt;p&gt;Figure 2. The Hadron Quark on display. (&lt;a href="http://linux-sound.org/images/sc-hadron.png"&gt;Full size&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Before leaving our simple example let's look at something with a more ambitious GUI. Figure 2 shows off Batuhan Bozkurt's Hadron, a SuperCollider quark that include various GUI components. At first Hadron looks a little like SuperCollider in Pd's clothing, but Hadron is a personal system, not a general-purpose GUI. Like most examples of a SuperCollider GUI Hadron was designed originally for its creator's specific purposes, and thanks to its broader utility it's been packaged as a quark for other users to explore. My first experiments included the addition of more synths and effects processors on my canvas layout - with all states saveable and loadable - and I've started to look into the guidelines for writing my own Hadron plugins.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notes On Notes&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;By now the sound designer might be a little interested in SuperCollider, but the composer might be wondering what the fuss is all about. Our tiny example merely plays a sine wave at a single frequency and a default amplitude value. However, consider the following code :&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/super-collision-studio-dave-new-world-supercollider3-part-2" hreflang="und"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Tue, 09 Aug 2011 17:55:10 +0000</pubDate>
    <dc:creator>Dave Phillips</dc:creator>
    <guid isPermaLink="false">1022844 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>Super Collision At Studio Dave: The New World of SuperCollider3, Part 1</title>
  <link>https://www.linuxjournal.com/content/super-collision-studio-dave-new-world-supercollider3-part-1</link>
  <description>  &lt;div data-history-node-id="1022755" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-field-node-image field--type-image field--label-hidden field--item"&gt;  &lt;img src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/supercollider.png" width="400" height="400" alt="" typeof="foaf:Image" class="img-responsive" /&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/dave-phillips" lang="" about="https://www.linuxjournal.com/users/dave-phillips" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Dave Phillips&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;&lt;strong&gt;SuperCollider3&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://supercollider.sourceforge.net/"&gt;SuperCollider&lt;/a&gt; is composer/programmer James McCartney's gift to the world of open-source audio synthesis/composition environments. In its current manifestation, SuperCollider3 includes capabilities for a wide variety of sound synthesis and signal processing methods, cross-platform integrated GUI components for designing interfaces for interactive performance, support for remote control by various external devices, and a rich set of tools for algorithmic music and sound composition. And yes, there's more, much more.&lt;/p&gt;
&lt;p&gt;This 3-part article combines a preview of SuperCollider 3.5 and a review of &lt;a href="http://supercolliderbook.net/"&gt;The SuperCollider Book&lt;/a&gt;, the latest audio-related tome from the press at MIT. I'll introduce the system and some of its components, with example code and screenshots (I love screenshots), then I'll be your tour guide to some interesting SuperCollider projects and Web sites. I'll conclude with a summary of my impressions of SuperCollider, followed by my review of The SuperCollider Book.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Background Bits&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In 1996, SuperCollider was released as a closed-source commercial program available only for the Macintosh computer. In 2002 the source code was released to the public under the GPL. Since then development has been consistent and impressive, and the system is now available for Linux, Mac OSX, and Windows, with a high level of cross-platform compatibility.&lt;/p&gt;
&lt;p&gt;SuperCollider has been designed as a client/server arrangement, with a clean division between its audio processing parts (&lt;em&gt;scsynth&lt;/em&gt;) and the language used to control those parts (&lt;em&gt;sclang&lt;/em&gt;). In a typical application the synthesizer is started in a separate process, then the user writes code in a text editor (e.g. Emacs, Gedit, vi/vim) configured for operation with SuperCollider. The editor configuration usually includes mechanisms for controlling the server state and for sending code to the synthesizer for rendering, often as a realtime process. &lt;/p&gt;
&lt;p&gt;A complete list of SuperCollider's capabilities would be beyond the scope of this article. Synthesis primitives are well-represented by a variety of oscillators, filters, effects, and control mechanisms (envelopes, gates, triggers). SuperCollider has borrowed the unit generator concept - i.e. an audio processing "black box" - from the MusicN languages. Users combine unit generators to roll their own synthesis and processing graphs into what SuperCollider calls a &lt;em&gt;SynthDef&lt;/em&gt;. Many predefined SynthDefs are available, and it's easy to create your own. &lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/super-collision-studio-dave-new-world-supercollider3-part-1" hreflang="und"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Mon, 25 Jul 2011 13:00:00 +0000</pubDate>
    <dc:creator>Dave Phillips</dc:creator>
    <guid isPermaLink="false">1022755 at https://www.linuxjournal.com</guid>
    </item>

  </channel>
</rss>
