【问题标题】:What is the easiest way I can create a 'beep' sound from a Ruby program?我可以从 Ruby 程序创建“哔”声的最简单方法是什么?
【发布时间】:2010-10-11 21:37:13
【问题描述】:

我正在制作一个小的 ruby​​ 命令行脚本,我想知道让程序发出哔声的最简单方法是什么。

【问题讨论】:

    标签: ruby beep


    【解决方案1】:

    尝试打印响铃字符:

    print "\a"
    

    【讨论】:

    • 如何自定义此哔声?我想播放不同于默认的哔声。谢谢
    • 你不能,这些是用于控制终端的 ansi 转义码 - 但也许你可以在两者之间播放哔哔声和睡眠以产生不同的序列.. checkout en.wikipedia.org/wiki/…
    • 有趣的是,这只会为我产生一个beep3.times { print "\a\a\a"; sleep 3 }?‍♀️
    【解决方案2】:

    对于 Mac OS X:

    system('say "beep"')
    

    由于某种原因,传统的 print "\a" 对我来说并不总是有效(MBA,10.7.4)

    【讨论】:

    • 这当然是一种方法。
    • 确保你使用双引号并且你在一个真正的终端中 - 在 macos 默认终端中工作,iterm2 也在 linux 终端中工作。在 macos 中,如果您的音量 === 0,那么屏幕会闪烁,因为笔记本电脑似乎使用声卡来发出哔哔声,而不是像老式台式电脑那样使用内置扬声器。它不适用于 vscode 终端中的 PTY - 我认为它应该适用于 tmux 或 ssh 会话。不确定 Windows 终端 - 可能适用于 git shell cygwin 等
    【解决方案3】:

    对于 Windows,请使用 win32-sound gem - Adding Sound to Your Ruby Apps

    安装:

    gem install win32-sound
    

    然后在 Ruby 中:

    require 'win32/sound'
    include Win32
    ...
    Sound.beep(100, 500)
    

    对于非 Windows,看起来这样可以工作:How to make beep sounds?

    puts 7.chr
    

    【讨论】:

    • 您可以通过 putc 7 在最后一个上节省宝贵的字节。尽自己的一份力量来解决字节短缺问题!
    【解决方案4】:

    最简单的方法是puts 7.chr

    这是自定义方式

    require "Win32API"
    Beep = Win32API.new("kernel32", "Beep", ["I", "I"], 'v')
    def beep freq, duration
      Beep.call(freq, duration)
    end 
    
    beep 600, 400
    

    【讨论】:

      【解决方案5】:

      尝试以下方法:

      $stdout.beep
      

      【讨论】:

      • 这对我不起作用,它在哪个版本的 Ruby 中,它在任何地方都有文档吗?
      • 我认为你需要一个苹果 macintosh。我尝试了一个 linux ssh,但它失败了。当然它不会在 Windows 或 HaikuOS 上运行。
      • 不,这不是 Mac 的东西。
      • 在 macOS Catalina 上的 Ruby 2.6 中工作。
      猜你喜欢
      • 2014-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多