zynaddsubfx

ZynAddSubFX open source synthesizer
Log | Files | Refs | Submodules | LICENSE

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:
Mdoc/Makefile | 6+++---
Mdoc/adsynth.txt | 55+++++++++++++++++++++++++++++++++++++++++++------------
Adoc/effects.txt | 27+++++++++++++++++++++++++++
Mdoc/gen/Makefile | 2+-
Mdoc/gen/reverb.tex | 75+++++++++++++++++++++++++++++++++++++++++++--------------------------------
Adoc/images/uimain.png | 0
Adoc/images/uioscil.png | 0
Mdoc/intro.txt | 48++++++++++++++++++++++++++++++++----------------
Ddoc/myconf.conf | 2--
Mdoc/zynaddsubfx.txt | 24+++++++++++++-----------
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[]