这是一个在 Bash 中使用 ASCII bell 的简单节拍器脚本。
#!/bin/bash
read -s tempo
interval=$(bc -l <<< "scale=4; 60/$tempo")
echo -n "tempo is $tempo interval is $interval seconds"
while true
do
echo -en "\a"
sleep $interval
done
我遇到的错误:
当速度设置为超过 60 时,节拍器脚本最初将始终以 120BPM 启动,并且只有在我通过按随机键中断它后才快速或慢速更新到正确的速度。
我也在Java中尝试过,遇到了同样的问题。
import java.util.Scanner;
import java.lang.Runtime;
import java.io.*;
public class Metronome {
public static void main(String[] args) throws InterruptedException {
Scanner in = new Scanner(System.in);
double tempo = in.nextDouble();
double interval = (60 / tempo) *1000;
while (true) {
System.out.println("\u0007");
Thread.sleep((long) interval);
}
}
}
钟声之间是否设置了系统默认间隔时间?我中断线程/作业后它如何改变速度?