From Fedora Project Wiki

(→‎Benefits to the Community: revised section, adding who will give Benefits to the Fedora Community)
(page locked notice applied)
 
(29 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{admon/important|This Is a Draft|This draft is nearly completePlease leave comments for improvement!  Thank you.}}
{{admon/important|Proposal deadline is passed. This page is locked.|Do not change any details on this pageIf must change something, talk with the project mentor first.}}


== About my Project ==
== About my Project ==
Line 7: Line 7:


=== Description ===
=== Description ===
The goal of this project is to create a User Guide for music and audio programs on Fedora Linux.  The Guide will address problems and questions faced by musicians who use computers as a creative platform, in an attempt to illustrate that the specialized applications they require are available on Linux.  This gives the Guide a specific target audience: highly-trained musicians who have little or no knowledge of Linux, but who are capable of similar work with commercial software programs on either Windows or Mac OS X.  This requires a very specific mode of writing, where I will be fully explaining the technological implications, but leaving out much of the musical implications.  I do not believe that this renders the Guide inaccessible to laypeople.  A concerted effort will be made to ensure that every task has an obvious outcome, so that any sufficiently interested user will be able to use the Guide.  Even so, the primary purpose of this Guide will be to open the possibilities of open-source software to users who require specialized audio or music software.  These users are traditionally stuck paying large sums of money for closed-source software, which they usually lack the time to learn completely.
The goal of this project is to create a user guide for music and audio programs on Fedora Linux.  The guide will illustrate both basic and advanced uses of leading open-source audio software, in an attempt to address problems and questions faced by musicians who use computers as a creative platform.  This gives the guide a specific target audience: well-trained musicians with little or no knowledge of Linux, who are capable of similar tasks with commercial software applications on Windows or Mac OS X.  These users traditionally pay large sums of money for closed-source software, so this guide will show that the specialized software applications required by these users are available and operable on Linux.
 
The target audience requires a specific mode of writing, where the technological implications of their actions will be fully explained, and the musical implications will be mostly absent.  I do not believe that this renders the guide inaccessible to laypeople: it is always the user's responsibility to decide ''what'' to do; this guide will show them ''how'' to do itFurthermore, a concerted effort will be made to ensure that every task has an obvious outcome, so that any sufficiently interested user will be able to benefit from using this guide.


