Bonjour Nal,
Malgré le déferlement de journaux provoqué par le premier TapTempo, il manquait toujours Tcl à l'appel, donc voilà une version pour ce vénérable petit langage de script facile à apprendre et bien pratique.
#!/usr/bin/env tclsh8.6
package require cmdline
set options {
{p.arg 0 "Précision du tempo (nombre de décimales)"}
{s.arg 5 "Nombre d'échantillons pour le calcul du tempo"}
{r.arg 5 "Temps de remise à zéro du calcul (secondes)"}
{v "Afficher la version"}
}
set usage ": ./taptempo.tcl \[options\]"
try {
array set params [::cmdline::getoptions ::argv $options $usage]
} trap {CMDLINE USAGE} {msg} {
puts stderr $msg
exit 1
}
if {$params(v)} {
puts "a02"
exit 0
}
puts "Appuyer sur la touche entrée en cadence (q pour quitter)."
while {[set key [gets stdin]] ne "q"} {
set now [expr {[clock microseconds] / 1e6}]
lappend times $now
if {[llength $times] < 2 || $now - [lindex $times end-1] > $params(r)} {
puts "Appuyer encore sur la touche entrée pour lancer le calcul du tempo…"
set times [list $now]
continue
}
set times [lrange $times end-[expr {$params(s)+1}] end]
set mean 0.0
for {set i 0} {$i < [llength $times] - 1} {incr i} {
set mean [expr {$mean + [lindex $times $i+1] - [lindex $times $i]}]
}
set mean [expr {$mean / [llength $times]}]
set tempo [expr {60 / $mean}]
puts -nonewline [format "Tempo: %.$params(p)f bpm " $tempo]
flush stdout
}
puts "Au revoir !"
Il faut le paquet tcllib
pour les options avec cmdline
(il y a des chances qu'il soit déjà installé, mais pas forcément). D'ailleurs, j'ai pas vu comment faire des options longues avec, donc il n'y a que les versions courtes.
# Regroupement
Posté par lolop (site web personnel) . Évalué à 8.
Avec toutes ces variations, vous n'avez plus qu'à monter un équivalent de 99 Bottles of Beer. Bon, y'a encore de la marge avant d'avoir autant de variations dans les langages.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Regroupement
Posté par Nicolas Boulay (site web personnel) . Évalué à 4.
cela ne devrait pas être trop difficile de monter un repository github avec toutes les versions centralisés. Par contre, il faut une personne qui s'en occupe.
"La première sécurité est la liberté"
# Hello World
Posté par gUI (Mastodon) . Évalué à 3.
TamTempo is the new Hello
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Hello World
Posté par Faya . Évalué à 3.
TapTempo is the new TodoMVC
# Petite erreur…
Posté par anaseto . Évalué à 3.
Il manque un
-1
, m'en suis rendu compte en faisant la version en C. D'ailleurs, tout le calcul du tempo se simplifie en :Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.