Salut à tous. Voici un portage de TapTempo en Forth.
5 set-precision
6 Constant steps
: now utime drop ;
: calc-tempo steps 60 1000 1000 * * * s>f drop now swap - s>f f/ ;
: print-tempo ." Tempo: " f. ." bpm" cr ;
: restart now steps ;
: main
." Appuyer sur la touche entrée en cadence (q pour quitter)." cr
restart
begin
key 113 <> while 1- dup 0 = if calc-tempo print-tempo restart then
repeat
;
main cr bye
Pour le tester gforth taptempo.fs
PS: il est plus léger que le pachyderme à base de jvm :-)
# Force
Posté par mzf (site web personnel) . Évalué à 2.
Wahoo, encore plus compacte !
Pour moi c'est quasiment aussi cryptique que du BrainFuck quand je lis ce genre de ligne :
Après test, le tempo n'est affiché que toutes les 6 frappes, c'est voulu ?
[^] # Re: Force
Posté par hocwp (site web personnel) . Évalué à 3. Dernière modification le 11 mars 2018 à 14:23.
Oui c'est voulu pour permettre de lisser les calculs du tempo sur 6 battements.
Pour le côté cryptique, c'est pas bien de ma part : je n'ai pas documenté l'usage du tas.
Mais en gros, au début on a le temps de départ et le compteur sur le tas.
A chaque itération de la boucle on diminue le compteur.
Quand il atteint 0, on calcule le tempo :
steps 60 1000 1000 * * * s>f => on place le numérateur steps*60*1000*1000 sur le tas des flottants.
drop => on enlève le compteur du tas
now => on place le temps actuel sur le tas
swap => on inverse le temps de départ et le temps actuel
- => on calcule la différence
s>f => on place le dénominateur sur le tas des flottants
f/ => on effectue la division
[^] # Re: Force
Posté par mzf (site web personnel) . Évalué à 2.
Merci pour les explications :-)
# Vieux code
Posté par hocwp (site web personnel) . Évalué à 2.
Héhé en relisant ma page perso, je me suis souvenu qu'on peut faire des choses assez terribles en Forth : http://hocwp.free.fr/fex/
Pour résumer, les balises d'un document sont du Forth et quand ils sont évalués produisent le document.
C'est l'inverse du Lisp où Code is Data. En Forth Data is Code.
M'enfin ça ne sert à rien actuellement avec le markdown et consorts. :-)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.