The document will be written on the Fedora Wiki, with a probable transition to DocBook XML and Publican.
The document will be written on the Fedora Wiki, with a probable transition to DocBook XML and Publican.
Line 15: Line 17:
== Benefits to the Community ==
== Benefits to the Community ==
=== Impact on the Fedora Community ===
=== Impact on the Fedora Community ===
* Me: The creation of this Guide will allow the Fedora Project to target a new potential user base, which would otherwise be unlikely to switch.  Certain sections of the Guide may help to illustrate the shortcomings of audio and music software on Fedora or Linux, giving other contributors a set of areas to focus attention.  Conversely, certain sections may highlight some of Fedora's (or Linux's) hidden strengths - areas that Fedora can advertise its advanced capabilities.  I expect this to be the case with most of the programs, because few musicians know about them - or know how to use them - but many are of very high quality.
* Me: The creation of this Guide will allow the Fedora Project to target a new user base, which would otherwise be unlikely to switch.  Certain sections of the Guide may help to illustrate the shortcomings of audio and music software on Fedora or Linux, giving other contributors a set of areas to focus attention.  Conversely, certain sections may highlight some of Fedora's (or Linux's) hidden strengths - areas that Fedora can advertise its advanced capabilities.  I expect this to be the case with most of the programs, because few musicians know about them - or how to use them - but many are of very high quality.
* Mentor: (required from Rudi Landmann)
* Mentor: This guide will present Fedora as a useful tool for creators and performers of music. I believe that this will expand the Fedora community into a specific class of users for whom we have offered little formal support up to now. As Christopher points out, it also assists the existing Fedora community by identifying specific shortcomings and unresolved problems. [[User:Rlandmann|Rlandmann]] 23:34, 18 May 2010 (UTC)
* Community Member: (to be offered by Vivian)
* Community Member: "As a graduate student in music and through my lengthy experience with closed-source music software, I can see several positive ways in which the completion of this guide could benefit the Fedora and music communities. Firstly, the guide would make open-source programs like LilyPond more accessible and easier to understand. As a result, I believe that more musicians would be willing to convert to these programs rather than to pay big sums of money for closed-sourced programs that do the same thing. As well, I think that this guide would allow amateur and professional musicians to explore other aspects of music-making by discovering programs through this guide that would let them do so." (Vivian L., email: vivluong from Google's free webmail service)


=== How I Will Keep the Community Informed of my Progress ===
=== How I Will Keep the Community Informed of my Progress ===
In addition to the twice-weekly blogging, I intend to publish a weekly summary of my activities to select newsgroups (at least summer-coding-discuss, and music@fedora, docs@fedora, or Planet CCRMA as the communities seem interested).  Furthermore, all of my development will take place publicly on the Fedora Wiki.  This will inevitably lead to (temporary,) poorly-organized wiki pages, but it has the benefits that I can carry out development from any computer, that it is an established platform for community interaction, and that anybody has the ability to monitor and contribute to the project's progress.  Also, it allows the widest possible target-audience testing.  A schedule on the wiki will help observers to track my progress.
In addition to blogging twice a week, I intend to publish a weekly summary of my activities to select newsgroups (at least summer-coding-discuss, and perhaps also music@fedora, docs@fedora, or Planet CCRMA).  Furthermore, all of my development will take place publicly on the Fedora Wiki.  This will inevitably lead to some confusion, and temporarily poorly-organized wiki pages, but it has the benefits that I can carry out development from any computer, that it is an established platform for community interaction, and that anybody has the ability to monitor and contribute to the project's progress.  Also, it allows the widest possible target-audience testing.  A regularly-updated, detailed schedule on the wiki will help observers to track my progress.


=== How I Will Solve Problems if my Mentor(s) Is/Are not Available ===
=== How I Will Solve Problems if my Mentor(s) Is/Are not Available ===
This is obviously a difficult situation, and it is one of the reasons that I chose the development method above.  Because of this, a large number of people may already be watching; if they aren't, then it will be easy for me to show them my problem areas.  The usual IRC channels and newsgroups are an obvious solution, along with searching Google.  Another key strategy, which will hopefully help avoid becoming stuck in the first place, is to read other, similar documents, for this and other operating systems.  By reading existing documentation, I hope to avoid pitfalls that may have befallen their writers.
This is obviously a difficult situation, and it is one of the reasons that I chose the development method above.  Because of this, some people may already be watching; if they aren't, then it will be easy for me to show them where I'm having trouble.  Another key strategy, which will hopefully help avoid becoming stuck in the first place, is to read other, similar documents, for this and other operating systems.  By reading existing documentation, I hope to avoid pitfalls that may limit the usefulness of this existing documentation.  Of course, IRC channels, mailing lists, and internet search engines are an obvious possibility.


== About Me ==
== About Me ==
Line 29: Line 31:


=== I Believe in Myself! ===
=== I Believe in Myself! ===
As a student of music history and theory, much of my livelihood over the past four years has been involved with managing large research projects.  As a keen user of Linux for most of this time (and of Mac OS X for the rest of it), I have grown accustomed to using open-source tools to wholly or partly complete these projects.  A scholarly paper and a User Guide are both large documents, written with a specific purpose in mind.  They both require a great deal of thought, planning, and organization on the part of the author(s).  They both also require a great attention to detail, and it is here where my musical training will help the most.  Attention to detail is part of what makes or breaks the performing career of a Western classical musician.  Many years of musical training - topped off by four years of dedicated study - have taught me quite a lot about rehearsing every possibility multiple times, just in case it fails once or twice.  This unique perspective, primarily as a musician rather than a computer programmer, is the reason that I believe my abilities are well-suited to this task.
As a student of music history and theory, much of my livelihood involves managing large research projects.  As a keen user of Linux for most of this time (and of Mac OS X for the rest of it), I have grown accustomed to using open-source tools to wholly or partly complete these projects.  Furthermore, a scholarly paper and a user guide are both large documents, written with a specific purpose in mind.  They both require a great deal of thought, planning, and organization on the part of the author(s).  They both also require great attention to detail, and it is here where my musical training will help the most.  Attention to detail is part of what makes or breaks the career of a Western classical musician.  Many years of musical training - followed by four years of study at a university - have taught me quite a lot about rehearsing every possibility multiple times, just in case it fails once or twice.  This unique perspective, primarily as a musician rather than a computer programmer, is the reason that I believe my abilities are well-suited to this task.


== Schedule and Task-List ==
== Definitions ==
=== Various Tasks and Deadlines: ===
I use the following terms in the following ways.
* Featured software applications must be selected.
* ''Tutorial'': One topic or process covered in the guide, such as "Installation of Ardour."
* Supplementary tasks must be selected.
* Suggest possible tasks and tutorial topics (i.e. chapter topics)
* Revise schedule to include specific topics for specific weeks.
* 19 May : Application must be finalized, with all above tasks completed.
* 28 May : Informed yes/no about project.
 
=== Definitions (because I don't know the 'real' words): ===
* ''Tutorial algorithm'': The steps to be followed in each tutorial, such as:
* ''Tutorial algorithm'': The steps to be followed in each tutorial, such as:
*# Open Terminal.
*# Open Terminal.
Line 48: Line 43:
* ''Target-audience testing'': Testing to ensure that members of the document's target audience group will be able to use the document as intended.
* ''Target-audience testing'': Testing to ensure that members of the document's target audience group will be able to use the document as intended.


=== Schedule, by Project Week Number: ===
== Schedule, by Project Week Number ==
<!-- === Various Tasks and Deadlines: ===
* Featured software applications must be selected.    (done!)
* Supplementary tasks must be selected.    (done!)
* Suggest possible tasks and tutorial topics (i.e. chapter topics)    (done!)
* Revise schedule to include specific topics for specific weeks.    (done!)
* 19 May : Application must be finalized, with all above tasks completed.    (not done... )
* 28 May : Informed yes/no about project.    (not done... )
-->
# (28 - 30 May):  
# (28 - 30 May):  
#* Ensure completion of pre-approval tasks.
#* Write message and find subjects for tutorial-algorithm testing, and target-audience testing.
#* Write message and find subjects for target-audience testing.
#* Create development/testing environments (list is for personal reference):
#* Write message and find subjects for tutorial-algorithm testing.
#** Fedora 13 x64 (KDE only) on fwt
#** Fedora 13 i686 (KDE only) on hp
#** Fedora 13 x64 (KDE) in vbox
#** Fedora 13 x64 (GNOME) in vbox
#** Fedora 13 x64 (XFCE) in vbox
#** Fedora 13 i686 (KDE) in vbox
#** Fedora 13 i686 (GNOME) in vbox
#** Fedora 13 i686 (XFCE) in vbox
# (31 May - 6 June):
# (31 May - 6 June):
#* Finalize tasks/tutorial topics.
#* Finalize tutorial topics, revising schedule as needed.
#* Revise schedule as needed to incorporate the finalized tutorial topics.
#* Compile list of users/platforms willing to help with testing.
#* Begin writing tutorial algorithms.
#* Begin Writing Tutorial Algorithms (these will require less research):
#** Sound Servers: JACK
#** Sound Servers: PulseAudio
#** Planet CCRMA: Repository Configuration
#** Recording: Audacity
#** Synthesizers: SuperCollider
#** Typesetting: LilyPond
#** Typesetting: Frescobaldi
# (7 - 13 June):
# (7 - 13 June):
#* Test previous week's tutorial algorithms.
#* Test previous week's tutorial algorithms.
#* Finish writing tutorial algorithms.
#* Finish writing tutorial algorithms (these will require more research):
#** Recording: Ardour
#** Synthesizers: FluidSynth/QSynth
#** Synthesizers: Rosegarden
#** Synthesizers: Qtractor
#** Training: GNU Solfege
# (14 - 20 June):
# (14 - 20 June):
#* Test previous week's tutorial algorithms.
#* Test previous week's tutorial algorithms.
#* Review algorithms, seeking possible mistakes or pitfalls, and forewarn about them.
#* Review algorithms, seeking possible mistakes or pitfalls, and forewarn about them.
#* Buffer week.
# (21 - 27 June):  
# (21 - 27 June):  
#* Begin writing documents on the Fedora Wiki.
#* Ensure contact is made with the Docs SIG about the evolution to an "official" document.
#* Ensure contact is made with the Docs SIG about the evolution to an "official" document.
#* Begin writing documents on the Fedora Wiki (algorithms will already be on the Wiki):
#** Sound Cards
#** Sound Servers: ALSA, Phonon, and Informational Background
#** Sound Servers: JACK
#** Sound Servers: PulseAudio
#** Planet CCRMA: Informational Background
#** Planet CCRMA: Repository Configuration
#** Recording: Audacity vs. Ardour
#** Recording: Audacity
#** Synthesizers: SuperCollider
#** Typesetting: LilyPond
#** Typesetting: Frescobaldi
# (28 June - 4 July): Week of Canada Day
# (28 June - 4 July): Week of Canada Day
#* Finish writing documents on the Fedora Wiki.
#* Finish writing documents on the Fedora Wiki:
#* Begin target-audience testing.
#** Recording: Ardour
#** Synthesizers: FluidSynth/QSynth
#** Synthesizers: Rosegarden
#** Synthesizers: Qtractor
#** Training: GNU Solfege
#* Begin target-audience testing with previous week's material.
# (5 - 11 July): Midterm
# (5 - 11 July): Midterm
#* Continue target-audience testing.
#* Continue target-audience testing.
Line 79: Line 118:
# (19 - 25 July):  
# (19 - 25 July):  
#* Convert document to DocBook XML?
#* Convert document to DocBook XML?
#* Write and Test Optional Sections (Algorithms):
#** Kernel Optimization
#** Webcasting: Icecast
# (26 July - 1 August):  
# (26 July - 1 August):  
#* Finish converting to DocBook XML?
#* Finish converting to DocBook XML?
#* Write and Test Optional Sections (Prose):
#** Kernel Optimization
#** Webcasting: Icecast
# (2 - 8 August): Week of Another Long Weekend:  
# (2 - 8 August): Week of Another Long Weekend:  
#* This is a buffer week, which shall receive no assigned task.
#* This is a buffer week, which shall receive no assigned task (except optional tasks).
#* Convert Optional Sections to DocBook XML
# (9 August): Project Completion.
# (9 August): Project Completion.
#* Write final report, due 16 August.
#* Write final report, due 16 August.
Line 89: Line 135:
# Return to real life.
# Return to real life.


<!--
== Proposed Tutorial Topics ==
== What Research Needs to Be Done ==
(1.) Topics marked as "optional" will be completed as time permits, during project weeks 9, 10, and 11. See the proposed schedule for details.
Precedents
*read the Fedora User Guide and Installation Guide for hints
*find out what is already well-documented & link it in
*see:
**http://ccrma.stanford.edu/planetccrma/software/packages.html
**http://linux-sound.org/one-page.html
**http://linux-sound.org/plugins.html
**http://www.rosegardenmusic.com/tutorials/ e.g.
**http://www.rosegardenmusic.com/tutorials/en/chapter-0.html
**http://www.rosegardenmusic.com/tutorials/supplemental/zyn/zyn.html
**http://www.rosegardenmusic.com/tutorials/supplemental/hydrogen/
**http://electronaut.linuxgamers.net/~lsd/music/synthtute/part01_overview.ogv
**http://orford.org/assets/jack.php
**http://www.linuxjournal.com/taxonomy/term/28
**https://fedoraproject.org/wiki/AudioCreation
**http://www.passback.org.uk/music/fedora-music-intro/
**and more?
 
PlanetCCRMA
*read the Planet CCRMA documentation, which will be included basically as-is (algorithms-wise, at least?!)
*will there be a timely release for F13? F14?
 
Kernels (optional)
*is it necessary to apply an RT patch to a standard Fedora kernel?
*how to compile one's own kernel
*how to compile an RT-patched kernel
*what will cause poor audio performance?
 
Tasks/Programs
*find out which tasks I want to use (synthesizer, recording/mixer, notated scores, aural skills)
**http://ccrma.stanford.edu/planetccrma/software/packages.html (including "Roadmap")
**http://en.wikipedia.org/wiki/List_of_Linux_audio_software
**http://sound.condorow.net/
**http://wiki.linuxaudio.org/apps/start
**http://linuxaudio.org/
**https://fedoraproject.org/wiki/AudioCreation
**distros
***http://www.64studio.com/ (!)
***http://en.wikipedia.org/wiki/Ubuntu_Studio (http://ubuntustudio.org/) -- Wikipedia page has a list of included applications (!)
***http://www.dynebolic.org/ (!)
***http://proaudio.tuxfamily.org/wiki/index.php?title=Main_Page
***JAD: (jacklab.net) -- wherever it went
***http://openartisthq.org/
***http://puredyne.goto10.org/
**categories
***graphical/text audio programming: gAlan, Ingen, jMax, OpenSoundWorld, Pure Data, ChucK, Csound, Nyquist, SuperCollider
***DJ tools: Digital-Scratch, DJPlay, Mixxx, TerminatorX, UltraMixer, xwax
***drum machines: csDrummer, Hydrogen, Jackbeat
***recording, editing, mastering: Ardour, Audacity, Buzztard (synthesis?), Gnome Wave Cleaner, Jokosher, LMMS (Linux MultiMedia Studio), MusE, NoteEdit, MuseScore (not in CCRMA?), Renoise (DAW), ReZound (like Audacity?), Qtractor (DAW), Rosegaren (DAW??), seq24 (loop-based MIDI sequencer), Sweep ("digital audio editor"), mscore
***sound servers (?): Phonon, JACK, PulseAudio, NAS(?)
***patch bays: Qjackctl, Patchage [ do both if possible ]
***synthesizers: FluidSynth (with QSynth), Bristol (organ synthesis), TiMidity++ (?), ZynAddSubFX?
***effects processing: LADSPA, DSSI?, LinuxDSP?, Jack Rack
***no: format transcoding
***no: radio broadcasting
***no: radio listening
***no: tablature, guitar, fretted instrument software
***music study software: GNU Solfege, Javtronome, multi-metronome, GTick,
**find out which programs to use for the tasks
**find out which specific tasks will require specific instructions
-->
 


== Proposed Applications ==
(2.) Where possible, I will avoid replication of material by referring to existing Fedora Project documentation.
=== Sound Servers ===
* <code>ALSA</code>, because you can't escape it
* <code>PulseAudio</code>, because it's difficult to escape
* <code>JACK</code>, because you can't escape it (if you're using audiophile software)
* <code>Phonon</code>, because KDE users wonder about it
These will be covered in varying detail, as required.  The greatest discussion would be in the section about system optimization.
=== Recording ===
* '''Audacity''', because it's well-known, relatively simple, and doesn't 'require' advanced configuration
* '''Ardour''', because it's similar to a well-known commercial DAW, and should be used with advanced configuration
=== Synthesizers  and Sequencers ===
* <code>SuperCollider</code>, because it's text-based, it gives a reason to introduce <code>Planet CCRMA</code>, it's full of features but relatively simple, and I know it better than <code>Csound</code>
* <code>FluidSynth</code> with '''QSynth''', because it's graphical, works with <code>JACK</code> and other programs, and '''Rosegarden''' more or less needs it
* '''Qtractor''', because it seems to have grown more useful than '''Rosegarden'''
* Alsa Modular Synth, Phasex, or Yoshimi?
=== Typesetting ===
* <code>LilyPond</code>, because it's the gold standard for typesetting in Linux
* '''Frescobaldi''', because it increases productivity with <code>LilyPond</code> by quite a lot
* AriaMaestosa?
=== Training ===
* '''GNU Solfege''', because it's the only FOSS program of its kind (I think?)
 
== Proposed Tutorial Topics ==
=== System Tasks ===
=== System Tasks ===
* Configuring Planet CCRMA
* Understanding Sound Cards
* Optimizing for JACK
** What Is a "Sound Card?"
* Eliminating PulseAudio
** How Do I Find Information about my audio interface? (optional)
* Compiling or Downloading/Installing a real-time kernel
** How Do I Find Information about my MIDI interface? (optional)
** How Do I Know Which Input/Output Port to Use?
* Understanding Sound Servers
** What a Sound Server Is
** Advanced Linux Sound Architecture (ALSA)
*** What ALSA Is, and Why It Exists
** PulseAudio
*** What PulseAudio Is, and Why It Exists
*** Knowing When to Use PulseAudio
*** How to Disable PulseAudio
*** How to Remove PulseAudio
** JACK Advanced Connection Kit
*** What JACK Is, and Why It Exists
*** Knowing When to Use JACK
*** How to Setup Your System for JACK (will refer to kernel section, later)
*** Controlling JACK with QjackCtl
** Phonon
*** What Phonon Is, and Why It Exists
*** Knowing When to Use Phonon
* Planet CCRMA at Home
** What Planet CCRMA Is, and Why It Exists
** Knowing Whether You Should Use Planet CCRMA (including risks & benefits of third-party repositories)
** Adding the Planet CCRMA Repositories
** Downloading and Installing Software from Planet CCRMA
* Optimizing the Linux Kernel for Audio Applications (optional, but highly desired - at least CCRMA)
** What Is a Realtime Kernel? (including "What is processor scheduling?")
** Using a Pre-built Realtime Kernel from Planet CCRMA (including "Planet CCRMA's kernels may be older than Fedora's")
** Building Your Own Audio-Optimized Kernel (of course, with appropriate disclaimers)
** Other Possible Optimizations (this will primarily be the removal of unused device drivers)
=== Audio Tasks ===
=== Audio Tasks ===
* List of applications goes here
* Recording
** Knowing Whether to Use Audacity or Ardour
** Audacity
*** Requirements and Installation
*** Configuration
*** Recording a Session
*** Saving and Exporting
*** Using Simple Effects
** Ardour
*** Requirements and Installation
*** Configuration
*** Recording a Session
*** Saving and Exporting
*** Something Complex
*** Something else Complex
* Synthesizers and Sequencers
** SuperCollider
*** What Is SuperCollider?
*** The Different Parts of SC
*** Requirements and Installation
*** Using GEdit to write and run code/programs/music
*** Composing with SuperCollider (Method 1)
*** Composing with SuperCollider (Method 2) (N.B. these 'methods' are intended to help users learn compositional strategies... the software is not particularly inviting)
*** Exporting Sound Files
** FluidSynth
*** What Is FluidSynth?
*** About SoundFonts?
*** Requirements and Installation
*** Configuration
*** QSynth: Introduction and Installation
*** Using JACK with FluidSynth
*** Redirecting Output for Recording
** Qtractor & Rosegarden: These will be in separate sections, but I'll need to learn the programs better before deciding what to do.
* Typesetting
** LilyPond
*** What LilyPond Is
*** How LilyPond Works (and "LP is best used with other programs to help it")
*** Installation (and Configuration, if Required)
*** A Brief Introduction to LilyPond Syntax
**** Working on a Counterpoint Exercise (this is a simple score)
**** Working on a Piano Score (these can get quite complex; we'll focus on issues unique to piano music)
**** Working on an Large Ensemble Score (probably a work for orchestra; we'll focus on issues unique to large ensemble music)
** Frescobaldi (N.B. this is a modified text editor for use specifically with LilyPond files)
*** What Frescobaldi Is, and How It Can Help
*** Installation and Configuration
*** The Basic Features of Frescobaldi
*** The Advanced Features of Frescobaldi
* Aural Skills Training
** GNU Solfege
*** I haven't used this in years, and it has changed quite a lot.  I'll have to re-learn the software, then decide what to do.
* Webcasting (highly optional - would make a great addition)
** Darkice or Darksnow
** Icecast Server
** If I end up covering these applications, tutorial topics can be decided later.
<!--
== Proposed Applications ==
* Sound Servers (Covered in varying detail, as required):
** <code>ALSA</code>, because you can't escape it
** <code>PulseAudio</code>, because it's difficult to escape
** <code>JACK</code>, because you can't escape it (if you're using audiophile software)
** <code>Phonon</code>, because KDE users wonder about it
* Recording:
** '''Audacity''', because it's well-known, relatively simple, and doesn't 'require' advanced configuration
** '''Ardour''', because it's similar to a well-known commercial DAW, and should be used with advanced configuration
* Synthesizers  and Sequencers:
** <code>SuperCollider</code>, because it's text-based, it gives a reason to introduce <code>Planet CCRMA</code>, it's full of features but relatively simple, and I know it better than <code>Csound</code>
** <code>FluidSynth</code> with '''QSynth''', because it's graphical, works with <code>JACK</code> and other programs, and '''Rosegarden''' more or less needs it
** '''Qtractor''', because it is an upcoming "major player" for MIDI and audio together
** '''Rosegardn''', because it is the current "major player" for MIDI
* Typesetting:
** <code>LilyPond</code>, because it's the gold standard for typesetting in Linux
** '''Frescobaldi''', because it increases productivity with <code>LilyPond</code> by quite a lot
* Training:
** '''GNU Solfege''', because it's the only FOSS program of its kind (I think?)
* Webcasting:
** '''Darkice''' or '''Darksnow'''
** <code>Icecast</code> server


== What Testing May Need to Be Done ==
== What Testing May Need to Be Done ==
Line 192: Line 258:
*test with USB and FireWire sound cards (I can do only USB)
*test with USB and FireWire sound cards (I can do only USB)
*test efficacy with "computer experts" and "non-experts" (I can't do this)
*test efficacy with "computer experts" and "non-experts" (I can't do this)
 
-->
== Miscellaneous ==
== Miscellaneous ==
-Can you set up an appropriate development environment?
-Can you set up an appropriate development environment?
Line 200: Line 266:
-Have you met your proposed mentor and members of the associated community?
-Have you met your proposed mentor and members of the associated community?


Sort of.
Yes, they are Rudi Landmann (docs) and Anthony Green (music).  I have also been in contact with several mailing lists and IRC channels, and received a few interested responses.


-What is your t-shirt size?
-What is your t-shirt size?
Line 206: Line 272:
Probably "M".
Probably "M".


<!--
-Describe a great learning experience you had as a child
-Describe a great learning experience you had as a child


asdf -->
Although it is not a single experience, the time that I spent with computers as a child (at about 10-15 years old) has certainly helped to shape my character.  I began by simply moving components between machines and changing settings, with no particular goal in mind.  This gave me the confidence to begin programming, and eventually move to Linux.  Once I did that, the open-source music programs available on Mandrake (yeah - Mandrake) helped me to learn about musical composition.  The question, "What can I do to make a particular sound?" is one that still drives me today.


== Comments ==
== Comments ==

Latest revision as of 17:21, 21 May 2010

Important.png
Proposal deadline is passed. This page is locked.
Do not change any details on this page. If must change something, talk with the project mentor first.

About my Project

Description

The goal of this project is to create a user guide for music and audio programs on Fedora Linux. The guide will illustrate both basic and advanced uses of leading open-source audio software, in an attempt to address problems and questions faced by musicians who use computers as a creative platform. This gives the guide a specific target audience: well-trained musicians with little or no knowledge of Linux, who are capable of similar tasks with commercial software applications on Windows or Mac OS X. These users traditionally pay large sums of money for closed-source software, so this guide will show that the specialized software applications required by these users are available and operable on Linux.

The target audience requires a specific mode of writing, where the technological implications of their actions will be fully explained, and the musical implications will be mostly absent. I do not believe that this renders the guide inaccessible to laypeople: it is always the user's responsibility to decide what to do; this guide will show them how to do it. Furthermore, a concerted effort will be made to ensure that every task has an obvious outcome, so that any sufficiently interested user will be able to benefit from using this guide.

The document will be written on the Fedora Wiki, with a probable transition to DocBook XML and Publican.

Note that my 'convincing paragraph' is here.

Benefits to the Community

Impact on the Fedora Community

  • Me: The creation of this Guide will allow the Fedora Project to target a new user base, which would otherwise be unlikely to switch. Certain sections of the Guide may help to illustrate the shortcomings of audio and music software on Fedora or Linux, giving other contributors a set of areas to focus attention. Conversely, certain sections may highlight some of Fedora's (or Linux's) hidden strengths - areas that Fedora can advertise its advanced capabilities. I expect this to be the case with most of the programs, because few musicians know about them - or how to use them - but many are of very high quality.
  • Mentor: This guide will present Fedora as a useful tool for creators and performers of music. I believe that this will expand the Fedora community into a specific class of users for whom we have offered little formal support up to now. As Christopher points out, it also assists the existing Fedora community by identifying specific shortcomings and unresolved problems. Rlandmann 23:34, 18 May 2010 (UTC)
  • Community Member: "As a graduate student in music and through my lengthy experience with closed-source music software, I can see several positive ways in which the completion of this guide could benefit the Fedora and music communities. Firstly, the guide would make open-source programs like LilyPond more accessible and easier to understand. As a result, I believe that more musicians would be willing to convert to these programs rather than to pay big sums of money for closed-sourced programs that do the same thing. As well, I think that this guide would allow amateur and professional musicians to explore other aspects of music-making by discovering programs through this guide that would let them do so." (Vivian L., email: vivluong from Google's free webmail service)

How I Will Keep the Community Informed of my Progress

In addition to blogging twice a week, I intend to publish a weekly summary of my activities to select newsgroups (at least summer-coding-discuss, and perhaps also music@fedora, docs@fedora, or Planet CCRMA). Furthermore, all of my development will take place publicly on the Fedora Wiki. This will inevitably lead to some confusion, and temporarily poorly-organized wiki pages, but it has the benefits that I can carry out development from any computer, that it is an established platform for community interaction, and that anybody has the ability to monitor and contribute to the project's progress. Also, it allows the widest possible target-audience testing. A regularly-updated, detailed schedule on the wiki will help observers to track my progress.

How I Will Solve Problems if my Mentor(s) Is/Are not Available

This is obviously a difficult situation, and it is one of the reasons that I chose the development method above. Because of this, some people may already be watching; if they aren't, then it will be easy for me to show them where I'm having trouble. Another key strategy, which will hopefully help avoid becoming stuck in the first place, is to read other, similar documents, for this and other operating systems. By reading existing documentation, I hope to avoid pitfalls that may limit the usefulness of this existing documentation. Of course, IRC channels, mailing lists, and internet search engines are an obvious possibility.

About Me

Contact Information

  • Name: Christopher Antila
  • Email Address: crantila from GMail
  • Wiki and IRC Username: crantila
  • Primary Language: English
  • Location: Ontario, Canada
  • Working Hours: about 17:00 to 2:00 UTC, but flexible

Why I Want to Work in the Open-Source Community

My previous open-source contributions are limited to bug reports for Fedora, Gentoo, and KDE. I have contemplated larger contributions in the past, but the immense time commitment is forbidding for students during an academic term. When I've been on summer "holidays," my time has been similarly consumed by a paying job, and the work required to maintain musical skills. I did not want to get involved in something that would later be left unfinished. Fedora Summer Coding will allow me to set aside the time that I would otherwise spend at a paying job.

The motivation to contribute to the open-source community stems from my belief that its values are essential to the well-being of human societies. The Fedora Project is becoming increasingly adept at marketing this philosophy, and the Four Fs summarize that point. The "freedom" and "friends" Fs are especially important to me: when you have something, you should be able to do whatever you want with it; and advancements made by one entity should be actively shared with others. This is how complex systems work: small contributions combine to make something quite unlike the parts. It would be impossible without sharing resources. Even proprietary advancements build on the readily-available work of others!

My particular project proposal, the Fedora Musicians' Guide, combines my musical abilities with my linguistic and technological abilities. Musicians are used to paying large sums of money for proprietary software that is extremely complex. Their creative work can be limited because they lack sufficient time to learn how to use their tools effectively. Although the initial learning curve can be steeper, there exist open-source tools to equal anything in the closed-source realm. My goal with this guide is to help friends and colleagues overcome that learning curve. They will save money, and be able to freely share their work. Even if they do not choose to switch to Fedora, this guide will inspire the use of open-source music tools for their chosen platform.

I Believe in Myself!

As a student of music history and theory, much of my livelihood involves managing large research projects. As a keen user of Linux for most of this time (and of Mac OS X for the rest of it), I have grown accustomed to using open-source tools to wholly or partly complete these projects. Furthermore, a scholarly paper and a user guide are both large documents, written with a specific purpose in mind. They both require a great deal of thought, planning, and organization on the part of the author(s). They both also require great attention to detail, and it is here where my musical training will help the most. Attention to detail is part of what makes or breaks the career of a Western classical musician. Many years of musical training - followed by four years of study at a university - have taught me quite a lot about rehearsing every possibility multiple times, just in case it fails once or twice. This unique perspective, primarily as a musician rather than a computer programmer, is the reason that I believe my abilities are well-suited to this task.

Definitions

I use the following terms in the following ways.

  • Tutorial: One topic or process covered in the guide, such as "Installation of Ardour."
  • Tutorial algorithm: The steps to be followed in each tutorial, such as:
    1. Open Terminal.
    2. Type sudo yum update
    3. When it stops, type y
    4. Wait for updating.
  • Target-audience testing: Testing to ensure that members of the document's target audience group will be able to use the document as intended.

Schedule, by Project Week Number

  1. (28 - 30 May):
    • Write message and find subjects for tutorial-algorithm testing, and target-audience testing.
    • Create development/testing environments (list is for personal reference):
      • Fedora 13 x64 (KDE only) on fwt
      • Fedora 13 i686 (KDE only) on hp
      • Fedora 13 x64 (KDE) in vbox
      • Fedora 13 x64 (GNOME) in vbox
      • Fedora 13 x64 (XFCE) in vbox
      • Fedora 13 i686 (KDE) in vbox
      • Fedora 13 i686 (GNOME) in vbox
      • Fedora 13 i686 (XFCE) in vbox
  2. (31 May - 6 June):
    • Finalize tutorial topics, revising schedule as needed.
    • Compile list of users/platforms willing to help with testing.
    • Begin Writing Tutorial Algorithms (these will require less research):
      • Sound Servers: JACK
      • Sound Servers: PulseAudio
      • Planet CCRMA: Repository Configuration
      • Recording: Audacity
      • Synthesizers: SuperCollider
      • Typesetting: LilyPond
      • Typesetting: Frescobaldi
  3. (7 - 13 June):
    • Test previous week's tutorial algorithms.
    • Finish writing tutorial algorithms (these will require more research):
      • Recording: Ardour
      • Synthesizers: FluidSynth/QSynth
      • Synthesizers: Rosegarden
      • Synthesizers: Qtractor
      • Training: GNU Solfege
  4. (14 - 20 June):
    • Test previous week's tutorial algorithms.
    • Review algorithms, seeking possible mistakes or pitfalls, and forewarn about them.
    • Buffer week.
  5. (21 - 27 June):
    • Ensure contact is made with the Docs SIG about the evolution to an "official" document.
    • Begin writing documents on the Fedora Wiki (algorithms will already be on the Wiki):
      • Sound Cards
      • Sound Servers: ALSA, Phonon, and Informational Background
      • Sound Servers: JACK
      • Sound Servers: PulseAudio
      • Planet CCRMA: Informational Background
      • Planet CCRMA: Repository Configuration
      • Recording: Audacity vs. Ardour
      • Recording: Audacity
      • Synthesizers: SuperCollider
      • Typesetting: LilyPond
      • Typesetting: Frescobaldi
  6. (28 June - 4 July): Week of Canada Day
    • Finish writing documents on the Fedora Wiki:
      • Recording: Ardour
      • Synthesizers: FluidSynth/QSynth
      • Synthesizers: Rosegarden
      • Synthesizers: Qtractor
      • Training: GNU Solfege
    • Begin target-audience testing with previous week's material.
  7. (5 - 11 July): Midterm
    • Continue target-audience testing.
    • Revise documents to incorporate target-audience comments.
    • Must have found editor, if the Guide is to be turned into an "official" document.
    • Write midterm report, due on 12 July.
  8. (12 - 18 July):
    • Finish target-audience testing.
    • Finish revising documents to incorporate comments of target-audience tests.
  9. (19 - 25 July):
    • Convert document to DocBook XML?
    • Write and Test Optional Sections (Algorithms):
      • Kernel Optimization
      • Webcasting: Icecast
  10. (26 July - 1 August):
    • Finish converting to DocBook XML?
    • Write and Test Optional Sections (Prose):
      • Kernel Optimization
      • Webcasting: Icecast
  11. (2 - 8 August): Week of Another Long Weekend:
    • This is a buffer week, which shall receive no assigned task (except optional tasks).
    • Convert Optional Sections to DocBook XML
  12. (9 August): Project Completion.
    • Write final report, due 16 August.
    • Create "snapshot" of all documents, due 16 August.
    • Write evaluation, due 16 August.
  13. Return to real life.

Proposed Tutorial Topics

(1.) Topics marked as "optional" will be completed as time permits, during project weeks 9, 10, and 11. See the proposed schedule for details.

(2.) Where possible, I will avoid replication of material by referring to existing Fedora Project documentation.

System Tasks

  • Understanding Sound Cards
    • What Is a "Sound Card?"
    • How Do I Find Information about my audio interface? (optional)
    • How Do I Find Information about my MIDI interface? (optional)
    • How Do I Know Which Input/Output Port to Use?
  • Understanding Sound Servers
    • What a Sound Server Is
    • Advanced Linux Sound Architecture (ALSA)
      • What ALSA Is, and Why It Exists
    • PulseAudio
      • What PulseAudio Is, and Why It Exists
      • Knowing When to Use PulseAudio
      • How to Disable PulseAudio
      • How to Remove PulseAudio
    • JACK Advanced Connection Kit
      • What JACK Is, and Why It Exists
      • Knowing When to Use JACK
      • How to Setup Your System for JACK (will refer to kernel section, later)
      • Controlling JACK with QjackCtl
    • Phonon
      • What Phonon Is, and Why It Exists
      • Knowing When to Use Phonon
  • Planet CCRMA at Home
    • What Planet CCRMA Is, and Why It Exists
    • Knowing Whether You Should Use Planet CCRMA (including risks & benefits of third-party repositories)
    • Adding the Planet CCRMA Repositories
    • Downloading and Installing Software from Planet CCRMA
  • Optimizing the Linux Kernel for Audio Applications (optional, but highly desired - at least CCRMA)
    • What Is a Realtime Kernel? (including "What is processor scheduling?")
    • Using a Pre-built Realtime Kernel from Planet CCRMA (including "Planet CCRMA's kernels may be older than Fedora's")
    • Building Your Own Audio-Optimized Kernel (of course, with appropriate disclaimers)
    • Other Possible Optimizations (this will primarily be the removal of unused device drivers)

Audio Tasks

  • Recording
    • Knowing Whether to Use Audacity or Ardour
    • Audacity
      • Requirements and Installation
      • Configuration
      • Recording a Session
      • Saving and Exporting
      • Using Simple Effects
    • Ardour
      • Requirements and Installation
      • Configuration
      • Recording a Session
      • Saving and Exporting
      • Something Complex
      • Something else Complex
  • Synthesizers and Sequencers
    • SuperCollider
      • What Is SuperCollider?
      • The Different Parts of SC
      • Requirements and Installation
      • Using GEdit to write and run code/programs/music
      • Composing with SuperCollider (Method 1)
      • Composing with SuperCollider (Method 2) (N.B. these 'methods' are intended to help users learn compositional strategies... the software is not particularly inviting)
      • Exporting Sound Files
    • FluidSynth
      • What Is FluidSynth?
      • About SoundFonts?
      • Requirements and Installation
      • Configuration
      • QSynth: Introduction and Installation
      • Using JACK with FluidSynth
      • Redirecting Output for Recording
    • Qtractor & Rosegarden: These will be in separate sections, but I'll need to learn the programs better before deciding what to do.
  • Typesetting
    • LilyPond
      • What LilyPond Is
      • How LilyPond Works (and "LP is best used with other programs to help it")
      • Installation (and Configuration, if Required)
      • A Brief Introduction to LilyPond Syntax
        • Working on a Counterpoint Exercise (this is a simple score)
        • Working on a Piano Score (these can get quite complex; we'll focus on issues unique to piano music)
        • Working on an Large Ensemble Score (probably a work for orchestra; we'll focus on issues unique to large ensemble music)
    • Frescobaldi (N.B. this is a modified text editor for use specifically with LilyPond files)
      • What Frescobaldi Is, and How It Can Help
      • Installation and Configuration
      • The Basic Features of Frescobaldi
      • The Advanced Features of Frescobaldi
  • Aural Skills Training
    • GNU Solfege
      • I haven't used this in years, and it has changed quite a lot. I'll have to re-learn the software, then decide what to do.
  • Webcasting (highly optional - would make a great addition)
    • Darkice or Darksnow
    • Icecast Server
    • If I end up covering these applications, tutorial topics can be decided later.

Miscellaneous

-Can you set up an appropriate development environment?

Yes; this is not especially difficult.

-Have you met your proposed mentor and members of the associated community?

Yes, they are Rudi Landmann (docs) and Anthony Green (music). I have also been in contact with several mailing lists and IRC channels, and received a few interested responses.

-What is your t-shirt size?

Probably "M".

-Describe a great learning experience you had as a child

Although it is not a single experience, the time that I spent with computers as a child (at about 10-15 years old) has certainly helped to shape my character. I began by simply moving components between machines and changing settings, with no particular goal in mind. This gave me the confidence to begin programming, and eventually move to Linux. Once I did that, the open-source music programs available on Mandrake (yeah - Mandrake) helped me to learn about musical composition. The question, "What can I do to make a particular sound?" is one that still drives me today.

Comments

Add comment

Please see the discussion page for comments.