Benutzer-Werkzeuge

Webseiten-Werkzeuge


vd-archiv:listings:4d2013-01-listings

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
vd-archiv:listings:4d2013-01-listings [2017-05-22 16:55] – [Wave Engine (5)] mkavd-archiv:listings:4d2013-01-listings [2017-05-22 17:24] (aktuell) – [Tontabelle] mka
Zeile 3: Zeile 3:
 ===== Wave Engine (5) ===== ===== Wave Engine (5) =====
  
-freqtab.fs+==== freqtab.fs ==== 
  
 <file> <file>
Zeile 179: Zeile 180:
  
 </file> </file>
 +
 +==== tontabelle.fs ====
 +
 +<file>
 +
 +\ -------1---------2---------3---------4---------5-----|
 +\ Wave Engine: Tabelle der Frequenzen & Phasenschritte
 +\ Last edit: 07feb2013 13:35 jgt
 +
 +  7 set-precision  ( kein Einfluss auf f.rdp)
 +
 +  2e 1e 53e f/ f**  fconstant  2root53  ( "Komma")
 +  2e 1e 12e f/ f**  fconstant  2root12  ( "Halbton")
 +          pi 2e f*  fconstant  2pi
 +              440e  fconstant  440Hz    ( justierbar)
 +
 +\ Exakt 10-spaltige Float-Ausgabe
 +\ z.B. 0.00232210 oder 8.344690E3
 +: fs._  ( r --)  10 8 5 f.rdp ;
 +
 +\ Frequenz des tiefsten Tons der "53er"-Tabelle finden 
 +: base53  ( 440Hz -- freq)          \ von 440 Hz aus
 +       2root53 252e f** f/ ;        \ 252 Kommas tiefer
 +
 +\ Frequenz des tiefsten Tons der "12er"-Tabelle finden 
 +: base12  ( 440Hz -- freq)          \ von 440 Hz aus
 +       2root12  57e f** f/ ;        \ 57 Halbtöne tiefer
 +
 +\ Frequenz eines Tons aus der "53er"-Tabelle berechnen
 +: freq53  ( 440Hz offs53 -- freq)    (vom tiefsten
 +       base53 2root53 s>f f** f* ;  \  Ton ausgehend)
 +
 +\ Frequenz eines Tons aus der "12er"-Tabelle berechnen
 +: freq12  ( 440Hz offs12 -- freq)    (vom tiefsten
 +       base12 2root12 s>f f** f* ;  \  Ton ausgehend)
 +
 +\ Aus der Frequenz den Phasenschritt berechnen 
 +: freq>step  ( freq -- step)
 +       ( r) 2pi f* 44100e f/ ;
 +
 +\ Offset für 53stel Oktave => Offset für 12tel Oktave
 +: shrink  ( n -- addr)  12 * 22 + 53 / ;
 +
 +\ Wichtigste Tonbezeichnungen ausgeben
 +: names  ( n --)
 +        53 mod CASE
 +                  0 OF ." C   " ENDOF
 +                  1 OF ." B#  " ENDOF
 +                  4 OF ." Db  " ENDOF
 +                  5 OF ." C#  " ENDOF
 +                  9 OF ." D   " ENDOF
 +                 13 OF ." Eb  " ENDOF
 +                 14 OF ." D#  " ENDOF
 +                 17 OF ." Fb  " ENDOF
 +                 18 OF ." E   " ENDOF
 +                 22 OF ." F   " ENDOF
 +                 23 OF ." E#  " ENDOF
 +                 26 OF ." Gb  " ENDOF
 +                 27 OF ." F#  " ENDOF
 +                 31 OF ." G   " ENDOF
 +                 35 OF ." Ab  " ENDOF
 +                 36 OF ." G#  " ENDOF
 +                 40 OF ." A   " ENDOF
 +                 44 OF ." Bb  " ENDOF
 +                 45 OF ." A#  " ENDOF
 +                 48 OF ." Cb  " ENDOF
 +                 49 OF ." B   " ENDOF
 +                       ."     "
 +        ENDCASE ;
 +
 +\ Überschrift ausgeben
 +: head  ( --)
 +           cr ." Wave Engine: Alle Tonfrequenzen "
 +              ." (bezogen auf " 440Hz f>s . ." Hz)"
 +        cr cr ." base53 = 16.29822 Hz  (tiefster Ton)"
 +           cr ." base12 = 16.35160 Hz  (tiefster Ton)"
 +        cr cr ." Okt Sym Ton# "
 +              ."  T53  Frequenz  Phasenschr "
 +              ."  T12  Frequenz  Phasenschr "
 +           cr ." ---------------------------------"
 +              ." ---------------------------------" ;
 +
 +\ Frequenz und Phasenschritt für "53er" ausgeben
 +: freq-step-53  ( n --)
 +           dup    3 .r  space            \ Offset
 +           440Hz  freq53 fdup fs._       \ Frequenz
 +           space  freq>step   fs._ ;
 +
 +\ Frequenz und Phasenschritt für "12er" ausgeben
 +: freq-step-12  ( n --)
 +           1+ shrink dup 3 .r  space     \ Offset
 +           440Hz  freq12 fdup fs._       \ Frequenz
 +           space  freq>step   fs._ ;
 +
 +\ Anhalten nach jeder Oktave
 +: pause  ( n --)
 +           1+ 53 mod 0=
 +           IF   cr ." Eine beliebige Taste ..."
 +                key drop
 +                24 0 DO 8 ( BS) emit LOOP
 +                   ."                         "
 +           THEN ;
 +
 +\ Programmstart
 +: go       head
 +           cr ."   Dauer  -1"
 +           cr ."   Pause   0"
 + 478 0 DO  cr
 +           i 53 /          2 spaces .
 +           i names                       \ Bezeichnung
 +           i 1+ 3 .r       3 spaces      \ Ton#
 +
 +           i freq-step-53  2 spaces      \ 53er
 +           i freq-step-12                \ 12er
 +
 +           i pause
 +       LOOP  cr cr ." Stacks: " .s f.s cr cr bye
 +; go
 +\ -----------------------------------------------------|
 +
 +</file>
 +
vd-archiv/listings/4d2013-01-listings.1495464933.txt.gz · Zuletzt geändert: 2017-05-22 16:55 von mka