[musicians-guide] made several final revisions to make the Guide publishable

crantila crantila at fedoraproject.org
Tue Sep 7 03:33:04 UTC 2010


commit f1e848347d4017a01427a43a800db864c75a3124
Author: Christopher Antila <crantila at fedoraproject.org>
Date:   Mon Sep 6 23:25:48 2010 -0400

    made several final revisions to make the Guide publishable

 en-US/Audacity.xml                                |   47 +-
 en-US/Book_Info.xml                               |    2 +-
 en-US/LilyPond/LilyPond-counterpoint.xml          |    6 +-
 en-US/LilyPond/LilyPond-orchestra.xml             |    8 +-
 en-US/LilyPond/LilyPond-piano.xml                 |    6 +-
 en-US/Musicians_Guide.ent                         |    2 +
 en-US/Musicians_Guide.xml                         |   13 +
 en-US/Planet_CCRMA_at_Home.xml                    |    2 +-
 en-US/Revision_History.xml                        |   42 ++-
 en-US/Solfege.xml                                 |    2 +-
 en-US/Sound_Servers.xml                           |    6 +-
 en-US/SuperCollider/SuperCollider-Composing.xml   |   12 +-
 en-US/files/Audacity/Audacity-end.tar.lzma        |  Bin 0 -> 9575559 bytes
 en-US/files/Audacity/Audacity-export.flac         |  Bin 0 -> 2674611 bytes
 en-US/files/Audacity/Audacity-start.tar.lzma      |  Bin 0 -> 15898532 bytes
 en-US/files/LilyPond/Counterpoint-result.pdf      |  Bin 0 -> 38798 bytes
 en-US/files/LilyPond/Counterpoint-source.ly       |   60 +++
 en-US/files/LilyPond/Orchestra-result.pdf         |  Bin 0 -> 286215 bytes
 en-US/files/LilyPond/Orchestra-source.ly          |  418 ++++++++++++++++
 en-US/files/LilyPond/Piano-result.pdf             |  Bin 0 -> 673317 bytes
 en-US/files/LilyPond/Piano-source.ly              |  531 +++++++++++++++++++++
 en-US/files/SuperCollider/Method_One-optimized.sc |  105 ++++
 en-US/files/SuperCollider/Method_One.flac         |  Bin 0 -> 4396249 bytes
 en-US/files/SuperCollider/Method_One.sc           |  271 +++++++++++
 24 files changed, 1475 insertions(+), 58 deletions(-)
---
diff --git a/en-US/Audacity.xml b/en-US/Audacity.xml
index 0d9ba76..bbac4b2 100644
--- a/en-US/Audacity.xml
+++ b/en-US/Audacity.xml
@@ -33,10 +33,10 @@
 				Audacity uses several "libraries."  Libraries are incomplete programs that add capabilities to other programs or applications.  Libraries can be shared between programs.  The libraries needed by Audacity will be installed automatically.
 			</para>
 			<para>
-				The version of Audacity from the Fedora repository does not use an MP3 library.  If you do not want to use MP3 files with Audacity, you should follow the !!L!!Standard Installation!!L!! instructions.  If you want to use MP3 files with Audacity, you should follow the !!L!!MP3-Enabled Instructions!!L!!.
+				The version of Audacity from the Fedora repository does not use an MP3 library.  If you do not want to use MP3 files with Audacity, you should follow the instructions in <xref linkend="sect-Musicians_Guide-Audacity-Installation" />.  If you want to use MP3 files with Audacity, you should follow the instructions in <xref linkend="sect-Musicians_Guide-Audacity-Installation_with_RPM_Fusion" />.
 			</para>
 			<para>
-				Audacity can use the JACK Audio Connection Kit.  You should install JACK before installing Audacity.  Follow the instructions !!L!! here !!L!! to install JACK.  We recommend using Audacity without JACK, but JACK is installed whether or not you use it.
+				Audacity can use the JACK Audio Connection Kit.  You should install JACK before installing Audacity.  Follow the instructions in <xref linkend="sect-Musicians_Guide-Install_and_Configure_JACK" /> to install JACK.  We recommend using Audacity without JACK, but JACK is installed whether or not you use it.
 			</para>
 		</section>
 		<section id="sect-Musicians_Guide-Audacity-Hardware_Requirements">
@@ -52,7 +52,7 @@
 				<orderedlist>
 				<listitem><para>Use PackageKit or KPackageKit to install the <code>audacity</code> package.</para></listitem>
 				<listitem><para>The proposed installation includes Audacity and all of the libraries that Audacity uses.  Continue installing Audacity by reviewing and approving the proposed installation.</para></listitem>
-				<listitem><para>Audacity configures itself automatically, but it may not use the configuration you want.  You need to test Audacity before recording, so that you know that it works.  Follow the instructions in !!L!!here!!L!! to test Audacity.</para></listitem>
+				<listitem><para>Audacity configures itself automatically, but it may not use the configuration you want.  You need to test Audacity before recording, so that you know that it works.  Follow the instructions in <xref linkend="sect-Musicians_Guide-Audacity-Testing_Playback" /> and <xref linkend="sect-Musicians_Guide-Audacity-Testing_Recording" /> to test Audacity.</para></listitem>
 				</orderedlist>
 			</para>
 		</section>
@@ -64,7 +64,7 @@
 				<listitem><para>Run this command in a terminal: <command>su -c 'yum localinstall --nogpgcheck http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm'</command></para></listitem>
 				<listitem><para>Use PackageKit or KPackageKit to install the <code>audacity-freeworld</code> package.</para></listitem>
 				<listitem><para>The proposed installation includes Audacity and all of the libraries that Audacity uses.  Continue installing Audacity by reviewing and approving the proposed installation.</para></listitem>
-				<listitem><para>Audacity configures itself automatically, but it may not use the configuration you want.  You need to test Audacity before recording, so that you know that it works.  Follow the instructions in !!L!!here!!L!! to test Audacity.</para></listitem>
+				<listitem><para>Audacity configures itself automatically, but it may not use the configuration you want.  You need to test Audacity before recording, so that you know that it works.  Follow the instructions in <xref linkend="sect-Musicians_Guide-Audacity-Testing_Playback" /> and <xref linkend="sect-Musicians_Guide-Audacity-Testing_Recording" /> to test Audacity.</para></listitem>
 				</orderedlist>
 			</para>
 		</section>
@@ -77,7 +77,7 @@
 				<step><para>Open the <literal>/usr/share/sounds/alsa/Noise.wav</literal> file.  This file is designed for testing audio equipment.</para></step>
 				<step><para>Play the file as many times as you need.  Adjust the volume of your audio interface and speakers while the file is playing.</para></step>
 				<step><para>If you cannot hear sound when the file is played, check that your audio interface and speakers are correctly connected and powered on.</para></step>
-				<step><para>If you still cannot hear sound when the file is played, see the !!L!!"Configuring Audacity to Use Your Hardware" section!!L!!.</para></step>
+				<step><para>If you still cannot hear sound when the file is played, see <xref linkend="sect-Musicians_Guide-Audacity-Configure_to_Use_Your_Hardware" />.</para></step>
 			</procedure>
 		</section>
 		<section id="sect-Musicians_Guide-Audacity-Testing_Recording">
@@ -90,11 +90,11 @@
 				<step><para>Sing, talk, or make noise into the microphone.  The volume level meter should show moving red bars.</para></step>
 				<step><para>Adjust the volume of the recording inputs on your audio interface.  When there is no noise, the moving red bars should be very small.</para></step>
 				<step><para>If you do not see moving red bars in the volume level meter, check that your audio interface and microphone are correctly connected and powered on.  If your equipment was not properly connected, adjust the volume of the recording inputs on your audio interface now.</para></step>
-				<step><para>If you still do not see moving red bars, see the !!L!!"Configuring Audacity to Use Your Hardware" section!!L!!.</para></step>
+				<step><para>If you still do not see moving red bars, see <xref linkend="sect-Musicians_Guide-Audacity-Configure_to_Use_Your_Hardware" />.</para></step>
 				<step><para>Click the <guibutton>Record</guibutton> button to start a test recording.  Sing, talk, or make noise into the microphone.</para></step>
 				<step><para>After a few seconds, click the <guibutton>Stop</guibutton> button to stop the test recording.</para></step>
 				<step><para>Click the <guibutton>Play</guibutton> button to hear the recorded audio.</para></step>
-				<step><para>If the recording sounds bad, you configure Audacity manually.  See the !!L!!"Configuring Audacity to Use Your Hardware" section!!L!!.</para></step>
+				<step><para>If the recording sounds bad, you configure Audacity manually.  See <xref linkend="sect-Musicians_Guide-Audacity-Configure_to_Use_Your_Hardware" />.</para></step>
 			</procedure>
 		</section>
 		
@@ -106,7 +106,7 @@
 		<section id="sect-Musicians_Guide-Audacity-First_Use">
 			<title>When You Run Audacity for the First Time</title>
 			<para>
-				When you run Audacity for the first time, you will be asked to select a language to use for the interface.  Before you use Audacity, we encourage you to follow the post-installation test instructions above, in the !!L!!whatever section!!L!! above.
+				When you run Audacity for the first time, you will be asked to select a language to use for the interface.  Before you use Audacity, we encourage you to follow the post-installation test instructions above.
 			</para>
 		</section>
 		<section id="sect-Musicians_Guide-Audacity-Configure_to_Use_Your_Hardware">
@@ -147,7 +147,7 @@
 		<section id="sect-Musicians_Guide-Audacity-Setting_Sample_Rate_and_Format">
 			<title>Setting the Project's Sample Rate and Format</title>
 			<para>
-				You can change the sample rate and sample format (see !!L!!here!!L!! for definitions).  You should set the sample rate and sample format when you begin working on a project.  You should not change the sample rate or sample format after you record audio.  If you will use audio files that already exist, you should use the sample rate and sample format of the existing files.
+				You can change the sample rate and sample format (see <xref linkend="sect-Musicians_Guide-Sample_Rate_and_Sample_Format" /> for definitions).  You should set the sample rate and sample format when you begin working on a project.  You should not change the sample rate or sample format after you record audio.  If you will use audio files that already exist, you should use the sample rate and sample format of the existing files.
 			</para>
 			<procedure>
 				<step><para>Choose <menuchoice><guimenu>File</guimenu> <guimenuitem>Preferences</guimenuitem></menuchoice> to open the "Preferences" window.</para></step>
@@ -161,10 +161,13 @@
 		<title>The Interface</title>
 		<!-- [[File:FMG-Audacity-Interface.xcf]] -->
 		<para>
-			!!P!! [[File:FMG-Audacity-Interface.png]] !!P!!
+			<inlinemediaobject><imageobject>
+				<!-- [[File:FMG-Audacity-Interface.png]] -->
+				<imagedata fileref="./images/FMG-Audacity-Interface.png" format="PNG" />
+				</imageobject></inlinemediaobject>
 		</para>
 		<para>
