1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
|
<!-- <?xml version="1.0" ?>
<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd">
To validate or process this file as a standalone document, uncomment
this prolog. Be sure to comment it out again when you are done -->
<chapter id="arts-modules">
<title>&arts;-moduler</title>
<sect1 id="modules-introduction">
<title>Indledning</title>
<para>Dette kapitel beskriver alle standardmodulerne i &arts;. En af de mest kraftfulde funktioner i &arts; er at moduler kan sammenkobles til strukturer som implementerer nye funktioner såsom lydeffekter og instrumenter. </para>
<para>Moduler opdeles i to kategorier. Syntesemoduler bruges til at implementere <quote>rørlægningen</quote> som manipulerer multimedie-datastrømme for at lave nye effekter, instrumenter, miksere og programmer. Visuelle moduler tillader dig at oprette en grafisk grænseflade til at styre lydstrukturerne som opbygges med syntesemodulerne. </para>
</sect1>
<sect1 id="synth-modules-reference">
<title>Reference til syntesemoduler</title>
<sect2 id="mcat-synth-arithmetic-mixing">
<title>Aritmetik + miksning</title>
<sect3 id="mref-synth-add-sect">
<title>Synth_ADD</title>
<anchor id="mref-synth-add"/>
<mediaobject>
<imageobject>
<imagedata fileref="images/Synth_ADD.png" format="PNG"/></imageobject>
<textobject><phrase>Synth_ADD</phrase></textobject>
</mediaobject>
<para>Denne adderer to signaler. </para>
</sect3>
<sect3 id="mref-synth-mul-sect">
<title>Synth_MUL</title>
<anchor id="mref-synth-mul"/>
<mediaobject>
<imageobject>
<imagedata fileref="images/Synth_MUL.png" format="PNG"/></imageobject>
<textobject><phrase>Synth_MUL</phrase></textobject>
</mediaobject>
<para>Denne multiplicerer signalet med en faktor. Du kan bruge dette til at skalere signaler ned (0 < faktor < 1) eller op (faktor > 1) eller invertere signaler (faktor < 0). Bemærk at faktoren kan være et signal og ikke behøver at være konstant (f.eks. envelopper eller rigtige signaler). </para>
</sect3>
<sect3 id="mref-synth-div-sect">
<title>Synth_DIV</title>
<anchor id="mref-synth-div"/>
<mediaobject>
<imageobject>
<imagedata fileref="images/Synth_DIV.png" format="PNG"/></imageobject>
<textobject><phrase>Synth_DIV</phrase></textobject>
</mediaobject>
<para>Dette dividerer et signal med en faktor. Du kan bruge dette til at dividere et signal med et andet. Eller sætte indværdi11 til 1 så du derved får den reciprokke værdi af indværdi2 som udværdi. Pas på med at indværdi2 aldrig nærmer sig 0 ellers vil du få problemer med divisioner med nul. </para>
</sect3>
<sect3 id="mref-synth-multi-add-sect">
<title>Synth_MULTI_ADD</title>
<anchor id="mref-synth-multi-add"/>
<mediaobject>
<imageobject>
<imagedata fileref="images/Synth_MULTI_ADD.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_MULTI_ADD</phrase></textobject>
</mediaobject>
<para>Denne adderer et vilkårligt antal signaler. Hvis du har brug for at opsummere bølgeformer som slaves af fire forskellige oscillatorer, kan du for eksempel tilslutte alle deres udgange til et Synth_MULTI_ADD-modul. Dette er effektivere end at bruge tre Synth_ADD-moduler. </para>
</sect3>
<sect3 id="mref-synth-xfade-sect">
<title>Synth_XFADE</title>
<anchor id="mref-synth-xfade"/>
<mediaobject>
<imageobject><imagedata fileref="images/Synth_XFADE.png" format="PNG"/>
</imageobject>
<textobject><phrase>Synth_XFADE</phrase></textobject>
</mediaobject>
<para>Denne overtoner to signaler. Hvis procentindgangen er -1, høres kun signalet til venstre, hvis den er 1, høres kun det til højre. Hvis den er 0, høres begge signalerne med samme lydstyrke. </para>
<para>Denne gør at du kan sørge for at signalerne bliver indenfor et veldefineret område. Hvis du har to signaler som er mellem -1 og 1 inden overtoningen, forbliver de i samme område bagefter. </para>
</sect3>
<sect3 id="mref-synth-autopanner-sect">
<title>Synth_AUTOPANNER</title>
<anchor id="mref-synth-autopanner"/>
<para>Det modsatte af overtoning. Denne tager et monosignal og deler det op til et stereosignal. Den bruges til automatisk at panorere inddata-signalet mellem venstre og højre udgang. Dette gør miksningen mere levende. En standardanvendelse kunne være en guitar- eller sololyd. </para>
<para>Forbind en <acronym>LFO</acronym>, for eksempel en sinus eller savtakbølge til inlfo, og vælg en frekvens mellem 0,1 og 5 Hz for at få en traditionel effekt eller endnu mere for specialeffekter (<acronym>FX</acronym>). </para>
</sect3>
</sect2>
<sect2 id="mcat-synth-busses">
<title>Busser</title>
<sect3 id="mref-synth-bus-uplink-sect">
<title>Synth_BUS_UPLINK</title>
<anchor id="mref-synth-bus-uplink"/>
<mediaobject>
<imageobject><imagedata fileref="images/Synth_BUS_UPLINK.png"
format="PNG"/>
</imageobject>
<textobject><phrase>Synth_BUS_UPLINK</phrase></textobject>
</mediaobject>
<para>Et oplink til en bus. Angiv signaler til venstre og højre, og navnet på bussen som data skal sendes til på <quote>bus</quote>-porten. Det kombinerede signal fra alle oplink med dette navn havner på hvert nedlink på denne <quote>bus</quote>. </para>
</sect3>
<sect3 id="mref-synth-bus-downlink-sect">
<title>Synth_BUS_DOWNLINK</title>
<anchor id="mref-synth-bus-downlink"/>
<mediaobject>
<imageobject>
<imagedata fileref="images/Synth_BUS_DOWNLINK.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_BUS_DOWNLINK</phrase></textobject>
</mediaobject>
<para>Henter (summen af) alle data som sendes på en vis bus (med navnet du angiver på <quote>bus</quote>-porten). </para>
</sect3>
</sect2>
<!-- TODO AFTER KDE2.1: move freeverb into delays, and rename category to
Delays & reverbs -->
<sect2 id="mcat-synth-delays">
<title>Forsinkelser</title>
<sect3 id="mref-synth-delay-sect">
<title>Synth_DELAY</title>
<anchor id="mref-synth-delay"/>
<mediaobject>
<imageobject><imagedata fileref="images/Synth_DELAY.png"
format="PNG"/></imageobject></mediaobject>
<para>Denne forsinker inddata-signalet en vis tid. Tidsangivelsen skal være mellem 0 og maxdelay for en forsinkelse mellem 0 og maxdelay sekunder. </para>
<para>Denne slags forsinkelse <emphasis>kan ikke bruges</emphasis> i tilbagemeldingsstrukturer. Dette skyldes at det er en varierbar forsinkelse. Det går an at ændre længden mens den kører, og endog sætte den til nul. Men eftersom de egne uddata behøves for at beregne næste sampling i en tilbagemeldingsstruktur, kan en forsinkelse med en værdi som kan gå ned til nul under syntese føre til en låsningssituation. </para>
<para>Brug CDELAY'er i sådanne situationer, eller kombinér en kort konstant forsinkelse (på 0,001 sekunder) med en variabel forsinkelse. </para>
<para>Man kan også kombinere en CDELAY og en DELAY for at opnå en forsinkelse med variabel længde i en tilbagekobling. Sørg blot for at du har med en CDELAY at gøre. </para>
</sect3>
<sect3 id="mref-synth-cdelay-sect">
<title>Synth_CDELAY</title>
<anchor id="mref-synth-cdelay"/>
<mediaobject>
<imageobject><imagedata fileref="images/Synth_CDELAY.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_CDELAY</phrase></textobject>
</mediaobject>
<para>Denne forlænger inddatasignalet en vis tid. Tidsangivelsen skal være større end 0 for en forsinkelse af på sekunder eller mere. Forsinkelsen er konstant under beregningen, hvilket betyder at den ikke kan ændres. </para>
<para>Dette sparer beregningstid eftersom ingen interpolation gøres, og er nyttigt til rekursive strukturer. Se beskrivelsen ovenfor (Synth_DELAY). </para>
</sect3>
</sect2>
<sect2 id="mcat-synth-envelopes">
<title>Enveloper</title>
<sect3 id="mref-synth-envelope-adsr-sect">
<title>Synth_ENVELOPE_ADSR</title>
<anchor id="mref-synth-envelope-adsr"/>
<mediaobject>
<imageobject><imagedata fileref="images/Synth_ENVELOPE_ADSR.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_ENVELOPE_ADSR</phrase></textobject>
</mediaobject>
<para>Dette er en klassisk <acronym>ADSR</acronym>-envelop, som betyder at du angiver: </para>
<variablelist>
<varlistentry>
<term>active</term>
<listitem>
<para>Hvis brugeren holder tasten nede lige nu. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>invalue</term>
<listitem>
<para>Inddatasignalet. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>attack</term>
<listitem>
<para>Tiden som skal gå fra brugerens tryk på tasten og til signalet når sin maksimale amplitude (i sekunder). </para>
</listitem>
</varlistentry>
<varlistentry>
<term>decay</term>
<listitem>
<para>Tiden som skal gå fra signalet har nået sin maksimale amplitude til signalet går tilbage til et konstant niveau (i sekunder). </para>
</listitem>
</varlistentry>
<varlistentry>
<term>sustain</term>
<listitem>
<para>Det konstante niveau som holdes for signalet bagefter, til brugeren slipper tasten. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>release</term>
<listitem>
<para>Tiden som skal gå fra brugeren har sluppet tasten til signalet går ned til nul (i sekunder). </para>
</listitem>
</varlistentry>
</variablelist>
<para>Du får det behandlede signal som uddata-værdi. Når <acronym>ASDR</acronym>-envelopen er klar, sætter den done til 1. Du kan bruge dette til at sørge for uddata <quote>done</quote> for et instrument (som gør at instrumentstrukturen fjernes fra &MIDI;-relæobjektet når lyden er hørt op). </para>
</sect3>
<sect3 id="mref-synth-pscale-sect">
<title>Synth_PSCALE</title>
<anchor id="mref-synth-pscale"/>
<mediaobject>
<imageobject><imagedata fileref="images/Synth_PSCALE.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_PSCALE</phrase></textobject>
</mediaobject>
<para>Modulet Synth_PSCALE vil skalere lydstrømmen som sendes gennem den fra lydstyrke 0 (tavs) til 1 (oprindelig lydstyrke) tilbage til 0 (tavs), ifølge positionen (hent positionen fra en Synth_SEQUENCE). Positionen hvor toppen skal være kan angives som pos. </para>
<para>Eksempel: sæt top til 0,1 betyder at efter at 10 % af tonen er afspillet, har lydstyrken nået sin maksimale værdi, og begynder derefter at aftage. </para>
</sect3>
</sect2>
<sect2 id="mcat-synth-effects">
<title>Effekter</title>
<sect3 id="mref-synth-freeverb-sect">
<title>Synth_FREEVERB</title>
<anchor id="mref-synth-freeverb"/>
<mediaobject>
<imageobject><imagedata fileref="images/Synth_FREEVERB.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_FREEVERB</phrase></textobject>
</mediaobject>
<para>Dette er en efterklangseffekt. I den nuværende implementering er det tænkt at sende en stereosignal gennem modulet, og det vil så -tilføje- efterklangseffekten til signalet. </para>
<note>
<para>Dette betyder at den også kan bruges inde i en StereoEffectStack. </para>
</note>
<para>Inddata-signalet skal forbindes til (inleft, inright), og uddata-signalet bliver (outleft, outright). </para>
<para>Parametrene som du kan indstille er: </para>
<variablelist>
<varlistentry>
<term>roomsize</term>
<listitem>
<para>Størrelsen af rummet som efterklangseffekten simulerer (område: 0 .. 1, hvor 1 er det største mulige rum). </para>
</listitem>
</varlistentry>
<varlistentry>
<term>damp</term>
<listitem>
<para>Dette angiver et filter som gør at det simulerede rum absorberer høje frekvenser (område 0 .. 1, hvor 1 betyder absorbere høje frekvenser i stor udstrækning). </para>
</listitem>
</varlistentry>
<varlistentry>
<term>wet</term>
<listitem>
<para>Størrelsen af efterklangsignalet (dvs. den del af signalet som skal ændres af filtret, og forårsage en <quote>vådt</quote> lyd, dvs. en <quote>efterklangslyd</quote>). </para>
</listitem>
</varlistentry>
<varlistentry>
<term>dry</term>
<listitem>
<para>Størrelsen af rent signal som sendes gennem, som forårsager et ekko (eller kombineret forsinkelse) i stedet for en efterklangseffekt (område: 0 .. 1). </para>
<!-- TODO: do some measurements to show that this documentation -is- correct,
I am not sure if it is echo, or really pure (non-delayed), or multiple delay
or whatever -->
</listitem>
</varlistentry>
<varlistentry>
<term>width</term>
<listitem>
<para>Størrelsen af udvidet stereoeffekt som efterklangsalgoritmen tilføjer til efterklangseffekten, for at gøre efterklangslyden bredere i stereolydbilledet (område 0 .. 1). </para>
</listitem>
</varlistentry>
<varlistentry>
<term>mode</term>
<listitem>
<para>[HUSK: Jeg tror at hvis mode er 1, beholder efterklangen det nuværende lydbillede for lyden, mens 0 er normal behandling] </para>
</listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="mref-synth-tremolo-sect">
<title>Synth_TREMOLO</title>
<anchor id="mref-synth-tremolo"/>
<mediaobject><imageobject><imagedata fileref="images/Synth_TREMOLO.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_TREMOLO</phrase></textobject>
</mediaobject>
<para>Tremolomodulet modulerer amplituden ifølge en <acronym>LFO</acronym>-bølgeform. Traditionelt bruger man en sinusbølge, men hvorfor begrænse sig? Hvad man får er en meget intensiv effekt som skærer gennem de fleste arrangementer på grund af sit store dynamiske omfang. Tremoloeffekten er stadigvæk en favoriteffekt bland guitarister, selvom den ikke er så populær som i tresserne. </para>
<para>[HUSK: for øjeblikket implementeres dette som invalue + abs(inlfo) - måske ville det være bedre at implementere det som invalue * (1+inlfo*depth), hvor depth ville være en parameter mellem 0 .. 1 - dette afgøres efter &kde;2.1. Hvis du har en kommentar, så skriv til &arts;' e-mail-liste ;). ] </para>
</sect3>
<sect3 id="mref-synth-fx-cflanger-sect">
<title>Synth_FX_CFLANGER</title>
<anchor id="mref-synth-fx-cflanger"/>
<mediaobject><imageobject><imagedata
fileref="images/Synth_FX_CFLANGER.png" format="PNG"/></imageobject>
<textobject><phrase>Synth_FX_CFLANGER</phrase></textobject>
</mediaobject>
<para>En flanger er en tidsvariabel forsinkelseseffekt. For at gøre udvikling af komplekse flangereffekter enklere, leveres dette modul som indeholder kernen af en enkanals flangerenhed. </para>
<para>Den har følgende porte:</para>
<variablelist>
<varlistentry>
<term>invalue</term>
<listitem>
<para>Signalet som du vil behandle. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>lfo</term>
<listitem>
<para>Helst en sinusbølge som modulerer forsinkelsestiden inde i flangeren (-1 .. 1). </para>
</listitem>
</varlistentry>
<varlistentry>
<term>mintime</term>
<listitem>
<para>Den minimale værdi for tiden inde i flangeren i millisekunder. Foreslåede værdier: forsøg med noget i retning af 1 ms. Brug helst værdier < 1000 ms. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>maxtime</term>
<listitem>
<para>Den maksimale værdi for tiden inde i flangeren i millisekunder. Foreslåede værdier: forsøg med noget i retning af 5 ms. Brug helst værdier < 1000 ms. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>outvalue</term>
<listitem>
<para>Uddatasignalet. Det er vigtigt at du blander dette med originalsignalet (uden flanger) for at få den ønskede effekt. </para>
</listitem>
</varlistentry>
</variablelist>
<tip>
<para>Du kan bruge dette som en basis for koreffekter. </para>
</tip>
</sect3>
</sect2>
<sect2 id="mcat-synth-filters">
<title>Filtre</title>
<sect3 id="mref-synth-pitch-shift-sect">
<title>Synth_PITCH_SHIFT</title>
<anchor id="mref-synth-pitch-shift"/>
<mediaobject><imageobject><imagedata
fileref="images/Synth_PITCH_SHIFT.png" format="PNG"/></imageobject>
<textobject><phrase>Synth_PITCH_SHIFT</phrase></textobject>
</mediaobject>
<para>Denne tonehøjdeforandrende effekt ændrer frekvensen på inddatasignalet uden at påvirke hastigheden. En anvendelse af dette er for eksempel at ændre tonehøjden på din stemme mens du indspiller (og afspiller) den i realtid. </para>
<para>Parameteren <emphasis>speed</emphasis> er den relative hastighed som signalet afspilles med. Så med en hastighed på to bliver lyden dobbelt så høj (dvs. en inddatafrekvens på 440 Hz giver en uddatafrekvens på 880 Hz). </para>
<para>Parameteren <emphasis>frequency</emphasis> bruges internt til at ændre mellem forskellige korn i signalet. Den er indstillelig, og afhængig af valget kommer tonehøjdens ændring til at lyde mere eller mindre realistisk i dit brugstilfælde. En god værdi at begynde med er noget i stil med 5 eller 10. </para>
</sect3>
<sect3 id="mref-synth-shelve-cutoff-sect">
<title>Synth_SHELVE_CUTOFF</title>
<anchor id="mref-synth-shelve-cutoff"/>
<mediaobject><imageobject><imagedata
fileref="images/Synth_SHELVE_CUTOFF.png" format="PNG"/></imageobject>
<textobject><phrase>Synth_SHELVE_CUTOFF</phrase></textobject>
</mediaobject>
<para>Filtrerer alle frekvenser væk over afskæringsfrekvensen. </para>
</sect3>
<sect3 id="mref-synth-brickwall-limiter-sect">
<title>Synth_BRICKWALL_LIMITER</title>
<anchor id="mref-synth-brickwall-limiter"/>
<mediaobject><imageobject><imagedata
fileref="images/Synth_BRICKWALL_LIMITER.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_BRICKWALL_LIMITER</phrase></textobject>
</mediaobject>
<para>Dette modul klipper et signal så det passer i området [-1;1]. Det gør ingenting for at begrænse den forvridning som opstår når et stærk signal klippes af. Man kan bruge dette som en lydeffekt (for eksempel til at oprette en noget afklippet sinusbølge). Det er dog oftest en god idé at lade signalet gå gennem et lowpass-filter bagefter hvis du gør dette, for at gøre lyden mindre skærende. </para>
</sect3>
<sect3 id="mref-synth-std-equalizer-sect">
<title>Synth_STD_EQUALIZER</title>
<anchor id="mref-synth-std-equalizer"/>
<mediaobject><imageobject><imagedata
fileref="images/Synth_STD_EQUALIZER.png" format="PNG"/></imageobject>
<textobject><phrase>Synth_STD_EQUALIZER</phrase></textobject>
</mediaobject>
<para>Dette er en god byggeblok for en parametriserbar tonekontrol. Dens parametre er: </para>
<variablelist>
<varlistentry>
<term>Indværdi, udværdi</term>
<listitem>
<para>Signalet som filtreres af tonekontrollen. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>low</term>
<listitem>
<para>Hvordan lave frekvenser skal ændres. Værdien angives i dB, mens 0 betyder at lave frekvenser ikke skal ændres, ville -6 betyde at de dæmpes med 6 dB, og +6 betyder at de øges med 6 dB. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>mid</term>
<listitem>
<para>Hvordan middelfrekvenser skal ændres af tonekontrollen i dB (se low). </para>
</listitem>
</varlistentry>
<varlistentry>
<term>high</term>
<listitem>
<para>Hvordan høje frekvenser skal ændres af tonekontrollen i dB (se low). </para>
</listitem>
</varlistentry>
<varlistentry>
<term>frekvens</term>
<listitem>
<para>Dette er midtfrekvensen for tonekontrollen i Hz, midtfrekvensen befinder sig omkring dette spektrum, med de lave og høje frekvenser nedenfor og ovenfor. Bemærk at frekvensen ikke kan være højere end en halvdel af samplingsfrekvensen, oftest er den 22050 Hz, og ikke lavere end 1 Hz. </para>
</listitem>
</varlistentry>
<varlistentry>
<term>q</term>
<listitem>
<para>Dette påvirker hvor bredt midterspektret er. Det skal være et positivt tal > 0. En værdi på et er rimelig, højere værdier af q betyder et smallere spektrum af midterfrekvenser. Lavere værdier end et betyder et bredere spektrum. </para>
</listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="mref-synth-rc-sect">
<title>Synth_RC</title>
<anchor id="mref-synth-rc"/>
<mediaobject><imageobject><imagedata fileref="images/Synth_RC.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_RC</phrase></textobject>
</mediaobject>
<para>Et dæmpet resonansfilter som filtrerer alle frekvenser omkring en højeste værdi. Der er ingen nyttig måde at angive en midterfrekvens (som ikke skal klippes ), eftersom inddata er to underlige konstanter f og b. Koden er meget gammel, fra synthesizerns tidligste dage, og vil formodentlig blive skiftet ud mod et nyt filter som har en frekvens og en resonansværdi som parametre. </para>
<para>Forsøg med noget som ligner b=5, f=5 or b=10, f=10 or b=15, f=15 i alle tilfælde. </para>
</sect3>
<sect3 id="mref-synth-moog-vcf-sect">
<title>Synth_MOOG_VCF</title>
<anchor id="mref-synth-moog-vcf"/>
<mediaobject><imageobject><imagedata fileref="images/Synth_MOOG_VCF.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_MOOG_VCF</phrase></textobject>
</mediaobject>
<para>Filtrerer alle frekvenser væk over afskæringsfrekvensen (det er et 24 dB firepols filter, som filtrerer 24 dB pr oktav over afskæringsfrekvensen), men sørger for en yderligere parameter til at indstille filtrets resonans, hvor 0 betyder ingen resonans og 4 betyder selvsving. </para>
</sect3>
</sect2>
<sect2 id="mcat-synth-midi-sequencing">
<title>Midi + sekvensering</title>
<sect3 id="mref-synth-midi-test-sect">
<title>Synth_MIDI_TEST</title>
<anchor id="mref-synth-midi-test"/>
<mediaobject><imageobject><imagedata fileref="images/Synth_MIDI_TEST.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_MIDI_TEST</phrase></textobject>
</mediaobject>
<para>Dette modul indlæser en instrumentstruktur fra en fil, og registrerer sig som en midi-udgang med &arts; &MIDI;-håndtering. Toner som sendes til denne udgang gør at instrumentstemmer laves. </para>
<note>
<para>Du kan indstille noget sådant her på en behageligere måde i &artscontrol; i stedet for manuelt i &arts-builder;. </para>
</note>
</sect3>
<sect3 id="mref-synth-sequence-sect">
<title>Synth_SEQUENCE</title>
<anchor id="mref-synth-sequence"/>
<mediaobject><imageobject><imagedata fileref="images/Synth_SEQUENCE.png"
format="PNG"/></imageobject></mediaobject>
<para>Afspiller en sekvens af toner om og om igen. Tonerne angives i spornotation, og adskilles af semikolon. Et eksempel er <literal>A-3;C-4;E-4;C-4;</literal>. Hastigheden angives som sekunder pr tone, så hvis du vil angive 120 slag pr minut, angiver du formodentlig 0,5 sekunder/tone, idet 60 sekunder/0,5 sekunder pr tone = 120 slag pr minut. </para>
<para>Du kan give hver tone en længde i forhold til hastigheden ved at bruge et kolon efter tonen fulgt af længden. <literal>A-3:2;C-4:0.5;D-4:0.5;E-4;</literal> viser dette. Som du kan se, tenderer midi-tonesætningsprogrammer til at tilbyde større bekvemmelighed ;) </para>
<para>Synth_SEQUENCE giver yderligere information om positionen for tonen som afspilles lige nu, hvor 0 betyder lige påbegyndt og 1 betyder afsluttet. Denne information kan man bruge med Synth_PSCALE (se nedenfor). </para>
</sect3>
<sect3 id="mref-synth-sequence-freq-sect">
<title>Synth_SEQUENCE_FREQ</title>
<anchor id="mref-synth-sequence-freq"/>
<mediaobject><imageobject><imagedata fileref="images/Synth_SEQUENCE_FREQ.png"
format="PNG"/></imageobject></mediaobject>
<para>Dette modul virker præcis som Synth_SEQUENCE, med den eneste forskel at du ikke indskriver nodenavne men frekvenser. </para>
</sect3>
</sect2>
<sect2 id="mcat-synth-samples">
<title>Samplinger</title>
<sect3 id="mref-synth-play-wav-sect">
<title>Synth_PLAY_WAV</title>
<anchor id="mref-synth-play-wav"/>
<mediaobject>
<imageobject><imagedata fileref="images/Synth_PLAY_WAV.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_PLAY_WAV</phrase></textobject>
</mediaobject>
<para>Dette afspiller en <literal role="extension">wav</literal>-fil. Den er kun tilstede hvis du har libaudiofile på computeren. Bølgeformsfilen afspilles så snart modulet laves. </para>
<para>Den stopper så snart den er klar, og done sættes til 1. Hastighedsparameteren kan bruges til at afspille filen hurtigere eller langsommere, hvor 1.0 er den normale (indspillede) hastighed. </para>
<!-- TODO: KDE2.2: check that this really works together in instruments with
the done parameter things ;) -->
</sect3>
</sect2>
<sect2 id="mcat-synth-soundio">
<title>Lyd-I/O</title>
<sect3 id="mref-synth-play-sect">
<title>Synth_PLAY</title>
<anchor id="mref-synth-play"/>
<mediaobject>
<imageobject><imagedata fileref="images/Synth_PLAY.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_PLAY</phrase></textobject>
</mediaobject>
<important>
<para>Normalt behøver man ikke dette modul, hvis man ikke skriver selvstændige programmer. Inde i &artsd;, er der allerede et Synth_PLAY modul, og at oprette et til virker ikke. </para>
</important>
<para>Modulet Synth_PLAY giver lydsignalet som uddata til lydkortet. Venstre og højre kanal skal indeholde <emphasis>normaliseret</emphasis> inddata for kanalerne. Hvis inddata ikke er mellem -1 og 1, får man klipning. </para>
<para>Som allerede nævnt, må der kun være et Synth_PLAY modul, eftersom det har direkte adgang til lydkortet. Brug busser til at blande mere end en lydstrøm sammen inden afspilning. Brug modulet Synth_AMAN_PLAY for at få noget som ligner uddata inde i &artsd;. </para>
<para>Bemærk at Synth_PLAY også kontrollerer tiden for hele strukturen. Dette betyder: ingen Synth_PLAY = ingen kilde for tid = ingen lyd. Så der behøves (nøjagtigt) et Synth_PLAY objekt. </para>
</sect3>
<sect3 id="mref-synth-record-sect">
<title>Synth_RECORD</title>
<anchor id="mref-synth-record"/>
<mediaobject><imageobject><imagedata fileref="images/Synth_RECORD.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_RECORD</phrase></textobject>
</mediaobject>
<important>
<para>Normalt behøver man ikke dette modul, hvis man ikke skriver selvstændige programmer. Inde i artsd, er der normalt allerede et Synth_RECORD modul, og at oprette et til virker ikke. </para>
</important>
<para>Modulet Synth_RECORD indspiller et signal fra lydkortet. Venstre og højre kanal indeholder inddata for kanalerne (mellem -1 og 1). </para>
<para>Som allerede nævnt, må der kun findes et Synth_RECORD modul, eftersom det har direkte adgang til lydkortet. Brug busser for at bruge den indspillede lydstrøm på mere end et sted. Brug modulet Synth_AMAN_RECORD for at få noget som ligner en indgang inde i artsd. For at dette skal virke skal &artsd; køre <emphasis>med full dupleks aktiveret</emphasis>. </para>
</sect3>
<sect3 id="mref-synth-aman-play-sect">
<title>Synth_AMAN_PLAY</title>
<anchor id="mref-synth-aman-play"/>
<mediaobject><imageobject><imagedata fileref="images/Synth_AMAN_PLAY.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_AMAN_PLAY</phrase></textobject>
</mediaobject>
<para>Modulet Synth_AMAN_PLAY giver lydsignalet som uddata. Det er godt (men ikke nødvendigt) at uddata er et normaliserer signal (mellem -1 og 1). </para>
<para>Dette modul bruger lydhåndteringen til at angive hvor signalet bliver spillet. Lydhåndteringen kan styres gennem &artscontrol;. For at gøre det mere intuitivt at bruge, er det godt at navngive signalet som afspilles. Det kan opnås ved at angive <emphasis>title</emphasis>. En anden funktion i lydhåndteringen er at kunne huske hvor et signal sidst blev afspillet. For at kunne gøre dette skal den kunne skelne mellem signaler. Derfor skal man også angive en entydig værdi for <emphasis>autoRestoreID</emphasis>. </para>
</sect3>
<sect3 id="mref-synth-aman-record-sect">
<title>Synth_AMAN_RECORD</title>
<anchor id="mref-synth-aman-record"/>
<mediaobject><imageobject><imagedata
fileref="images/Synth_AMAN_RECORD.png" format="PNG"/></imageobject>
<textobject><phrase>Synth_AMAN_RECORD</phrase></textobject>
</mediaobject>
<para>Modulet Synth_AMAN_RECORD optager et lydsignal fra en ekstern kilde (dvs. linje ind/mikrofon) inde i &artsd;. Uddata vil være et normaliseret signal (mellem -1 og 1). </para>
<para>Dette modul bruger lydhåndteringen til at angive hvor signalet afspilles. Lydhåndteringen kan styres med artscontrol. For at gøre det mere intuitivt at bruge, er det godt at navngive signalet som afspilles. Det kan opnås ved at angive <emphasis>title</emphasis>. En anden funktion i lydhåndtereringen er at kunne huske hvor et signal afspilledes sidst. For at kunne gøre dette skal den kunne skelne mellem signaler. Derfor skal man også angive en entydig værdi for <emphasis>autoRestoreID</emphasis>. </para>
</sect3>
<sect3 id="mref-synth-capture-sect">
<title>Synth_CAPTURE</title>
<anchor id="mref-synth-capture"/>
<mediaobject><imageobject><imagedata fileref="images/Synth_CAPTURE.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_CAPTURE</phrase></textobject>
</mediaobject>
<para>Modulet Synth_CAPTURE skriver et lydsignal til en bølgeformsfil på harddisken. Filen hedder altid <filename>/tmp/mcop-<replaceable>brugernavn</replaceable>/capture.wav</filename> </para>
</sect3>
</sect2>
<sect2 id="mcat-synth-tests">
<title>Tester</title>
<sect3 id="mref-synth-nil-sect">
<title>Synth_NIL</title>
<anchor id="mref-synth-nil"/>
<mediaobject><imageobject><imagedata fileref="images/Synth_NIL.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_NIL</phrase></textobject>
</mediaobject>
<para>Dette gør ingenting. Det er meget nyttigt i testsituationer. </para>
</sect3>
<sect3 id="mref-synth-debug-sect">
<title>Synth_DEBUG</title>
<anchor id="mref-synth-debug"/>
<mediaobject><imageobject><imagedata fileref="images/Synth_DEBUG.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_DEBUG</phrase></textobject>
</mediaobject>
<para>Man kan bruge dette til fejlsøgning. Det udskriver værdien for signalet ved invalue i regelmæssige intervaller (cirka 1 sekund), sammen med kommentaren som du har angivet. På denne måde kan man finde ud af om visse signaler forbliver indenfor visse områder, eller om de findes i det hele taget. </para>
</sect3>
<sect3 id="mref-synth-midi-debug-sect">
<title>Synth_MIDI_DEBUG</title>
<anchor id="mref-synth-midi-debug"/>
<mediaobject><imageobject><imagedata fileref="images/Synth_MIDI_DEBUG.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_MIDI_DEBUG</phrase></textobject>
</mediaobject>
<para>Man kan bruge dette til at fejlsøge hvordan &MIDI;-begivenheder virkelig kommer ind i &arts;. </para>
<para>Når en MIDI_DEBUG kører, udskriver &artsserver; linjer såsom: </para>
<screen><computeroutput>201 100753.837585 on 0 42 127</computeroutput></screen>
<screen><computeroutput>202 101323.128355 off 0 42</computeroutput></screen>
<para>Den første linje fortæller at 100753 ms (dvs. 100 sekunder) efter MIDI_DEBUG startede, kom en &MIDI;-begivenhed "on" på kanal 0. Denne midi-begivenhed havde hastighed (lydstyrke) 127, den højest mulige. Næste linje viser midi-begivenhed da tasten blev sluppet. [HUSK: dette virker ikke for øjeblikket, få det til at virke, og gør det via &MIDI;-håndteringen]. </para>
</sect3>
<sect3 id="mref-synth-data-sect">
<title>Synth_DATA</title>
<anchor id="mref-synth-data"/>
<mediaobject><imageobject><imagedata fileref="images/Synth_DATA.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_DATA</phrase></textobject>
</mediaobject>
<para>Dette laver et signal med en konstant værdi. </para>
<!-- TODO: this doesn't really belong in test, does it? -->
</sect3>
</sect2>
<sect2 id="mcat-synth-osc-mod">
<title>Oscillation & Modulation</title>
<sect3 id="mref-synth-frequency-sect">
<title>Synth_FREQUENCY</title>
<anchor id="mref-synth-frequency"/>
<mediaobject><imageobject><imagedata fileref="images/Synth_FREQUENCY.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_FREQUENCY</phrase></textobject>
</mediaobject>
<para>Oscillatorer i &arts; kræver ikke en frekvens som inddata, men i stedet en position i bølgen. Positionen skal være mellem 0 og 1, som i et standardobjekt Synth_WAVE_SIN oversættes til området 0 .. 2*Pi. For at oprette oscillerende værdier fra en frekvens, bruges et Synth_FREQUENCY modul. </para>
</sect3>
<sect3 id="mref-synth-fm-source-sect">
<title>Synth_FM_SOURCE</title>
<anchor id="mref-synth-fm-source"/>
<mediaobject><imageobject><imagedata fileref="images/Synth_FM_SOURCE.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_FM_SOURCE</phrase></textobject>
</mediaobject>
<para>Dette bruges til frekvensmodulering. Angiv frekvensen med indgangen frequency og put et andet signal til moduleringsindgangen. Indstil derefter modlevel til et eller andet, f.eks. 0,3. Frekvensen moduleres derefter med moduleringen. Prøv det. Virker godt hvis man tilføjer en tilbagekobling, hvilket betyder at man tager en kombination af det forsinkede uddatasignal fra Synth_FM_SOURCE (man skal sende det til en oscillator eftersom det kun virker som Synth_FREQUENCY) og et andet signal for at få et godt resultat. </para>
<para>Virker godt sammen med Synth_WAVE_SIN oscillatorer. </para>
</sect3>
</sect2>
<sect2 id="mcat-synth-waveforms">
<title>Bølgeformer</title>
<sect3 id="mref-synth-wave-sin-sect">
<title>Synth_WAVE_SIN</title>
<anchor id="mref-synth-wave-sin"/>
<mediaobject><imageobject><imagedata fileref="images/Synth_WAVE_SIN.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_WAVE_SIN</phrase></textobject>
</mediaobject>
<para>Sinusoscillator. Angiv et pos signal fra Synth_FREQUENCY eller Synth_FM_SOURCE som indsignal, og få en sinusbølge som udsignal. Signalet pos angiver positionen i bølgeformen, området 0 .. 1 afbildes til 0 .. 2*Pi internt. </para>
</sect3>
<sect3 id="mref-synth-wave-tri-sect">
<title>Synth_WAVE_TRI</title>
<anchor id="mref-synth-wave-tri"/>
<mediaobject><imageobject><imagedata fileref="images/Synth_WAVE_TRI.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_WAVE_TRI</phrase></textobject>
</mediaobject>
<para>Triangelbølgeoscillator. Angiv et pos signal fra Synth_FREQUENCY eller Synth_FM_SOURCE som indsignal, og få en triangelbølge som udsignal. Signalet pos angiver positionen i bølgeformen, området 0 .. 1 afbildes til 0 .. 2*Pi internt. Vær forsigtig. Indsignalet <emphasis>skal</emphasis> være i området 0 .. 1 for at udsignalet kan give et godt resultat. </para>
</sect3>
<sect3 id="mref-synth-noise-sect">
<title>Synth_NOISE</title>
<anchor id="mref-synth-noise"/>
<mediaobject><imageobject><imagedata fileref="images/Synth_NOISE.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_NOISE</phrase></textobject>
</mediaobject>
<para>Støjgenerator. Denne laver et tilfældigt signal mellem -1 og 1. </para>
</sect3>
<sect3 id="mref-synth-wave-square-sect">
<title>Synth_WAVE_SQUARE</title>
<anchor id="mref-synth-wave-square"/>
<mediaobject><imageobject><imagedata
fileref="images/Synth_WAVE_SQUARE.png" format="PNG"/></imageobject>
<textobject><phrase>Synth_WAVE_SQUARE</phrase></textobject>
</mediaobject>
<para>Firkantbølgeoscillator. Angiv et pos signal fra Synth_FREQUENCY eller Synth_FM_SOURCE som indsignal, og få en firkantbølge som udsignal. Signalet pos angiver positionen i bølgeformen, området 0 .. 1 afbildes til 0 .. 2*Pi internt. Vær forsigtig. Indsignalet <emphasis>skal</emphasis> være i området 0 .. 1 for at udsignalet kan give et godt resultat. </para>
</sect3>
<sect3 id="mref-synth-wave-softsaw-sect">
<title>Synth_WAVE_SOFTSAW</title>
<anchor id="mref-synth-wave-softsaw"/>
<mediaobject><imageobject><imagedata
fileref="images/Synth_WAVE_SOFTSAW.png" format="PNG"/></imageobject>
<textobject><phrase>Synth_WAVE_SOFTSAW</phrase></textobject>
</mediaobject>
<para>Blød savtandsbølge, som ligner Synth_WAVE_TRI oscillatoren i udseende. Angiv et pos signal fra Synth_FREQUENCY eller Synth_FM_SOURCE som indsignal, og få en blød savtandsbølge som udsignal. Signalet pos angiver positionen i bølgeformen, området 0 .. 1 afbildes til 0 .. 2*Pi internt. Vær forsigtig. Indsignalen <emphasis>skal</emphasis> være i området 0 .. 1 for at udsignalet kan give et godt resultat. </para>
</sect3>
<sect3 id="mref-synth-wave-pulse-sect">
<title>Synth_WAVE_PULSE</title>
<anchor id="mref-synth-wave-pulse"/>
<mediaobject><imageobject><imagedata fileref="images/Synth_WAVE_PULSE.png"
format="PNG"/></imageobject>
<textobject><phrase>Synth_WAVE_PULSE</phrase></textobject>
</mediaobject>
<para>Pulsoscillator. Dette modul ligner den rektangulære oscillator (Synth_WAVE_RECT), men det sørger for et indstilleligt op/ned-forhold, ved parameteren <emphasis>dutycycle</emphasis>. Angiv et pos signal fra Synth_FREQUENCY eller Synth_FM_SOURCE som indsignal, og få en pulsbølge som udsignal. Signalet pos angiver positionen i bølgeformen, området 0 .. 1 afbildes til 0 .. 2*Pi internt. Vær forsigtig. Indsignalet <emphasis>skal</emphasis> være i området 0 .. 1 for at udsignalet kan give et godt resultat. </para>
</sect3>
</sect2>
<sect2 id="mcat-synth-misc">
<title>Diverse</title>
<sect3 id="mref-synth-compressor-sect">
<title>Synth_COMPRESSOR</title>
<anchor id="mref-synth-compressor"/>
<mediaobject>
<imageobject><imagedata fileref="images/Synth_COMPRESSOR.png"
format="PNG"/></imageobject></mediaobject>
<para>Dette modul reducerer det dynamiske omfang af et signal. Reduktion er for eksempel nyttigt for at kompensere for de store variationer i lydstyrke når nogen taler i en mikrofon. </para>
<para>Så snart inddataniveauet overstiger et vist niveau (tærskelen) så reduceres signalet. Den multiplicerer helt enkelt alt over tærskelen med en ratio, som skal være en værdi mellem 0 og 1. Tilsidst multipliceres hele signalet med uddatafaktoren. </para>
<para>Argumenterne attack og release forsinker starten og slutningen af reduktionen. Brug dette hvis du for eksempel stadigvæk vil høre den stærke begyndelse af en bastromme. Argumenterne angives i millisekunder, og en attack eller release på 0 ms er mulig, men kan resultere i en let støj. </para>
</sect3>
</sect2>
</sect1>
<sect1 id="visual-modules-reference">
<title>Reference til visuelle moduler</title>
<para>HUSK når visuelle moduler er "færdige". </para>
</sect1>
</chapter>
|