Journal Portage de TapTempo en Reason

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
14
10
mar.
2018

Si les caractéristiques du langage OCaml vous séduisent mais que sa syntaxe vous rebut, ce journal peut peut-être vous intéresser.
Il s’agit du portage de TapTempo en Reason. Pour ceux qui ne connaissent pas Reason, en gros c’est OCaml avec une syntaxe proche de Javascript. Le code qui suis est le résultat de la conversion du code présenté dans le précédent journal en Reason.

open I18n.Gettext;

let run = (sampleSize, resetTime, precision) => {
  let hitTimePoints = Queue.create();
  print_string(s_("Hit enter key for each beat (q to quit).\n"));
  while (input_char(stdin) != 'q') {
    let currentTime = Unix.gettimeofday();
    if (Queue.is_empty(hitTimePoints)
        || currentTime
        -. Queue.top(hitTimePoints) > resetTime) {
      Queue.clear(hitTimePoints); /* Reset if the hit diff is too big. */
      print_string(
        s_("[Hit enter key one more time to start bpm computation...]\n")
      );
    } else {
      let occurenceCount = Queue.length(hitTimePoints);
      /* Remove the older time from hitTimePoints with Queue.pop if the sample size is reached.
         Otherwise it is kept in the queue with Queue.top. */
      let olderTime =
        Queue.(
          if (occurenceCount < sampleSize) {
            top;
          } else {
            pop;
          }
        )(
          hitTimePoints
        );
      let bpm =
        60. *. float_of_int(occurenceCount) /. (currentTime -. olderTime);
      Printf.printf(f_("Tempo: %.*f bpm%!"), precision, bpm);
    };
    Queue.add(currentTime, hitTimePoints);
  };
  print_string(s_("Bye Bye!\n"));
};

let () = {
  let (sampleSize, resetTime, precision) = Options.createFromArgs(Sys.argv);
  run(sampleSize, resetTime, precision);
};

Voilà, je n'ai pas grand chose d'autre à ajouter.

  • # Cueillette de fruit à portée de main

    Posté par  . Évalué à 2.

    L’arbre s’est révélé fertile et robuste. Il devint touffu et grandit rapidement, fleurit vite, certains fruits furent très rapidement murs. Ils furent cueillis :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.