-			Refer to !!F!! example !!F!! as you read about the user interface of Audacity.
+			Refer to the image above as you read about the user interface of Audacity.
 			<itemizedlist>
 			<listitem><para>The "transport controls" play, stop, or pause playback of audio.  The buttons to record and move quickly through a file are also located here.</para></listitem>
 			<listitem><para>The "tool-selection box" changes the cursor's function.</para></listitem>
@@ -176,7 +179,7 @@
 			</itemizedlist>
 		</para>
 		<para>
-			The !!L!! DAW chapter !!L!! contains more information about the Audacity user interface.  That chapter defines the purpose and use of many user interface components.
+			<xref linkend="chap-Musicians_Guide-Digital_Audio_Workstations" /> contains more information about the Audacity user interface.  That chapter defines the purpose and use of many user interface components.
 		</para>
 	</section>
 	
@@ -192,8 +195,8 @@
 				This procedure can be used whether you want to record from microphones or from another application on your computer.
 			</para>
 			<procedure>
-				<step><para>Prepare your computer to record.  Connect the microphones you want to use, and test them.  See !!L!! here !!L!! for instructions to test your equipment.</para></step>
-				<step><para>Check the sample rate and sample format.  See !!L!! this section !!L!! for instructions to change the sample rate and sample format.</para></step>
+				<step><para>Prepare your computer to record.  Connect the microphones you want to use, and test them.  See <xref linkend="sect-Musicians_Guide-Audacity-Testing_Playback" /> and <xref linkend="sect-Musicians_Guide-Audacity-Testing_Recording" /> for instructions to test your equipment.</para></step>
+				<step><para>Check the sample rate and sample format.  See <xref linkend="sect-Musicians_Guide-Audacity-Setting_Sample_Rate_and_Format" /> for instructions to change the sample rate and sample format.</para></step>
 				<step><para>The <guibutton>Record</guibutton> button shows a red circle.  When you are ready to record, click the <guibutton>Record</guibutton> button.</para></step>
 				<step><para>The <guibutton>Stop</guibutton> button shows an orange square.  Click the <guibutton>Stop</guibutton> button to stop the recorder.</para></step>
 				<step><para>* Audacity displays the recorded audio in the timeline of a track, as a blue, sound-wave-like shape that represents the volume level.  Audacity sometimes displays the blue shape immediately, and sometimes only after you click <guibutton>Stop</guibutton>.  When Audacity does not show the blue shape immediately, it does not have enough processor power, and decides to process the audio instead of the blue shape.</para></step>
@@ -235,21 +238,13 @@
 		<section id="sect-Musicians_Guide-Audacity-Tutorial-Files">
 			<title>Files for the Tutorial</title>
 			<para>
-				Use the <literal>Tutorial Start</literal> file if you want to do the tutorial.  The <literal>Tutorial Finish</literal> file and <literal>Exported FLAC</literal> file are completed examples.  When you finish the tutorial, your project will probably not be the same as ours.
+				Use the <citetitle>Tutorial Start</citetitle> file if you want to do the tutorial.  The <citetitle>Tutorial End</citetitle> file and <citetitle>Exported FLAC</citetitle> file are completed examples.  When you finish the tutorial, your project will probably not be the same as ours.
 				<itemizedlist>
-				<listitem><para>[[File:FMG-audacity_start.tar.lzma|Tutorial Start]]</para></listitem> <!-- (audacity-1) -->
-				<listitem><para>[[File:FMG-audacity_end.tar.lzma|Tutorial Finish]]</para></listitem> <!-- (audacity-6) -->
-				<listitem><para>[[File:FMG-audacity_final.flac|Exported FLAC]]</para></listitem>
+				<listitem><para><citetitle>Tutorial Start</citetitle> is available at <ulink url="http://docs.fedoraproject.org/en-US/Fedora/14/Musicians_Guide/files/Audacity/Audacity-start.tar.lzma" /></para></listitem>
+				<listitem><para><citetitle>Tutorial End</citetitle> is available at <ulink url="http://docs.fedoraproject.org/en-US/Fedora/14/Musicians_Guide/files/Audacity/Audacity-start.tar.lzma" /></para></listitem>
+				<listitem><para><citetitle>Exported FLAC</citetitle>is available at <ulink url="http://docs.fedoraproject.org/en-US/Fedora/14/Musicians_Guide/files/Audacity/Audacity-export.flac" /></para></listitem>
 				</itemizedlist>
 			</para>
-			<!-- Files on FWT:
-			* "audacity.aup" is what you've got after several recordings
-			* "audacity-1.aup" is time-shifted
-			* "audacity-2.aup" is time-adjusted
-			* "audacity-3.aup" is volume-adjusted
-			* "audacity-4.aup" has a part removed
-			* "audacity-5.aup" has a part echoed
-			* "audacity-6.aup" is phased -->
 		</section>
 		<section id="sect-Musicians_Guide-Audacity-Tutorial-Scenario">
 			<title>Scenario</title>
diff --git a/en-US/Book_Info.xml b/en-US/Book_Info.xml
index 2738af5..5b0ed7a 100644
--- a/en-US/Book_Info.xml
+++ b/en-US/Book_Info.xml
@@ -12,7 +12,7 @@
 	<edition>14.0.1</edition>
 	<pubsnumber>0</pubsnumber>
 	<abstract>
-		<para>This document explores some audio-creation and music activities possible with Fedora Linux.  Computer audio concepts are explained, and a selection of programs are demonstrated with tutorials showing a typical usage.
+		<para>This document explores some audio-creation and music activities possible with Fedora Linux.  Computer audio concepts are explained, and a selection of programs are demonstrated with tutorials showing typical usage.
 		</para>
 	</abstract>
 	<corpauthor>
diff --git a/en-US/LilyPond/LilyPond-counterpoint.xml b/en-US/LilyPond/LilyPond-counterpoint.xml
index 3c3d17d..0e9c673 100644
--- a/en-US/LilyPond/LilyPond-counterpoint.xml
+++ b/en-US/LilyPond/LilyPond-counterpoint.xml
@@ -13,10 +13,10 @@
 	<section id="sect-Musicians_Guide-LilyPond-Counterpoint-Tutorial_Files">
 		<title>Files for the Tutorial</title>
 		<para>
-			You do not need these files to do the tutorial; they are example completions.
+			You do not need these files to do the tutorial.  They are example completions.
 			<itemizedlist>
-			<listitem><para><citetitle>LilyPond Input File</citetitle> at <ulink url="https://fedoraproject.org/wiki/User:Crantila/FSC/Typesetting/LilyPond/Counterpoint" />.</para></listitem>
-			<listitem><para><citetitle>PDF Output File</citetitle> at <ulink url="https://fedoraproject.org/wiki/File:FSC-counterpoint.pdf" />.</para></listitem>
+			<listitem><para><citetitle>LilyPond Input File</citetitle> at <ulink url="http://docs.fedoraproject.org/en-US/Fedora/14/Musicians_Guide/files/LilyPond/Counterpoint-source.ly" /></para></listitem>
+			<listitem><para><citetitle>PDF Output File</citetitle> at <ulink url="http://docs.fedoraproject.org/en-US/Fedora/14/Musicians_Guide/files/files/LilyPond/Counterpoint-result.pdf" /></para></listitem>
 			</itemizedlist>
 		</para>
 	</section>
diff --git a/en-US/LilyPond/LilyPond-orchestra.xml b/en-US/LilyPond/LilyPond-orchestra.xml
index 5559b55..a13f8b4 100644
--- a/en-US/LilyPond/LilyPond-orchestra.xml
+++ b/en-US/LilyPond/LilyPond-orchestra.xml
@@ -19,9 +19,11 @@
 	<section id="sect-Musicians_Guide-LilyPond-Orchestra-Tutorial_Files">
 		<title>Files for the Tutorial</title>
 		<para>
-			You do not need the LilyPond input file to do the tutorial.  You should use the input file if you encounter problems, and to compare your completion.  You do need the PDF output file to do the tutorial.
-			<citetitle>LilyPond Input File</citetitle> at <ulink url="https://fedoraproject.org/wiki/User:Crantila/FSC/Typesetting/LilyPond/Orchestra" />.
-			<citetitle>PDF Output File</citetitle> at <ulink url="https://fedoraproject.org/wiki/File:FSC-orchestra.pdf" />.
+			You do not need the <application>LilyPond</application> input file to do the tutorial.  You do need the PDF output file to do the tutorial.  Use the input file if you encounter problems, or to check your result.
+			<itemizedlist>
+			<listitem><para><citetitle>LilyPond Input File</citetitle> at <ulink url="http://docs.fedoraproject.org/en-US/Fedora/14/Musicians_Guide/files/LilyPond/Orchestra-source.ly" /></para></listitem>
+			<listitem><para><citetitle>PDF Output File</citetitle> at <ulink url="http://docs.fedoraproject.org/en-US/Fedora/14/Musicians_Guide/files/LilyPond/Orchestra-result.pdf" /></para></listitem>
+			</itemizedlist>
 		</para>
 	</section>
 	
diff --git a/en-US/LilyPond/LilyPond-piano.xml b/en-US/LilyPond/LilyPond-piano.xml
index 261feb0..5944491 100644
--- a/en-US/LilyPond/LilyPond-piano.xml
+++ b/en-US/LilyPond/LilyPond-piano.xml
@@ -20,8 +20,10 @@
 		<title>Files for the Tutorial</title>
 		<para>
 			You do not need the <application>LilyPond</application> input file to do the tutorial.  You should use the input file if you encounter problems, and to compare your completion.  You do need the PDF output file to do the tutorial.
-			<citetitle><application>LilyPond</application> Input File</citetitle> at <ulink url="https://fedoraproject.org/wiki/User:Crantila/FSC/Typesetting/LilyPond/Piano" />.
-			<citetitle>PDF Output File</citetitle> at <ulink url="https://fedoraproject.org/wiki/File:FSC-piano.pdf" />.
+			<itemizedlist>
+			<listitem><para><citetitle><application>LilyPond</application> Input File</citetitle> at <ulink url="http://docs.fedoraproject.org/en-US/Fedora/14/Musicians_Guide/files/LilyPond/Piano-source.ly" /></para></listitem>
+			<listitem><para><citetitle>PDF Output File</citetitle> at <ulink url="http://docs.fedoraproject.org/en-US/Fedora/14/Musicians_Guide/files/LilyPond/Piano-result.pdf" />.</para></listitem>
+			</itemizedlist>
 		</para>
 	</section>
 	
diff --git a/en-US/Musicians_Guide.ent b/en-US/Musicians_Guide.ent
index d9f56de..bb3c27a 100644
--- a/en-US/Musicians_Guide.ent
+++ b/en-US/Musicians_Guide.ent
@@ -2,3 +2,5 @@
 <!ENTITY BOOKID "musicians-guide">
 <!ENTITY YEAR "2010">
 <!ENTITY HOLDER "Red Hat, Inc. and others">
+<!ENTITY PRODVER "14">
+<!ENTITY PREVVER "13">
\ No newline at end of file
diff --git a/en-US/Musicians_Guide.xml b/en-US/Musicians_Guide.xml
index df60fe0..703c3ff 100644
--- a/en-US/Musicians_Guide.xml
+++ b/en-US/Musicians_Guide.xml
@@ -3,6 +3,19 @@
 <!ENTITY % BOOK_ENTITIES SYSTEM "Musicians_Guide.ent">
 %BOOK_ENTITIES;
 ]>
