每个ASCII铃声之间是否有默认间隔



这里有一个使用ASCII bell的Bash中的简单节拍器脚本。

#!/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);
}
}
}

是否有系统默认的钟声间隔时间?为什么在我中断线程/作业后它改变了速度?

我不认为在两次嘟嘟声之间有强制的最小间隔,但每次嘟嘟声本身都有一定的持续时间,小于一秒,但至少足够长,让你听到嘟嘟声而不是点击声。如果您按顺序发送两次嘟嘟声,并且发送间隔短于嘟嘟声持续时间,则007字符只需在缓冲区中排队并按顺序进行处理。其效果就好像你将文本发送到终端的速度比它显示的速度快。

最新更新