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

问题描述 投票:2回答:1

这是Bash中使用ASCII铃声的简单节拍器脚本。

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

  }

}

是否在铃声之间设置了系统默认间隔时间?我中断线程/作业后如何改变速度?

java bash non-ascii-characters metronome
1个回答
0
投票

我不认为有一个强制的最小间隔between]两个蜂鸣声,但是每个蜂鸣声本身都有一个特定的[[duration,小于一秒,但至少足够长,您可以听到发出哔声,而不是单击。如果您依次发送两次哔声,并且发送间隔短于哔声持续时间,则\0007字符只是在缓冲区中排队,并按顺序处理。效果就像您将文本发送到终端的速度快于其显示的速度。

© www.soinside.com 2019 - 2024. All rights reserved.