+
+<!-- 
+	NOTE: All of the following documents have a hard-coded URL that must be changed with each Fedora version.
+	
+	They are currently updated for Fedora 14
+	
+	LilyPond/LilyPond-counterpoint.xml : lines 18 and 19
+	LilyPond/LilyPond-orchestra.xml : lines 24 and 25
+	LilyPond/LilyPond-piano.xml : lines 24 and 25
+	Audacity.xml : lines 243, 244, and 245
+	SuperCollider/SuperCollider-Composing.xml : lines 24, 25, and 26
+-->
+
 <book status="draft">
 	<xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
 	<xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
diff --git a/en-US/Planet_CCRMA_at_Home.xml b/en-US/Planet_CCRMA_at_Home.xml
index 2df0e61..6393bfe 100644
--- a/en-US/Planet_CCRMA_at_Home.xml
+++ b/en-US/Planet_CCRMA_at_Home.xml
@@ -92,7 +92,7 @@
 				<orderedlist>
 				<listitem><para>Update your computer with PackageKit, KPackageKit.</para></listitem>
 				<listitem><para>You will have to use a terminal window for the next portion.</para></listitem>
-				<listitem><para>Run the following commands: <command>su -c 'rpm -Uvh http://ccrma.stanford.edu/planetccrma/mirror/fedora/linux/planetccrma/12/i386/planetccrma-repo-1.1-2.fc12.ccrma.noarch.rpm'</command>  This works for Fedora 12, 13, and 14 and 32-bit and 64-bit</para></listitem>
+				<listitem><para>Run the following commands: <command>su -c 'rpm -Uvh http://ccrma.stanford.edu/planetccrma/mirror/fedora/linux/planetccrma/13/i386/planetccrma-repo-1.1-2.fc13.ccrma.noarch.rpm'</command>  This works for all versions of Fedora, whether 32-bit and 64-bit</para></listitem>
 				<listitem><para>Update your computer again.</para></listitem>
 				<listitem><para>You may receive a warning that the RPM database was altered outside of "yum".  This is normal.</para></listitem>
 				<listitem><para>Your repository definition will automatically be updated.</para></listitem>
diff --git a/en-US/Revision_History.xml b/en-US/Revision_History.xml
index cad7f47..d44baee 100644
--- a/en-US/Revision_History.xml
+++ b/en-US/Revision_History.xml
@@ -8,7 +8,7 @@
 	<simpara>
 		<revhistory>
 			<revision>
-				<revnumber>0</revnumber>
+				<revnumber>0.0</revnumber>
 				<date>Tue Jul 27 2010</date>
 				<author>
 					<firstname>Christopher</firstname>
@@ -23,7 +23,7 @@
 			</revision>
 			
 			<revision>
-				<revnumber>1</revnumber>
+				<revnumber>0.1</revnumber>
 				<date>Mon Aug 2 2010</date>
 				<author>
 					<firstname>Christopher</firstname>
@@ -38,7 +38,7 @@
 			</revision>
 			
 			<revision>
-				<revnumber>2</revnumber>
+				<revnumber>0.2</revnumber>
 				<date>Tue Aug 3 2010</date>
 				<author>
 					<firstname>Christopher</firstname>
@@ -54,7 +54,7 @@
 			</revision>
 			
 			<revision>
-				<revnumber>3</revnumber>
+				<revnumber>0.3</revnumber>
 				<date>Wed Aug 4 2010</date>
 				<author>
 					<firstname>Christopher</firstname>
@@ -70,7 +70,7 @@
 			</revision>
 			
 			<revision>
-				<revnumber>4</revnumber>
+				<revnumber>0.4</revnumber>
 				<date>Thu Aug 5 2010</date>
 				<author>
 					<firstname>Christopher</firstname>
@@ -86,7 +86,7 @@
 			</revision>
 			
 			<revision>
-				<revnumber>5</revnumber>
+				<revnumber>0.5</revnumber>
 				<date>Fri Aug 6 2010</date>
 				<author>
 					<firstname>Christopher</firstname>
@@ -102,7 +102,7 @@
 			</revision>
 			
 			<revision>
-				<revnumber>6</revnumber>
+				<revnumber>0.6</revnumber>
 				<date>Sat Aug 7 2010</date>
 				<author>
 					<firstname>Christopher</firstname>
@@ -118,7 +118,7 @@
 			</revision>
 			
 			<revision>
-				<revnumber>7</revnumber>
+				<revnumber>0.7</revnumber>
 				<date>Sun Aug 8 2010</date>
 				<author>
 					<firstname>Christopher</firstname>
@@ -135,7 +135,7 @@
 			</revision>
 			
 			<revision>
-				<revnumber>8</revnumber>
+				<revnumber>0.8</revnumber>
 				<date>Fri Aug 27 2010</date>
 				<author>
 					<firstname>Christopher</firstname>
@@ -150,11 +150,33 @@
 				</revdescription>
 			</revision>
 			
+			<revision>
+				<revnumber>0.9</revnumber>
+				<date>Mon Sept 6 2010</date>
+				<author>
+					<firstname>Christopher</firstname>
+					<surname>Antila</surname>
+					<email>crantila at fedoraproject.org</email>
+				</author>
+				<revdescription>
+					<simplelist>
+						<member>Added links to tutorial files.</member>
+						<member>Incorporated some comments from external sources.</member>
+						<member>Changed numbering of Revision History.</member>
+						<member>Added list of links that need to be updated with every release, to Musicians_Guide.xml</member>
+						<member>Updated Audacity to make it publish-able.</member>
+						<member>Replaced instances of "Fedora 14" with "Fedora $PRODVER;"</member>
+					</simplelist>
+				</revdescription>
+			</revision>
+			
 			<!-- Finite Tasks -->
 			<!-- TODO: fix the example around line 630 of SC Basic Programming -->
-			<!-- TODO: convert images to format given by R. Landmann -->
+			<!-- TODO: convert images to format given by R. Landmann (as line 164 of Audacity?) -->
 			<!-- TODO: convert SuperCollider examples to <xi:include ... /> -->
 			<!-- TODO: convert LilyPond examples to <xi:include ... /> -->
+			<!-- TODO: see whether SELinux can be configured to determine who/what has access to real-time stuff for JACK -->
+			<!-- TODO: Rewrite the SuperCollider "Composing" tutorial, to get rid of the first-person -->
 			
 			<!-- Ongoing Tasks -->
 			<!-- TODO: ensure that everything is formatted correctly -->
diff --git a/en-US/Solfege.xml b/en-US/Solfege.xml
index b8089e2..f350977 100644
--- a/en-US/Solfege.xml
+++ b/en-US/Solfege.xml
@@ -46,7 +46,7 @@
 		<section id="sect-Musicians_Guide-Solfege-Install_MMA">
 			<title>Optional Installation: MMA</title>
 			<para>
-				MMA stands for "Musical MIDI Accompaniment," and it is not available for Fedora in a pre-packaged format.  The software can be found on the <citetitle>MMA Homepage</citetitle> at <ulink url="http://www.mellowood.ca/mma/" />, where you can download the source code and compile it if desired.  MMA is only used by some of the harmonic dictation questions, so its installation is not required.
+				MMA stands for "Musical MIDI Accompaniment," and it is not available for Fedora in a prepackaged format.  The software can be found on the <citetitle>MMA Homepage</citetitle> at <ulink url="http://www.mellowood.ca/mma/" />, where you can download the source code and compile it if desired.  MMA is only used by some of the harmonic dictation questions, so its installation is not required.
 			</para>
 		</section>
 	</section> <!-- Ends "Requirements and Installation" Section -->
diff --git a/en-US/Sound_Servers.xml b/en-US/Sound_Servers.xml
index 99eecd0..fd0f6d2 100644
--- a/en-US/Sound_Servers.xml
+++ b/en-US/Sound_Servers.xml
@@ -20,7 +20,7 @@
 	<section id="sect-Musicians_Guide-Sound_Servers_Section">
 		<title>Sound Servers</title>
 		<para>
-			Sound servers are software applications that run "in the background," meaning they are rarely seen by users.  They are used to provide another level of abstraction - essentially to automatically take care of certain aspects of using ALSA, thereby making it easier for software applications to use the audio hardware.  The three sound servers discussed in this guide have distinctly different goals, provide distinctly different features and capabilities, and should not be viewed as though one is universally better than the others.
+			Sound servers are programs that run "in the background," meaning that they do not have a user interface.  Sound servers provide a level of abstraction to automate some aspects of using ALSA, and to allow multiple applications to simultaneously access your audio hardware.  The three sound servers discussed in this chapter have different goals and different features.  The sound server you should use depends on what you are doing.
 		</para>
 		<section id="sect-Musicians_Guide-Sound_Servers-PulseAudio">
 			<title>PulseAudio</title>
@@ -52,13 +52,9 @@
 		
 	<section id="sect-Musicians_Guide-Using_JACK">
 		<title>Using the <systemitem>JACK</systemitem> Audio Connection Kit</title>
-		<!-- TODO: Rewrite this section, knowing that jack2 will be in Fedora 14 -->
-		<!-- TODO: If you keep the config-file-tinkering, make sure it's clear why it's there -->
-		<!-- TODO: See if SELinux can be configured to control who/what has access to real-time priority -->
 		<section id="sect-Musicians_Guide-Install_and_Configure_JACK">
 			<title>Installing and Configuring <systemitem>JACK</systemitem></title>
 			<procedure>
-				<step><para>Ensure that you have installed the Planet CCRMA at Home repositories.  For instructions, refer to <xref linkend="sect-Musicians_Guide-CCRMA_Installing_Repository" />.</para></step>
 				<step><para>Use <application>PackageKit</application> or <application>KPackageKit</application> to install the <package>jack-audio-connection-kit</package> and <package>qjackctl</package> packages.</para></step>
 				<step><para>Review and approve the installation, making sure that it completes correctly.</para></step>
 				<step><para>Run <application>QjackCtl</application> from the KMenu or the Applications menu.</para></step>
diff --git a/en-US/SuperCollider/SuperCollider-Composing.xml b/en-US/SuperCollider/SuperCollider-Composing.xml
index 8c1fa5b..4e3a1a5 100644
--- a/en-US/SuperCollider/SuperCollider-Composing.xml
+++ b/en-US/SuperCollider/SuperCollider-Composing.xml
@@ -21,19 +21,19 @@
 		<para>
 			The following files represent complete versions of the program.  You should try to complete the program yourself before reviewing these versions:
 			<itemizedlist>
