commit 0da9c57e1dcb55bccda8cdca31cbf860c9b5e901
parent baad5c6db2f02d9f400be2f5a9bee20000d1d793
Author: fundamental <mark.d.mccurry@gmail.com>
Date: Wed, 18 Apr 2012 11:41:48 -0400
Doc: intro/diagrams work
- Adding more information to intro
- Updated diagrams using tikz
Diffstat:
10 files changed, 162 insertions(+), 77 deletions(-)
diff --git a/doc/Makefile b/doc/Makefile
@@ -8,12 +8,12 @@ gen-files:
xhtml: zynaddsubfx.txt envelope.txt intro.txt lfo.txt
- asciidoc -a numbered -a toc -b xhtml11 \
+ asciidoc -a numbered -a toc -b html5 \
zynaddsubfx.txt
chunked:
asciidoc --doctype=article -b docbook \
- --conf-file=myconf.conf zynaddsubfx.txt
+ zynaddsubfx.txt
rm -rf ./zynaddsubfx.chunked
mkdir ./zynaddsubfx.chunked
rm -f "./zynaddsubfx.chunked/*.html"
@@ -29,7 +29,7 @@ chunked:
"./zynaddsubfx.xml" \
pdf:
- asciidoc -b latex --conf-file=myconf.conf zynaddsubfx.txt
+ asciidoc -b latex zynaddsubfx.txt
grep -v figure zynaddsubfx.tex | \
sed -e 's~^\\includegraphics~\\par\\noindent\{\} \\includegraphics~' | \
sed -e 's~includegraphics\[\]~includegraphics[scale=0.5]~' > tmp.tex
diff --git a/doc/adsynth.txt b/doc/adsynth.txt
@@ -1,22 +1,44 @@
-Add Synth
----------
+AdSynth
+-------
-Additive Synthesis is one of the three major synthesis engines available in
-ZynAddSubFX.
-Overall it adds together several voices with an oscillator as their sound
-source.
+AdSynth, a primarily additive synthesis engine, is one of the three major
+synthesis engines available in ZynAddSubFX.
+The basic concept of this engine is the summation of a collection of voices,
+each of which consist of oscillators.
High Level (Global)
~~~~~~~~~~~~~~~~~~~
-From a high level perspective, Add synth can be understood with this block
-diagram:
+AdSynth's global level consists of the elements shown in the below figure:
-image:gen/ad-note.png[]
+.AdSynth Global Elements
+image::gen/ad-note.png[scalewidth="50%",width="700"]
-The red/yellow nodes are controllable with the main adsynth window.
+The global level of adsynth is almost entirely composed of previously discussed
+elements.
+However a few new features appear here, this includes velocity sensing, punch,
+detune options and realative bandwidth , and resonance.
+
+.AdSynth Global Window
+image::images/ad-global.png[]
+
+
+Velocity sensing is simply an exponental transformation from the note's velocity
+to some parameter change.
+The below diagram shows how the velocity senseing controls affects this
+translation over the whole range of possible note velocities.
+
+.Velocity Sensing Chart
+image::gen/velf.png[scalewidth="50%",width="600"]
+
+The puch of a note in AdSynth is a constant amplification to the output at the
+start of the note, with its length determined by the punch time and stretch and
+the amplitude being determined by the punch strength and velocity sensing.
+The relBW control in the frequency pane is effectively a multiplier for detuning
+all voices within an adnote.
+
+NOTE: TODO Talk about resonance
-image:images/ad-global.png[]
The sum of the voices are passed through filters and amplification to produce
the final sound.
@@ -29,12 +51,14 @@ Voices
The voice gives access to a similar setup to the global parameters and then some
more, such as the modulator, oscillator, and unison features.
-image:images/ad-voice.png[]
+.AdSynth Voice Window
+image::images/ad-voice.png[]
Modulation
^^^^^^^^^^
Within the options for modulation, one can select:
+
* Morph
* Ring Modulation
* Phase Modulation
@@ -47,3 +71,10 @@ Unison
Unison is useful in creating the chorus like sound of many simultaneous
oscillators
+Oscillator
+~~~~~~~~~~
+
+NOTE: TODO show waveforms, talk about distortions somewhere, etc
+
+.Oscillator Window
+image::images/uioscil.png[]
diff --git a/doc/effects.txt b/doc/effects.txt
@@ -0,0 +1,27 @@
+Effects
+-------
+
+Chorus
+~~~~~~
+
+image::./gen/chorus.png[width="700"]
+
+Distort
+~~~~~~~
+
+image::./gen/distort.png[width="700"]
+
+Dynamic Filter
+~~~~~~~~~~~~~
+
+image::./gen/dynamic.png[width="700"]
+
+Echo
+~~~~
+
+image::./gen/echo.png[width="700"]
+
+Reverb
+~~~~~~
+
+image::./gen/reverb.png[width="700"]
diff --git a/doc/gen/Makefile b/doc/gen/Makefile
@@ -5,7 +5,7 @@ all:$(OBJECTS)
%.png: %.tex
pdflatex -shell-escape $<
- convert $(<:.tex=.pdf) -density 300 -trim $@
+ convert -trim -density 300 $(<:.tex=.pdf) $@
rm -f $(<:.tex=.pdf) $(<:.tex=.log) $(<:.tex=.aux) $(<:.tex=-pic*) $(<:.tex=.pgf-plot*)
.PHONY: clean
diff --git a/doc/gen/reverb.tex b/doc/gen/reverb.tex
@@ -1,39 +1,50 @@
-\documentclass[11pt]{report}
-\pagestyle{empty}
-\usepackage{pst-sigsys}
-\usepackage{auto-pst-pdf}
+\documentclass{standalone}
+\usepackage{tikz}
+\usetikzlibrary{matrix,shapes,chains,scopes}
\begin{document}
-\begin{pspicture}[showgrid=false](0,-1)(11,2)
- %Style
- \psset{framesize=1 .65}
- \psset{style=Arrow}
+\input{fig.sty}
- %In/Out
- \rput(0,0){\rnode{in}{$x[n]$}}
- \rput(11,0){\rnode{out}{$y[n]$}}
+\begin{tikzpicture}[
+ point/.style={coordinate},
+ every on chain/.style={rounded corners}]
+ %Style
- %feedback loop
- \pscircleop(1,0){fbcomb}
- \pnode(2.5,0){decoration}
- \psfblock(2.5,1){delay}{$z^{-n}$}
- \rput(2.5,1.5){delaylen}
- \pscircleop[operation=times](1,1){fb}
- \rput(1,1.55){feedback}
- \nclist{ncline}{decoration,delay,fb,fbcomb}
+ \matrix[row sep=5mm, column sep=5mm] {
+ &
+ \node (fb) {$f_b$};&
+ \node (del) {$Delay$};
+ &&&&& \\
+ &
+ \node[op] (pb1) {$\times$};&
+ \node[block] (pb2) {$z^{-n}$}; &
+ &&&& \\
- %Filter
- \psfblock(4,0){fil}{Filter}
- \rput(4,.5){LP/HP}
+ \node (p1) {$x[n]$}; &
+ \node[op] (p2) {$+$}; &
+ \node[point] (p3) {};&
+ \node[block] (p4) {HP/LP}; &
+ \node[block] (p5) {Comb Filter}; &
+ \node[block] (p6) {Allpass}; &
+ \node (p7) {$y[n]$}; \\
+ };
- %Magic (aka, I am not sure if I read the code right)
- \psfblock[framesize=1.9 .65](6,0){comb}{Comb Filter}
- \psfblock[framesize=1.9 .65](8.5,0){pass}{All Passr}
-
- %Panning
- \pscircleop[operation=times] (10,0){pan}
- \rput(10,0.5){Panning}
+ \draw[->] (fb) -- (pb1);
+ \draw[->] (del) -- (pb2);
+ { [start chain=trunk]
+ \chainin (p1)[join=by tip];
+ \chainin (p2)[join=by tip] ;
+ \chainin (p3)[join=by {}];
+ %\chainin[join by={}] (p3);
+ { [start branch]
+ \chainin (pb2)[join=by tip];
+ \chainin (pb1)[join=by tip];
+ \chainin (p2)[join=by tip];
+ }
+ \chainin (p4)[join=by tip];
+ \chainin (p5)[join=by tip];
+ \chainin (p6)[join=by tip];
+ \chainin (p7)[join=by tip];
+ }
- %Connections
- \nclist{ncline}{in,fbcomb,fil,comb,pass,pan,out}
-\end{pspicture}
+\end{tikzpicture}
\end{document}
diff --git a/doc/images/uimain.png b/doc/images/uimain.png
Binary files differ.
diff --git a/doc/images/uioscil.png b/doc/images/uioscil.png
Binary files differ.
diff --git a/doc/intro.txt b/doc/intro.txt
@@ -1,22 +1,38 @@
Getting Started
---------------
-In most cases ZynAddSubFX is used it will not alone, and it will be linked
-with other programs.
-MIDI
-~~~~
+ZynAddSubFX is a fairly complex software synthesizer with a very large number of
+controls.
+As such, it is not alway obvious how to use ZynAddSubFX.
-MIDI can be used to connect other applications to ZynAddSubFX.
-Under ALSA on Linux the standard tool to connect ZynAddSubFX's MIDI is
-aconnect.
+Many applications under Linux transport MIDI over ALSA and transmit audio over
+JACK.
+ZynAddSubFX can be run in this configuration by running:
-ZynAddSubFX has one incomming MIDI port.
-Once another application is connected to this port, then it should be
-able to send information on notes, pitches, and modulations to
-ZynAddSubFX.
-For more specific information see INSERT CHAPTER NAME HERE.
+------------------------------
+zynaddsubfx -I alsa -O jack -a
+------------------------------
-JACK
-~~~~
-JACK can be used to connect the output of ZynAddSubFX to other
-applications.
+This sets the input driver to be alsa and the output driver to be jack, which
+should attempt to autoconnect to your soundcard as per the '-a' flag.
+If this is your first time running ZynAddSubFX, you will see a screen that lets
+you choose between the advanced and beginner interface.
+Currently the beginner interface is deprecated, so the advanced one is
+recommended.
+
+Now you should be able to see ZynAddSubFX's main window, from which you can
+setup patches, effects, and general configurations, but more importatnly it
+provides links into the parameters of the patches.
+ZynAddSubFX is a powerful tool with a number of base patches, but its true power
+lies in the ability to make your own patches.
+
+.Main Window
+image::./images/uimain.png[]
+
+For basic usage, you will want to use the button to the right of the enabled
+label.
+This button will allow for one to select the desired instrument from the banks
+that ZynAddSubFX has available.
+To play notes in ZynAddSubFX, either utilize the builtin virtual keyboard or
+connect your keyboard to the system and use aconnect to connect it to
+ZynAddSubFX (assuming that ALSA was used).
diff --git a/doc/myconf.conf b/doc/myconf.conf
@@ -1,2 +0,0 @@
-[titles]
-underlines="__","==","--","~~","^^"
diff --git a/doc/zynaddsubfx.txt b/doc/zynaddsubfx.txt
@@ -4,26 +4,28 @@ Zynaddsubfx
This documentation is a work in progress
-include::./intro.txt[]
+include::intro.txt[]
-include::./filter.txt[]
+include::filter.txt[]
-include::./lfo.txt[]
+include::lfo.txt[]
-include::./envelope.txt[]
+include::envelope.txt[]
-include::./adsynth.txt[]
+include::adsynth.txt[]
-include::./controller.txt[]
+include::controller.txt[]
+
+include::effects.txt[]
/////////////////////////////
-include::./nrpn.txt[]
+include::nrpn.txt[]
/////////////////////////////
-include::./saving.txt[]
+include::saving.txt[]
-include::./mididefaults.txt[]
+include::mididefaults.txt[]
-include::./build.txt[]
+include::build.txt[]
-include::./getting.txt[]
+include::getting.txt[]