-			<listitem><para>Original Version with Full Explanations: <ulink url="https://fedoraproject.org/wiki/User:Crantila/FSC/Synthesizers/SuperCollider/FSC_method_1.sc" /></para></listitem>
-			<listitem><para>Optimized Version with Fewer Explanations: <ulink url="https://fedoraproject.org/wiki/User:Crantila/FSC/Synthesizers/SuperCollider/FSC_method_1-short.sc" /></para></listitem>
-			<listitem><para>FLAC Recording: <ulink url="https://fedoraproject.org/wiki/Media:FMG-Method_One.flac" /></para></listitem>
+			<listitem><para><citetitle>Method One</citetitle> is available at <ulink url="http://docs.fedoraproject.org/en-US/Fedora/14/Musicians_Guide/files/SuperCollider/Method_One.sc" /></para></listitem>
+			<listitem><para><citetitle>Method One (Optimized)</citetitle> is available at <ulink url="http://docs.fedoraproject.org/en-US/Fedora/14/Musicians_Guide/files/SuperCollider/Method_One-optimized.sc" /></para></listitem>
+			<listitem><para>A FLAC-format recording of <citetitle>Method One</citetitle> is available at <ulink url="http://docs.fedoraproject.org/en-US/Fedora/14/Musicians_Guide/files/SuperCollider/Method_One.flac" /></para></listitem>
 			</itemizedlist>
 		</para>
 		<para>
-			<literal>FSC_method_1.sc</literal> : This is an extensively-commented version of the source code.  The comments not only describe the way the code works, but pose some problems and questions that you may wish to work on, to increase your knowledge of SuperCollider.  The problem with the verbosity of the comments is that it can be difficult to read the code itself, as it would be written in a real program.
+			<filename>Method_One.sc</filename> is an extensively-commented version of the source code.  The comments not only describe the way the code works, but pose some problems and questions that you may wish to work on, to increase your knowledge of SuperCollider.  The problem with the verbosity of the comments is that it can be difficult to read the code itself, as it would be written in a real program.
 		</para>
 		<para>
-			<literal>FSC_method_1-short.sc</literal> : This is a less-commented version of the source code.  I've also re-written part of the code, to make it more flexible for use in other programs.  The differences between this, and code that I would have written for myself only, are trivial.
+			<filename>Method_One-optimized.sc</filename> is a less-commented version of the source code.  I've also re-written part of the code, to make it more flexible for use in other programs.  The differences between this, and code that I would have written for myself only, are trivial.
 		</para>
 		<para>
-			<literal>FSC_method_1.flac</literal> : This is a recording that I produced of the program, which I produced in Ardour.
+			<filename>Method_One.flac</filename> is a recording that I produced of the program, which I produced in <application>Ardour</application>.
 		</para>
 	</section>
 	
diff --git a/en-US/files/Audacity/Audacity-end.tar.lzma b/en-US/files/Audacity/Audacity-end.tar.lzma
new file mode 100644
index 0000000..67bc083
Binary files /dev/null and b/en-US/files/Audacity/Audacity-end.tar.lzma differ
diff --git a/en-US/files/Audacity/Audacity-export.flac b/en-US/files/Audacity/Audacity-export.flac
new file mode 100644
index 0000000..f303072
Binary files /dev/null and b/en-US/files/Audacity/Audacity-export.flac differ
diff --git a/en-US/files/Audacity/Audacity-start.tar.lzma b/en-US/files/Audacity/Audacity-start.tar.lzma
new file mode 100644
index 0000000..f4e48b6
Binary files /dev/null and b/en-US/files/Audacity/Audacity-start.tar.lzma differ
diff --git a/en-US/files/LilyPond/Counterpoint-result.pdf b/en-US/files/LilyPond/Counterpoint-result.pdf
new file mode 100644
index 0000000..a3cca80
Binary files /dev/null and b/en-US/files/LilyPond/Counterpoint-result.pdf differ
diff --git a/en-US/files/LilyPond/Counterpoint-source.ly b/en-US/files/LilyPond/Counterpoint-source.ly
new file mode 100644
index 0000000..e59d46c
--- /dev/null
+++ b/en-US/files/LilyPond/Counterpoint-source.ly
@@ -0,0 +1,60 @@
+\version "2.12.2"
+
+\header
+{
+  title = "Simple Counterpoint Exercise"
+  composer = "Christopher Antila"
+}
+
+global =
+{
+  \key f \major
+  \time 4/4
+  
+  \override Score.BarLine #'transparent = ##t
+  \override Score.SpanBar #'transparent = ##t
+  \override Score.TimeSignature #'transparent = ##t
+}
+
+right = \relative c'
+{
+  \global
+  
+  f1 g a f d e f c' a f g f
+  
+  \revert Score.BarLine #'transparent
+  \revert Score.SpanBar #'transparent
+  
+  \bar "|."
+}
+
+left = \relative c
+{
+  \global
+  % Music follows here.
+  
+  f1 e d a bes c d e f d c f
+}
+
+figBass = \figuremode
+{
+  \global
+  % Figures follow here.
+  <1>1 <3> <5> <6> <3> <3> <3> <6> <3> <3> <5> <1>
+}
+
+pianoPart = \new PianoStaff \with{}
+<<
+  \new Staff = "right" \right
+  \new FiguredBass \figBass
+  \new Staff = "left" { \clef bass \left }
+>>
+
+\score
+{
+  <<
+    \pianoPart
+  >>
+  
+  \layout { }
+}
diff --git a/en-US/files/LilyPond/Orchestra-result.pdf b/en-US/files/LilyPond/Orchestra-result.pdf
new file mode 100644
index 0000000..e982de1
Binary files /dev/null and b/en-US/files/LilyPond/Orchestra-result.pdf differ
diff --git a/en-US/files/LilyPond/Orchestra-source.ly b/en-US/files/LilyPond/Orchestra-source.ly
new file mode 100644
index 0000000..6a2a242
--- /dev/null
+++ b/en-US/files/LilyPond/Orchestra-source.ly
@@ -0,0 +1,418 @@
+\version "2.12.2"
+
+\header
+{
+  dedication = "Comte d‘Ogny and Prince Oettingen-Wallerstein"
+  title = "Sinfonia No. 92"
+  subtitle = "“Oxford”"
+  composer = "Haydn, Joseph"
+  % Remove default LilyPond tagline
+  tagline = ##f
+}
+
+tempoMark =
+{
+  \once \override Score.RehearsalMark #'self-alignment-X = #LEFT
+  \once \override Score.RehearsalMark #'break-align-symbols = #'(time-signature key-signature)
+  \once \override Staff.TimeSignature #'break-align-anchor-alignment = #LEFT
+  \mark \markup \bold "Adagio"
+}
+
+global = 
+{
+  %% NB: "hornF" does not follow this
+  %% NB: "trumpetC" does not follow this
+  \tempoMark
+  \key g \major
+  \time 3/4
+}
+
+startExposition =
+{
+  \once \override Score.RehearsalMark #'self-alignment-X = #LEFT
+  \once \override Score.RehearsalMark #'break-align-symbols = #'(time-signature key-signature)
+  \mark \markup \bold "Allegro spiritoso"
+  
+  \bar "|:"
+}
+
+
+
+
+
+
+%%%%%%%% NOTES %%%%%%%%
+flute = \relative c''' 
+{
+  \global
+  % Music follows here.
+  R2.*13 |
+  r8 e-.\p e-. e-. e-. e-. |
+  es8[ d]\f d-. d-. d-. d-. |
+  d8( cis) cis4 r |
+  R2.*3 |
+  r4 r r\fermata |
+  
+  \startExposition
+  
+  R2.*4 |
+}
+
+oboeI = \relative c'''
+{
+  \global
+  % Music follows here.
+  R2.*13 |
+  r8 a-.\p a-. a-. a-. a-. |
+  a8([ bes)]\f bes-. g-. g-. g-. |
+  g8( bes,) bes4 r |
+  r4 cis\p cis |
+  r4 cis cis |
+  r4 cis\pp cis |
+  r4 r r\fermata |
+  
+  \startExposition
+  
+  R2.*4 |
+}
+
+oboeII = \relative c'' 
+{
+  \global
+  % Music follows here.
+  R2.*13 |
+  R2. |
+  r8\f bes-. bes-. bes-. bes-. bes-. |
+  bes8 bes bes4 r |
+  r4 g\p g |
+  r4 g g |
+  r4 g\pp g |
+  r4 r r\fermata |
+  
+  \startExposition
+  
+  R2.*4 |
+}
+
+bassoon = \relative c 
+{
+  \global
+  % Music follows here.
+  R2.*13 |
+  R2. |
+  r8\f d-.^"a 2" g-. bes-. d-. bes-. |
+  g8( cis) cis4 r |
+  R2.*3 |
+  r4 r r\fermata |
+  
+  \startExposition
+  
+  R2.*4 |
+}
+
+hornF = \relative c' 
+{
+  \tempoMark
+  \time 3/4
+  \key c \major
+  \transposition g
+  % Music follows here.
+  R2.*13 |
+  R2. |
+  r8\f <g g'>-. <g g'>-. <g g'>-. <g g'>-. <g g'>-. |
+  <c c'>8 <c c'> <c c'>4 r |
+  R2.* 3 |
+  r4 r r\fermata
+  
+  \startExposition
+  
+  R2.*4 |
+}
+
+trumpetC = \relative c'' 
+{
+  \tempoMark
+  \time 3/4
+  \key c \major
+  % Music follows here.
+  R2.*13 |
+  R2.*6 |
+  r4 r r\fermata |
+  
+  \startExposition
+  
+  R2.*4 |
+}
+
+timpani = \relative c 
+{
+  \global
+  % Music follows here.
+  R2.*13 |
+  R2.*6 |
+  r4 r r\fermata |
+  
+  \startExposition
+  
+  R2.*4 |
+}
+
+violinI = \relative c'' 
+{
+  \global
+  % Music follows here.
+  d8-.\p r d-. r d-. r |
+  d2.~\< |
+  d4\> c8( b a e') |
+  g,4(\! fis8)-. r r4 |
+  % M.5
+  c'8-. r c-. r c-. r |
+  c2.~\< |
+  c8\> e( d c b a)\! |
+  \grace {c8} b4\trill a8-. r r4 |
+  c8[( \grace {d16[ c b]} c16. d32]) b8-. r r4 |
+  % M.10
+  e8[( \grace {fis16[ e dis]} e16. fis32]) g8-. r r4 |
+  d4 cis8( c b bes) |
+  a8 r r4 r |
+  r8 g'-. g-. g-. g-. g-. |
+  g8[( fis]) fis-. fis-. fis-. fis-. |
+  % M.15
+  fis8[( g])\f g-. d'-. d-. d-. |
+  d8[( cis]) cis4 r8. g16\p |
+  g4( cis,) r8. bes'16 |
+  bes4( cis,) r |
+  \times 2/3 { g'8[(-.^\markup{\italic staccato} fis-. f])-. } \times 2/3 { e8[(-. es-. d])-. } cis8-. r16 bes' |
+  bes4( cis,) r\fermata |
+  
+  \startExposition
+  
+  c!4~\p c8 b-. a-. g-. |
+}
+
+violinII = \relative c'' 
+{
+  \global
+  % Music follows here.
+  b8-.\p r b-. r b-. r |
+  b4. a8( g fis) |
+  e4. d8( c a) |
+  d4 r r |
+  % M.5
+  <fis a>8-. r <fis a>-. r <fis a>-. r |
+  <fis a>4. b8( a g) |
+  fis2( g8 d) |
+  d8[( cis]) d-. r r4 |
+  g4~ g8-. r r4 |
+  % M.10
+  g4~ g8-. r r4 |
+  d4 e8( fis g) g |
+  fis8[ d]-. d-. d-. d-. d-. |
+  d4( cis c) |
+  c2.~ |
+  % M.15
+  c8[( bes])\f bes-. bes-. bes-. bes-. |
+  bes8 g' g4 r |
+  r4 <bes, g'>\p <bes g'> |
+  r4 <bes g'> <bes g'> |
+  r4 <bes g'>\pp <bes g'> |
+  % M.20
+  r4 r r\fermata
+  
+  \startExposition
+  
+  <a fis'>8-.\p <a fis'>-. <a fis'>-. r r4
+}
+
+viola = \relative c'' 
+{
+  \global
+  % Music follows here.
+  g8-.\p r g-. r g-. r |
+  g4. g,8( a b) |
+  c( e, fis gis a c) |
+  b4( a8-.) r r4 |
+  % M.5
+  d8-. r d-. r d-. r |
+  d4. d,8( fis g) |
+  a8( c b a g fis) |
+  g4( fis8-.) r r4 |
+  e'4( d8-.) r r4 |
+  % M.10
+  c4( b8-.) r r4 |
+  b8( bes a) d g, cis |
+  d4 r r |
+  R2. |
+  r8 a'-. a-. a-. a-. a-. |
+  % M.15
+  a8[( g])\f g-. g-. g-. g-. |
+  g8 g g4 r |
+  r4 cis,\p cis |
+  r4 cis cis |
+  r4 cis\pp cis |
+  % M.20
+  r4 r r\fermata |
+  
+  \startExposition
+  
+  c8-.\pp c-. c-. r r4 |
+  
+}
+
+cello = \relative c 
+{
+  \global
+  % Music follows here.
+  R2. |
+  g8(\p b d g a b) |
+  c8( e, fis gis a c) |
+  b4( a8-.) r r4 |
+  % M.5
+  R2.
+  d,,8( fis a d fis g) |
+  a8( c b a g fis) |
+  g4( fis8-.) r r4 |
+  e'4( d8-.) r r4 |
+  % M.10
+  c4( b8-.) r r4 |
+  b8( bes a) d g, cis |
+  d4 r r |
+  es,2. |
+  d2.~ |
+  % M.15
+  d8[ d]-.\f d-. d-. d-. d-. |
+  es8 es es4 r |
+  r4 << { es' es } \\ { es,\p es } >> |
+  r4 << { es' es } \\ { es, es } >> |
+  r4 << { es' es } \\ { es,\pp es } >> |
+  % M.20
+  r4 r r\fermata |
+  
+  \startExposition
+  
+  d8-.\p d-. d-. r r4 |
+  
+}
+
+contrabass = \relative c 
+{
+  \global
+  % Music follows here.
+  R2. |
+  g2\p r4 |
+  c2. |
+  d4 r r |
+  % M.5
+  R2. |
+  d2.~ |
+  d2. |
+  d8-. r d-. r r4 |
+  % M.9
+  R2.*4 |
+  es2. |
+  % M.15
+  d2.~ |
+  d8[ d]-.\f d-. d-. d-. d-. |
+  es8 es es4 r |
+  r4 es\p es |
+  r4 es es |
+  r4 es\pp es |
+  % M.20
+  r4 r r\fermata
+  
+  \startExposition
+  
+  d8-.\p d-. d-. r r4 |
+  
+}
+
+
+
+
+
+
+%%%%%%%% PARTS %%%%%%%%
+flutePart = \new Staff \with 
+{
+  instrumentName = "Flauto"
+} \flute
+
+oboeIPart = \new Staff \with 
+{
+  instrumentName = "I Oboe"
+} \oboeI
+
+oboeIIPart = \new Staff \with 
+{
+  instrumentName = "II Oboe"
+} \oboeII
+
+bassoonPart = \new Staff \with 
+{
+  instrumentName = "2 Fagotti"
+} { \clef bass \bassoon }
+
+hornFPart = \new Staff \with 
+{
+  instrumentName = "2 Corni in Sol"
+} \hornF
+
+trumpetCPart = \new Staff \with 
+{
+  instrumentName = "2 Clarini in Do"
+} \trumpetC
+
+timpaniPart = \new Staff \with 
+{
+  instrumentName = "Timpani"
+} { \clef bass \timpani }
+
+violinIPart = \new Staff \with 
+{
+  instrumentName = "Violino I"
+} \violinI
+
+violinIIPart = \new Staff \with 
+{
+  instrumentName = "Violino II"
+} \violinII
+
+violaPart = \new Staff \with 
+{
+  instrumentName = "Viola"
+} { \clef alto \viola }
+
+celloPart = \new Staff \with 
+{
+  instrumentName = "Violoncello obligato"
+} { \clef bass \cello }
+
+contrabassPart = \new Staff \with 
+{
+  instrumentName = "Basso"
+} { \clef bass \contrabass }
+
+
+
+
+
+
+%%%%%%%% SCORE %%%%%%%%
+\score 
+{
+  <<
+    \flutePart
+    \oboeIPart
+    \oboeIIPart
+    \bassoonPart
+    \hornFPart
+    \trumpetCPart
+    \timpaniPart
+    \violinIPart
+    \violinIIPart
+    \violaPart
+    \celloPart
+    \contrabassPart
+  >>
+  \layout { }
+}
diff --git a/en-US/files/LilyPond/Piano-result.pdf b/en-US/files/LilyPond/Piano-result.pdf
new file mode 100644
index 0000000..c897eb3
Binary files /dev/null and b/en-US/files/LilyPond/Piano-result.pdf differ
diff --git a/en-US/files/LilyPond/Piano-source.ly b/en-US/files/LilyPond/Piano-source.ly
new file mode 100644
index 0000000..3430a39
--- /dev/null
+++ b/en-US/files/LilyPond/Piano-source.ly
@@ -0,0 +1,531 @@
+\version "2.12.2"
+
+\header
+{
+  title = "Impromptu (Excerpt)"
+  composer = "Schubert, Franz"
+  opus = "Opus 90/4"
+  % Remove default LilyPond tagline
+  tagline = ##f
+}
+
+tempoMark =
+{
+  \once \override Score.RehearsalMark #'self-alignment-X = #LEFT
+  \once \override Score.RehearsalMark #'break-align-symbols = #'(time-signature key-signature)
+  \once \override Staff.TimeSignature #'break-align-anchor-alignment = #LEFT
+  \mark \markup \bold "Allegretto"
+}
+
+global =
+{
+  \tempoMark
+  \key as \major
+  \time 3/4
+}
+
+
+
+
+
+
+%%%%%%%% NOTES %%%%%%%%
+%%%% RIGHT %%%%
+right = \relative c'''
+{
+   \global
+   % Music follows here.
+   ces16(-2 es ces as-1   as-3 ces as es-1   es as es ces |
+   ces16-2 es ces as   as-3 ces as es   <g bes>8-. r |
+   ces'16(-2 es ces as-1   as-3 ces as es-1   es as es ces |
+   ces16-2 es ces as   as-3 ces as es   <g bes>8-.) r |
+   % M.5
+   <as ces>4-_-3 <g bes fes'>-.( <g bes fes'>-. |
+   <g bes fes'>4-. <g bes es>-.-4 <g bes des>-.)-3 |
+   ces'16( es ces as   as ces as es   es as es ces |
+   ces16 es ces as   as ces as es   <g bes>8-.) r |
+   ces'16( es ces as   as ces as es   es as es ces |
+   % M.10
+   ces16 es ces as   as ces as es   <g bes>8-.) r |
+   <as ces>4-_-2 <ges bes fes'>-.( <ges bes fes'>-. |
+   <ges bes fes'>4-. <ges bes es>-.-4 <ges bes d>-.)-3 |
+   es''16(-2 ges es ces   ces-2 es ces ges   ges-2 ces ges es |
+   es16-2 ges es ces   ces-3 es ces ges   <<bes8-.) d>> r |
+   % M.15
+   es'16( ges es ces   ces es ces ges   ges ces ges es |
+   es16 ges es ces   ces es ces ges   <<bes8-.) d>> r |
+   <ces es>4-_-3 <bes des as'>-.( <bes des as'>-. |
+   <bes des as'>4-. <bes es ges>-.-4 <bes fes'>-.-)-3 |
+   d'16(-2 fis d b   b-2 d b fis   fis-2 b fis d |
+   % M.20
+   d16-2 fis d b   b-3 d b fis   <ais cis>8-.) r |
+   d'16( fis d b   b d b fis   fis b fis d |
+   d16 fis d b   b d b fis   <ais cis>8-.) r |
+   <fis b d>4-_ <cis' e b'>-.( <cis e b'>-. |
+   <cis e b'>4-. <cis fis a>-.-4 <cis g'>4-.-3 |
+   % M.25
+   <d fis>4-.) <ais cis g'>-.(-5 <ais cis gis'>-. |
+   <ais cis g'>4-. <ais cis fis>-. <cis e>-.-4 |
+   <b dis>4-.) <fes as! fes'>-.(\> <fes as fes'>-. |
+   <fes as fes'>4-. <es! as es'!>-. <des! as' des!>-. |
+   <es as ces>4-.) <es as ces>-.( <es as ces>-. |
+   % M.30
+   <es g bes>4-.) <es g bes>-.( <es g bes>-.) |
+   c''!16(-2 es c as   as-3 c as es   es-2 as es c |
+   c16-2 es c as   as-3 c as es   <g bes>8-.) r |
+   c'16( es c as   as c as es   es as es c |
+   c16 es c as   as c as es   <g bes>8-.) r |
+   % M.35
+   es''16(-2 as es c   c-2 es c as   as-3 c as es |
+   es16-2 as es c   c-2 es c as   <g bes>8-.) r |
+   es''16( as es c   c es c as   as c as es |
+   es16 as es c   c es c as   <g bes>8-.) r |
+   c16(-2 es c as   as-2 c as es   as8-.) r |
+   % M.40
+   des16(-3 f des as   as-2 des as f   as8-.) r |
+   es'16(-3 g es bes   bes-2 es bes g   bes8-.) r |
+   es16(-2 as es c   c-2 es c as   c8-.) r |
+   c'16(-2 es c as   as-2 c as es as8-.) r |
+   des16(-3 f des as   as-2 des as f   as8-.) r |
+   % M.45
+   es'16(-3 g es bes   bes-2 es bes g bes8-.) r |
+   es16(-2 as es c   c-2 es c as   c8-.) r |
+   c,16( es c as   as c as es   as8-.) r |
+   des16( f des as   as des as f   as8-.) r |
+   es'16( g es bes   bes es bes g   bes8-.) r |
+   % M.50
+   es16( as es c   c es c as   c8-.) r |
+   c'16( es c as   as c as es as8-.) r |
+   des16( f des as   as des as f   as8-.) r |
+   es'16( g es bes   bes es bes g bes8-.) r |
+   es16( as es c   c es c as   c8-.) r |
+   % M.55
+   es16( g es bes   bes es bes g bes8-.) r |
+   es16( as es c   c es c as   c8-.) r |
+   \ottava #1
+   f='''16( a f c   c f c a   c8-.->) r |
+   f16( bes f des   des f des bes-1   des8-.->) r |
+   f16( a f c   c f c a   c8-.->) r |
+   % M.60
+   f16( bes f des   des f des bes-1   des8-.->) r |
+   as'!16( c as es   es as es c   es8-.) r |
+   as16( des as f   f as f des   f8-.) r |
+   as16( c as es   es as es c   es8-.) r |
+   as16( des as f   f-2 as f des   des-3 f des as |
+   % M.65
+   \ottava #0
+   as=''16(-2 des as f   f-2 as f des   des-3 f des as) |
+   as'16( des as f   f as f des   des f des as |
+   as16 des as f   f as f des   des f des as) |
+   des16-3( fes des bes   bes-2 des bes ges  des'-3 fes des bes |
+   bes16 des bes ges   des' fes des bes   bes des bes ges) |
+   % M.70
+   des'16->(-3 es des bes   bes16-2 des bes ges   des'->-3 es des bes |
+   bes16 des bes ges   des'-> es des bes   bes des bes ges) |
+   << {
+         es'4(-3 as 4 g-4 |
+         f4-3 des' bes |
+         bes4)(-5 as) as |
+         % M.75
+         as4(-5 g) g |
+         es4(-3 as g-4 |
+         f4 f' des-5 |
+         des4)( c)-4 c |
+         c4(-5 bes)-4 bes |
+      } \\
+      {
+         \times 2/3 {es,8[ c as]} \times 2/3 {as'[ es-2 c]} \times 2/3 {g'[ es c]} |
+         \times 2/3 {f8[ des as]} \times 2/3 {des'8[ f, des]} \times 2/3 {bes'[ f des]} |
+         \times 2/3 {bes'8[ es, des]} \times 2/3 {as'[ es c]} \times 2/3 {as'[ es c]} |
+         % M.75
+         \times 2/3 {as'8[ es c]} \times 2/3 {g'[ es bes]} \times 2/3 {g'[ es bes]} |
+         \times 2/3 {es8[ c as]} \times 2/3 {as'[ es-2 c]} \times 2/3 {g'[ es c]} |
+         \times 2/3 {f8[ des as]} \times 2/3 {f''[ as, f]} \times 2/3 {des'[ f, des]} |
+         \times 2/3 {des'8[ as-2 f]} \times 2/3 {c'[ as es]} \times 2/3 {c'[ as es]} |
+         \times 2/3 {c'8[ es, des]} \times 2/3 {bes'[ es, des]} \times 2/3 {bes'[ es, des]} |
+      }
+   >>
+   % M.80
+   c'16(-2 es c as   as-2 c as es   as8-.) r |
+   des16(-3 f des as   as-2 des as f   as8-.) r |
+   es'16(-3 g es bes   bes-2 es bes g   bes8-.) r |
+   es16(-2 as es c   c-2 es c as   c8-.) r |
+   c'16(-2 es c as   as-2 c as es   as8-.) r |
+   % M.85
+   des16(-3 f des as   as-2 des as f   as8-.) r |
+   es'16(-3 g es bes   bes-2 es bes g   bes8-.) r |
+   es16(-2 as es c   c-2 es c as   c8-.) r |
+   c,16( es c as   as c as es   as8-.) r |
+   des16( f des as   as des as f   as8-.) r |
+   % M.90
+   es'16( g es bes   bes es bes g   bes8-.) r |
+   es16( as es c   c es c as   c8-.) r |
+   c'16( es c as   as c as es   as8-.) r |
+   des16( f des as   as des as f   as8-.) r |
+   es'16( g es bes   bes es bes g   bes8-.) r |
+   % M.95
+   es16( as es c   c-2 es c as   c8-.) r |
+   es16( g es bes   bes es bes g   bes8-.) r |
+   es16( as es c   c es c as   c8-.) r |
+   es16( g es bes   bes es bes g   bes8-.) r |
+   es16( as es c   c-2 es c as   as-3 c as es |
+   % M.100
+   es16-2 as es c   c-2 es c as   as-3 c as es) |
+   es'16( as es c   c es c as   as c as es |
+   es16 as es c   c es c as   es'-3 as es c)-1 |
+   \clef bass
+   as16(-2 c as es   as c as es   as c as es |
+   as16 c as es   as c as es   as c as es) |
+   % M.105
+   \clef treble
+   << { 
+         as'2.~ |
+         as2. |
+      } \\
+      {
+         es16 ges es as,   es' ges es as,   es' ges es as, |
+         es'16 ges es as,   es' ges es as,   es' ges es as, |
+      }
+   >>
+%% TRIO %%
+   \bar "||"
+   \key cis \minor
+   gis'2.
+}
+
+%%%% LEFT %%%%
+left = \relative c
+{
+  \global
+  % Music follows here.
+  as4-. <as' ces es>2~-3 |
+  <as ces es>2 <es bes' es>8-. r |
+  as,4-. <as' ces es>2~ |
+  <as ces es>2 <es bes' es>8-. r |
+  % M.5
+  <as ces es>4-_ <es bes' fes'>-.( <es bes' fes'>-. |
+  <es bes' fes'>4-. <es bes' es>-.-4 <es bes' des>-.-3) |
+  as,4-. <as' ces es>2~ |
+  <as ces es>2 <es bes' es>8-. r |
+  as,4-. <as' ces es>2~ |
+  % M.10
+  <as ces es>2 <es bes' es>8-. r |
+  <as ces es>4-_ <ges bes fes'>-.( <ges bes fes'>-. |
+  <ges bes fes'>4-. <ges bes es>-.-4 <ges bes d>-.-3) |
+  ces,4-. <ges' ces es>2~-4 |
+  <ges ces es>2 <ges fes'>8-. r |
+  % M.15
+  ces,4-. <ges' ces es>2~ |
+  <ges ces es>2 <ges fes'>8-. r |
+  <ces es>4-_ <ges fes'>-.( <ges fes'>-. |
+  <ges fes'>4-. <ges es'>-._4 <ges des'>-._3) |
+  b,4-. <fis' b d>2~_4 |
+  % M.20
+  <fis b d>2 <fis e'>8-. r |
+  b,4-. <fis' b d>2~ |
+  <fis b d>2 <fis e'>8-. r |
+  <b d>4-_ <a g'>-.( <a g'>-. |
+  <a g'>4-. <a fis'>-. <a_5 e'_1>-. |% <<a-.-5 e'-1>> |
+  % M.25
+  <b d>4-.) <fis e'>-.( <fis e'>-. |
+  <fis e'>4-. <fis-._4 cis'_1>-. <fis ais>-. |
+  <gis b>4-.) <des! as'! des!>-.( <des as' des>-. |
+  <des as' des>4-. <es!_4 as ces>-. <fes_3 as>-. |
+  <es as ces>4-.) <es as ces>-.( <es as ces>-. |
+  % M.30
+  <es_3 g bes>4-.) <es g bes>-.( <es g bes>-.) |
+  as,4-. <es' as c>2~ |
+  <es as c>2 <es des'>8-. r |
+  as,4-. <es' as c>2~ |
+  <es as c>2 <es des'>8-. r |
+  % M.35
+  as,4-. <es' as c>2~ |
+  <es as c>2 <es des'>8-. r |
+  as,4-. <es' as c>2~ |
+  <es as c>2 <es des'>8-. r |
+  as,4 <ges' as c>2 |
+  % M.40
+  des4-. <f as des>2 |
+  es,4-. <es' bes' des>2 |
+  as,4-. <es' as c>2 |
+  as,4 <ges' as c>2 |
+  des4-. <f as des>2 |
+  % M.45
+  es,4-. <es' bes' des>2 |
+  as,4-. <es' as c>2 |
+  << { e=4(-2 as4.-> g8-1 |
+       f4-2 des'4.->-1 c8-1 |
+       bes4-2 es4.->-1 d8-1 |
+       % M.50
+       c4-2 es2->) |
+       es,=4(-2 as4.-> g8-1 |
+       f4-2 des'4.->-1 c8-1 |
+       bes4 es4.-> des8-1 |
+       c4-2 es4.-> c8 |
+       % M.55
+       bes4)( es4.-> des8 |
+       c4 es4.-> c8) |
+       c4( f4.-> es8-2 |
+       des4-3 f4.-> des8-2 |
+       c4)( f4.-> es8 |
+       % M.60
+       des4 f4.-> des8 |
+       \clef treble
+       es4)( as4.-> ges8-1 |
+       f4-2 as4.-> f8 |
+       es4)( as4.-> ges8 |
+       f4) % end of polyphonic section
+     } \\
+     { as,,=,2. |
+       des2.-4 |
+       es2.-5 |
+       % M.50
+       as2.-3 |
+       as,=,2. |
+       des2.-4 |
+       es2. |
+       as2.-3 |
+       % M.55
+       es2. |
+       as2. |
+       f2. |
+       bes2.-4 |
+       f2. |
+       % M.60
+       f2.-4 |
+       \clef treble
+       as2. |
+       des2.-3 |
+       as2. |
+       des4 % end of polyphonic section
+     }
+  >>
+  r4 r | % beats 2 and 3 only; this eliminates redundant rests
+  % M.65
+  R2. |
+  as'8-1 r f r des r |
+  \clef bass
+  as8-1 r f r des r |
+  <ges, bes des fes>2 <ges bes des fes>4~ |
+  <ges bes des fes>4 <ges bes des fes>2 |
+  % M.70
+  <g bes des es>2 <g bes des es>4~ |
+  <g bes des es>4 <g bes des es>2 |
+  as2-3( c4 |
+  des4-2 bes des |
+  es2.)( |
+  % M.75
+  es,2.) |
+  as2-3( c4 |
+  des4 bes-5) 
+  << {
+       bes'~-1 |
+       bes4( as-2) as~-1 |
+       as4( g-2) g-1 |
+     } \\
+     {
+       des(-4 |
+       es2.) |
+       es2. |
+     }
+  >>
+  % M.80
+  as,4-. <ges' as c>2 |
+  des4-. <f as des>2 |
+  es,4-. <es' bes' des>2 |
+  as,4-. <es' as c>2 |
+  as,4-. <ges' as c>2 |
+  % M.85
+  des4-. <f as des>2 |
+  es,4-. <es' bes' des>2 |
+  as,4-. <es' as c>2 |
+  << {
+       es4( as4.-> g8-1 |
+       f4 des'4.-> c8-1 |
+       % M.90
+       bes4 es4.-> des8-1 |
+       c4-2 es2->) |
+       es,4( as4.-> g8 |
+       f4 des'4.-> c8 |
+       bes4 es4.-> des8 |
+       % M.95
+       c4 es4.-> c8 |
+       bes4)( es4.-> des8 |
+       c4 es4.-> c8 |
+       bes4)( es4.-> des8 |
+       c4)
+     } \\
+     {
+       as,2. | des2.-4 | 
+       % M.90
+       es2. | as2.-3 | as,2. | des2. | es2. |
+       % M.95
+       as2. | es2. | as 2. | es2. | as4
+     }
+  >>
+  r4 r |
+  % M.100
+  R2. |
+  es'8-2 r c-1 r as r |
+  ees8 r c r es-2 r |
+  as,4-5 r r |
+  R2. |
+  % M.105
+  <c, as' c>2.~ |
+  <c as' c>2. |
+%% TRIO %%
+   \bar "||"
+   \key cis \minor
+   cis8 <gis'_4 cis e> <gis cis e> <gis cis e> <gis cis e> <gis cis e> |
+}
+
+
+%%%% DYNAMICS %%%%
+dynamics = 
+{
+  s2.\pp |
+  R2.*3 |
+  % M.5
+  s4\< s\! s\> |
+  s2 s4\! |
+  R2.*4 |
+  % M.11
+  s4\< s\! s\> |
+  s2 s4\! |
+  R2.*4 |
+  % M.17
+  s4\< s\! s\> |
+  s2 s4\! |
+  R2.*4 |
+  % M.23
+  s4 s2\> |
+  s2 s4\! |
+  % M.25
+  s4\< s\! s\> |
+  s2 s4\! |
+  s4 s\f s\> |
+  s2 s4\! |
+  s4\p s2 |
+  % M.30
+  R2. |
+  s2.\pp |
+  R2.*3 |
+  % M.35
+  \crescTextCresc
+  s2.\< |
+  R2.*2 |
+  s2 s8 s\! |
+  s16 s\pp s8 s2 |
+  % M.40
+  R2.*3 |
+  s2.\< |
+  R2.*2 |
+  % M.46
+  s2 s8 s\! |
+  s16 s\pp s8 s2 |
+  R2.*3 |
+  % M.51
+  s2.\< |
+  R2.*5 |
+  % M.57
+  s32 s\f s8. s2 |
+  R2.*4 |
+  % M.62
+  s2.\< |
+  R2. |
+  % M.65
+  s32 s\ff s8. s2 |
+  R2.*3 |
+  s2\fz s4\fz |
+  % M.70
+  s4 s2\fz |
+  \dimTextDim
+  s8\> s\! s2 | % with this \! I eliminated the dashed line without tweaking settings
+  s32 s\p s8. s2 |
+  s16 s\pp s8 s2 |
+  % M.74
+  R2.*7 |
+  % M.81
+  s32 s\p s8. s2 |
+  R2.*3 |
+  % M.85
+  s2.\< |
+  R2.*3 |
+  s32 s\p s8. s2 |
+  % M.90
+  R2.*3 |
+  s32 s\f s8. s2 |
+  R2.*3 |
+  % M.97
+  s2.\< |
+  R2. |
+  s32 s\ff s8. s2 |
+  % M.100
+  R2.*8 |
+%% TRIO %%
+  s32 s\p s8. s2 |
+}
+
+
+
+%%%%%%%% SCORE %%%%%%%%
+
+% This is completely optional, but taken right from the LilyPond
+%   reference manual.  I wanted to ensure the right paper size, since
+%   the default is A4.  I also wanted to squeeze the music onto
+%   fewer pages, since it seemed like there was a lot of vertical
+%   space being wasted.
+\paper
+{
+  #(set-paper-size "letter")
+  between-system-padding = #0.1
+  ragged-last-bottom = ##f
+}
+
+% This is the standard, obligatory "score" section.  Note the
+%   addition of the extra \context commands in the "layout"
+%   portion, which are for the piano-centred-dynamics.
+\score
+{
+  \new PianoStaff \with
+    {
+      instrumentName = "Piano"
+    }
+  <<
+    \new Staff = "right" \right
+    \new PianoDynamics = "dynamics" \dynamics
+    \new Staff = "left" { \clef bass \left }
+  >>
+  
+  \layout
+  {
+    % Everything below here is for the piano dynamics.
+    % Define "PianoDynamics" context.
+    \context 
+    {
+      \type "Engraver_group"
+      \name PianoDynamics
+      \alias Voice
+      \consists "Output_property_engraver"
+      \consists "Script_engraver"
+      \consists "New_dynamic_engraver"
+      \consists "Dynamic_align_engraver"
+      \consists "Text_engraver"
+      \consists "Skip_event_swallow_translator"
+      \consists "Axis_group_engraver"
+      
+      \override DynamicLineSpanner #'Y-offset = #0
+      \override TextScript #'font-size = #2
+      \override TextScript #'font-shape = #'italic
+      \override VerticalAxisGroup #'minimum-Y-extent = #'(-1 . 1)
+    }
+    
+    % Modify "PianoStaff" context to accept Dynamics context.
+    \context
+    {
+      \PianoStaff
+      \accepts PianoDynamics
+    }
+    % End of PianoDynamics code.
+  }
+}
diff --git a/en-US/files/SuperCollider/Method_One-optimized.sc b/en-US/files/SuperCollider/Method_One-optimized.sc
new file mode 100644
index 0000000..056c581
--- /dev/null
+++ b/en-US/files/SuperCollider/Method_One-optimized.sc
@@ -0,0 +1,105 @@
+// "Method One"
+// 
+// Composed for the Fedora Project's "Musicians' Guide."
+// Christopher Antila.
+// 
+// Creative Commons CC-BY-SA 3.0
+// http://creativecommons.org/licenses/by-sa/3.0/
+
+(
+// second part of the form -- I've substantially re-written this, so
+// that it can be easily used in other programs.
+// 
+// Because of my defaults argument values, when called with 
+var secondPart =
+{
+   arg number_of_SinOscs = 10,
+       pitch_low = 200,
+       pitch_high = 800,
+       pause_length = 5;
+   
+   // new, personal clock, so we don't interfere with the global one
+   var t_c = TempoClock.new( 1 ); // 1 beat per second
+   var so = Array.new( number_of_SinOscs ); // holds the SinOsc's
+   
+   // We'll need to know this, later.
+   var when_to_stop = ( 1 + ( pause_length * number_of_SinOscs ) );
+   
+   // makes a stereo SinOsc with pseudo-random pitch between
+   // pitch_low and pitch_high
+   var func =
+   {
+      var freq = pitch_low + (pitch_high - pitch_low).rand;
+      [ SinOsc.ar( freq:freq, mul:0.01),
+        SinOsc.ar( freq:freq, mul:0.01) ];
+   };
+   
+   // play them starting on beat 1, then every pause_length beats thereafter
+   number_of_SinOscs.do(
+   {
+      arg time;
+      t_c.sched( (1+(time*5)), { so = so.add( func.play ); } );
+   });
+
+   // stop
+   t_c.sched( when_to_stop,
+              {
+                 number_of_SinOscs.do( { arg index; so[index].free; } );
+                 nil;
+              });
+   
+   // I want to return this, so that a function calling me knows when
+   // I'm going to stop.
+   when_to_stop;
+};
+
+
+
+
+
+
+// first part of the form
+SynthDef.new( \FirstPart,
+{
+   // sets up the frequencies of both channels
+   var frequencyL = SinOsc.kr( freq:10, mul:200, add:400 ); // oscillating
+   var frequencyR = SinOsc.kr( freq:1, mul:50, add:150 ); // oscillating
+   var frequencyL_drone = SinOsc.kr( freq:0.03, mul:20, add:100 ); // drone
+   var frequencyR_drone = SinOsc.kr( freq:0.01, mul:20, add:210 ); // drone
+   
+   // changes the volume of the oscillating part in the left channel
+   var volumeL = SinOsc.kr( freq:0.5, mul:0.02, add:0.03 );
+   
+   // left channel
+   var left = [ SinOsc.ar( freq:frequencyL, mul:volumeL ), // this is the oscillating part
+                SinOsc.ar( freq:[frequencyL_drone,2*frequencyL_drone], mul:0.02 ), // the rest make up the drone
+                SinOsc.ar( freq:[5*frequencyL_drone,7*frequencyL_drone], mul:0.005 ),
+                SinOsc.ar( freq:[13*frequencyL_drone,28*frequencyL_drone], mul:0.001 ) ];
+   
+   // right channel
+   var right = [ SinOsc.ar( freq:frequencyR, mul:0.1 ), // this is the oscillating part
+                 SinOsc.ar( freq:[frequencyR_drone,2*frequencyR_drone], mul:0.02 ), // the rest make up the drone
+                 SinOsc.ar( freq:4*frequencyR_drone, mul:0.005 ),
+                 SinOsc.ar( freq:[64*frequencyR_drone,128*frequencyR_drone], mul:0.01 ) ]; // high frequencies!
+   
+   Out.ar( 0, [left,right] );
+} ).send( s );
+
+// "Main" function
+{
+   var t_c = TempoClock.default;
+   var sound = nil; // holds currently-running "FirstPart"
+   
+   t_c.tempo_( 1 ); // set the tempo to one beat per second
+   
+   // Scheduling:
+   t_c.sched( 1, { sound = Synth.new( \FirstPart ); } );
+   t_c.sched( 61, { sound.free; } );
+   t_c.sched( 61, { secondPart.value; nil; } ); // this takes 51 beats to complete
+   t_c.sched( 113, { sound = Synth.new( \FirstPart ); } );
+   t_c.sched( 143, { sound.free; } );
+   
+}.value;
+
+)
+ 
diff --git a/en-US/files/SuperCollider/Method_One.flac b/en-US/files/SuperCollider/Method_One.flac
new file mode 100644
index 0000000..d75b211
Binary files /dev/null and b/en-US/files/SuperCollider/Method_One.flac differ
diff --git a/en-US/files/SuperCollider/Method_One.sc b/en-US/files/SuperCollider/Method_One.sc
new file mode 100644
index 0000000..06d8ed6
--- /dev/null
+++ b/en-US/files/SuperCollider/Method_One.sc
@@ -0,0 +1,271 @@
+// "Method One"
+// 
+// Composed for the Fedora Project's "Musicians' Guide."
+// Christopher Antila.
+// 
+// Creative Commons CC-BY-SA 3.0
+// http://creativecommons.org/licenses/by-sa/3.0/
+
+(
+//    The method is, "Choose something, and take it to the extreme."
+// Here I've chosen to take SinOsc to the extreme, so I use it in every
+// way that I can imagine.  Of course, there are more and different ways
+// to use SinOsc.
+
+//    When looking at this source code (as with any SuperCollider source
+// file), keep in mind that there will be other ways to achieve the
+// same end result.  I always find it helpful to arrange my code in
+// such a way as to make it easily understood.
+
+
+
+
+
+
+//    I'm creating a new TempoClock and assigning it to "t_c".  This
+// way, when I change the tempo later, it won't be interfering with
+// the default TempoClock (which is TempoClock.default).  It must be
+// declared here, so that all of the functions in the file can access
+// it, and I've put it first because, in each "scope," all var objects
+// must be declared before anything else.  Really, I could have written:
+//    var t_c;
+// here, and only run:
+//    t_c = TempoClock.new;
+// later.  There is no benefit to that *for this file*, so they're together.
+var t_c = TempoClock.new;
+
+
+
+
+
+
+//    This is the function that, when executed (by calling
+// secondPart.value ), will produce the second part of this simple
+// three-part form.  Because it's assigned to a "var", it needs to
+// be placed above the first part, which is a SynthDef sent to the
+// server.
+// 
+//    I've written this as a function, rather than as a SynthDef. The
+// intention is that it sounds different every time it is heard, which
+// is why I use pseudo-randomness in the "func" sub-function (see
+// inside).  If this had been written as a SynthDef, then the pitches
+// would be calculated pseudo-randomly *once* and every time a new
+// Synth was created from it, it would have the same pitches.  Because
+// it's a function, however, the pitches are generated pseudo-randomly
+// every time the function is run.
+// 
+//    Since the function is only run once in the execution of this
+// program, you may be wondering why it matters.  Every time the
+// program is run, the SynthDef would be re-calculated and sent to the
+// server again.  In other words, every time the program is run, this
+// middle section will sound different whether it's a SynthDef or a
+// function.
+// 
+//    This is true, but one of the principles of good programming is
+// to allow for maximum flexibility.  If I later wanted to add another
+// playing of "secondPart" to the program, I can do that easily, and
+// it would produce different pitches each time.  I might also want to
+// take this function and put it into a different program, and writing
+// it as a function again allows for greater flexibility.  Besides, if
+// I decided that I wanted a SynthDef, it's easy to get one from a
+// function (in fact, it's impossible to get one without a function!)
+//    SynthDef.new( "SecondPart", secondPart ).send( s );
+// But you can't get the function out of a SynthDef.
+var secondPart = 
+{
+   // This creates a new array with the ability to hold ten objects of
+   // any sort.  It's going to be used to hold each of the SinOsc
+   // objects that are created in this section.  By using an array
+   // (in SuperCollider called "ArrayedCollection"), I don't have to
+   // worry about code like this:
+   //    var so_1;
+   //    var so_2;
+   //    ...
+   //    var so_10;
+   // to hold the ten SinOsc's.  
+   var sounds = Array.new( 10 );
+   
+   // This generates a pseudo-random number to use as the pitch or
+   // frequency (here meaning the same thing), and then creates two
+   // equal SinOsc's on either side of the stereo image.
+   var func =
+   {
+      // a_number.rand means "generate a pseudo-random number between
+      // 0 and a_number".  I've added 200 to this because frequencies
+      // below 200 aren't particularly useful, in terms of pitch. So
+      // the result of this is a number between 200 and 800.
+      var freq = 200 + 600.rand;
+      
+      // This is what the function returns, and it's why you can "play"
+      // the function.  When you run func.play, you aren't actually
+      // playing func, but rather you're playing what func returns.
+      [ SinOsc.ar( freq:freq, mul:0.01),
+        SinOsc.ar( freq:freq, mul:0.01) ];
+   };
+
+   // This part could certainly be written more elegantly (that is, with
+   // less pointless repetition).  When programming, whether for audio
+   // or any other reason, repetition is usually regarded as the
+   // enemy of good code.  What if I wanted to change the time between
+   // the addition of each object, from 5 beats to 6?  What if I wanted
+   // to change the number of objects from 10 to 300?  Worse still,
+   // what if I made a typing mistake in one line, and copy-and-pasted
+   // it to all the others?  I would have to correct them all.  What
+   // a pain!
+   // 
+   // As an exercise, try to make this more efficient.  You'll need
+   // to read up on "control structures" (see the SuperCollider help
+   // files).  It's possible to work these ten lines into one - in
+   // fact, it's recommended!
+   t_c.sched( 1, { sounds = sounds.add( func.play ); } );
+   t_c.sched( 6, { sounds = sounds.add( func.play ); } );
+   t_c.sched( 11, { sounds = sounds.add( func.play ); } );
+   t_c.sched( 16, { sounds = sounds.add( func.play ); } );
+   t_c.sched( 21, { sounds = sounds.add( func.play ); } );
+   t_c.sched( 26, { sounds = sounds.add( func.play ); } );
+   t_c.sched( 31, { sounds = sounds.add( func.play ); } );
+   t_c.sched( 36, { sounds = sounds.add( func.play ); } );
+   t_c.sched( 41, { sounds = sounds.add( func.play ); } );
+   t_c.sched( 46, { sounds = sounds.add( func.play ); } );
+
+   // This will stop all the sounds held in "sounds".  The last "nil"
+   // is required as a return value for the function, or else the .do
+   // function will return "10", which t_c.sched() interprets as meaning
+   // "run me again 10 beats after I finish."  This isn't disastrous,
+   // as it might be in a more complex program, but it would give a
+   // lot of error messages to anybody watching the "SuperCollider
+   // output" pane.
+   t_c.sched( 51, { 10.do( { arg index; sounds[index].free; } ); nil; } );
+   
+};
+
+
+
+
+
+
+//    This SynthDef represents the first part of the piece.  Note that
+// because the concluding brace is followed by ".send(s)", this
+// definition gets sent to the server.  Although we have no local var
+// that points to this SynthDef, we can use Synth.new( "FirstPart" ),
+// because the server knows what "FirstPart" is.
+// 
+//    I've chosen to write this as a SynthDef because it does not need
+// to change when it is played.  It is intended to always sound the same,
+// so there is no reason for the server to re-calculate everything
+// each time it is to be played.  This is not the case for the second
+// part (see above).
+// 
+//    Above, I claimed it's impossible to get a SynthDef
+// without a function.  Although "FirstPart" may look like a SynthDef
+// without a function, the function simply isn't named, but it does
+// start at the { and end at the }.  So, why not declare this as a
+// function, then make a SynthDef below it, like this?
+//    SynthDef.new( "FirstPart", firstPart ).send( s );
+// Personal preference, really.  This format makes it more clear that
+// "FirstPart" is only intended to be run as a Synth, and it also avoids
+// the very minor computational slow-down that would have been involved
+// with declaring a function, and a SynthDef from that.
+SynthDef.new( \FirstPart,
+{
+   // These set and modulate the frequency emitted by the left and
+   // right channels, respectively.
+   // 
+   // What I've called "drone" is the slowly-moving pitches.
+   // 
+   // "freq" changes how quickly the frequency changes
+   // "mul" changes the range of oscillation
+   // "add" is the lowest frequency it will hit
+   //
+   // The resulting frequency goes between "add" and "add + mul",
+   // and it reaches each extreme "freq" times per second
+   var frequencyL = SinOsc.kr( freq:10, mul:200, add:400 );
+   var frequencyR = SinOsc.kr( freq:1, mul:50, add:150 );
+   var frequencyL_drone = SinOsc.kr( freq:0.03, mul:20, add:100 );
+   var frequencyR_drone = SinOsc.kr( freq:0.01, mul:20, add:210 );
+   
+   // This will change the volume of the left audio channel.
+   // It was annoying when too loud for too long.
+   // 
+   // It means that the volume will go between 0.03 and 0.05, reaching
+   // the extremes once every two seconds.
+   var volumeL = SinOsc.kr( freq:0.5, mul:0.02, add:0.03 );
+   
+   //    This is where I'm compiling the sound generators themselves.
+   // Notice that all the SinOsc's above were SinOsc.kr(), for "kontrol,"
+   // and all the ones here are SinOsc.ar(), for "audio."  I use array
+   // notation, which is the [ ] brackets, several times.  This allows
+   // multiple SinOsc calls with different arguments, and within each
+   // call it allows multiple audio streams to be outputted, with
+   // different frequencies.  While you might expect there to by
+   // multi-channel audio created from this, that's not the case,
+   // because everything assigned to "left" or "right" is ultimately
+   // played below.  More on that later...
+   var left = [ SinOsc.ar( freq:frequencyL, mul:volumeL ), // this is the oscillating part
+                SinOsc.ar( freq:[frequencyL_drone,2*frequencyL_drone], mul:0.02 ), // the rest make up the drone; the numbers are close to the 2^x series
+                SinOsc.ar( freq:[5*frequencyL_drone,7*frequencyL_drone], mul:0.005 ),
+                SinOsc.ar( freq:[13*frequencyL_drone,28*frequencyL_drone], mul:0.001 ) ];
+   
+   var right = [ SinOsc.ar( freq:frequencyR, mul:0.1 ), // this is the oscillating part
+                 SinOsc.ar( freq:[frequencyR_drone,2*frequencyR_drone], mul:0.02 ), // the rest make up the drone
+                 SinOsc.ar( freq:4*frequencyR_drone, mul:0.005 ),
+                 SinOsc.ar( freq:[64*frequencyR_drone,128*frequencyR_drone], mul:0.01 ) ]; // high frequencies!
+   
+   //    This stereo mix is what ultimately gets played.  Notice that
+   // any multichannel effects created while mixing "left" and "right"
+   // are ignored here, and all the sound from each variable is put
+   // into one channel: all of the channels from "left" get played in
+   // the new left channel, and all of the channels from "right" get
+   // played in the new right channel.
+   // 
+   //    Try commenting the array, and play "left" and "right" by
+   // uncommenting the following lines, one at a time.  When you do
+   // that, the multichannel mix of the variable is preserved, which
+   // may lead to a surprising result (if it doesn't, listen more
+   // carefully, and compare to the original).
+   // 
+   //    For an explanation, go read about busses, and keep in mind
+   // that this array doesn't create "left" and "right" channels,
+   // but rather plays to busses 0 and 1, which usually wind up being
+   // played through the speakers as "left" and "right" channels.
+   Out.ar( 0, [left,right] );
+    
+} ).send( s );
+
+
+
+
+
+
+//    This is the equivalent of the "main" function in a C-like language,
+// which basically "causes" everything else to happen.  It's important
+// to include the ".value;" at the end, or else executing the program
+// would result in "a Function" in the output pane, and no sound.
+{
+   // This will hold the currently-running instance of "FirstPart".
+   // I've set it to 0 now as a matter of habit, like initializing an
+   // int in C.
+   var sound = 0;
+   
+   // This sets the tempo to one beat per second; in effect, t_c now
+   // counts in seconds.
+   t_c.tempo_( 1 );
+   
+   // This schedules events to take place.  By number of beats after start:
+   // 1: "FirstPart" starts to play.
+   // 60: "FirstPart" is silenced.
+   // 60: secondPart is engaged (but starts to play only on beat 61).
+   // 112: "FirstPart" starts to play.
+   // 142: "FirstPart" is silenced.
+   t_c.sched( 1, { sound = Synth.new( \FirstPart ); } );
+   t_c.sched( 61, { sound.free; } );
+   t_c.sched( 61, { secondPart.value; nil; } ); // this takes 51 beats to complete
+   t_c.sched( 113, { sound = Synth.new( \FirstPart ); } );
+   t_c.sched( 143, { sound.free; } );
+   //    I could have simply "paused" the \FirstPart synth, but then it
+   // wouldn't necessarily re-start at the same point in the oscillation
+   // as it did when first created.
+}.value;
+
+)
+ 


More information about the docs-commits mailing list