消除Mac开机“咚”声的方法



  • 消除Mac开机“咚”声的方法

    2222.jpg
    Mac计算机系统很棒,它的笔记本很薄,适合携带,让我很方便地随时办公。不过,老款的Mac有一个毛病,就是开机总有“咚”的一声。它令我们很尴尬,也让我们吓一跳。所以我们想要是有删除“咚”声的办法就好了。
    最开始我想要是能够将“咚”声替换成我想要的开机声音就好了。后面发现似乎不行(只有Mac的系统工程师才能做到吧),因为这其中有一段较长的历史渊源(以下来自网络)

    苹果电脑著名的启动声音是由 Jim Reekes 使用他在 1991 年的那台价值 7000 美元的 Quadra 700 上录制的,而这段声音来自其个人工作室里的 Korg Wavestation 合成器,他双手撑开到尽可能大,弹下了这个大三和弦。
    为什么用这个音色?Reekes 只是说他感觉这个声音“最正”而已,他想要的就是这种很宽、即便高音也有着很重的低音、有着锋利的起音的声音。Wavestation 里的这个音色有点类似管风琴,又具备敲击感。
    最后,Reekes 又加入了一些附加音色,做了立体声移相和混响效果使声音的谐波更丰富。
    Reekes 知道自己的声音将被苹果用户所熟知,尤其是那些经常要重启电脑的用户,所以他在设计声音的时候也考虑到了这一点,遇到崩溃而不得不重启绝对是一种跟开机完全不同的体验。所以 Reekes 想让自己的声音使用户联想到“调色板清洗剂”之类的清爽的东西,而不是电脑崩溃了。
    
    实际上 Reekes 操刀制作了很多苹果电脑的启动声音,从 1991 年开始历代苹果电脑的启动声音几乎都出自 Reekes 之手,一直沿用至今。有一次当 Reekes 最终调节好一个启动声音之后,ROM 工程师又在其基础上创建了新版本,他们做了一些微调,比如在首代 PowerMac 上加入了 Stanley Jordon 的吉他扫弦声音。Jim 对他们这个修改意见很大,因为那样声音将失去“力量”。ROM 工程师毕竟不是录音工程师,他们不熟悉音频,最终把 PowerMac 启动声音搞的听起来很神圣但毫无深度(没准因为那个 ROM 工程师是 Stanley Jordon 的粉丝?)
    
    当乔布斯在 1997 年回归苹果之后,据说他提出要让所有苹果电脑都具备统一的声音,并钦点说我就喜欢 Reekes 以前做的那种声音,于是没人敢在 Reekes 做的声音上做修改了。
    Reekes 并不是一个专职音乐人,他为苹果公司改造了最初的 Sound Manager,同时也是 QuickTime 的关键工程师之一,甚至 iPod 触摸轮背后也有他的贡献。
    

    去网上搜了很多办法,有一个是写脚本来实现的。我想我恰好也折腾过较多的Mac系统,也试试写一写脚本来实现这个效果看看。于是我就开始“牛刀小试”啦。

    #!/bin/sh
    echo '#!/bin/bash' >> sound-off.sh
    echo 'osascript -e "set volume output muted 1"' >> sound-off.sh
    chmod +x sound-off.sh
    sudo cp sound-off.sh /Library/Scripts
    
    echo '#!/bin/bash' >> sound-on.sh
    echo 'osascript -e "set volume 5"' >> sound-on.sh
    chmod +x sound-on.sh
    sudo cp sound-on.sh /Library/Scripts
    
    sudo defaults write com.apple.loginwindow LogoutHook /Library/Scripts/sound-off.sh
    sudo defaults write com.apple.loginwindow LoginHook /Library/Scripts/sound-on.sh
    

    如此,用终端输入或者是保存一个文件test.sh再添加可执行全权限(chmod +x test.sh)再在打开方式中选择终端就可以达到效果了!注意,其中可能要输入密码。怎么样?相比网上其它的方式是不是很简单?


Log in to reply
 

走马观花

最近的回复

  • @qyvlik 这个例子可否提供学习一下?

    read more
  • 113.jpg
    1、什么是lambda表达式,什么是闭包?
    lambda表达式即lambda函数,也就是匿名函数。

    lambda表达式在C++中包含了
    []表示捕获
    ()是函数的参数,需要指定类型
    ->type是返回的类型,可以省略,如果编译器无法推出类型的话可以强制编写
    {}是函数体。

    lambda可以被声明为mutable的,作用是将捕获的内容进行改变。
    闭包是函数的定义以及定义函数时提供的环境,总称为闭包。lambda函数也是一种闭包。
    lambda本身是匿名函数,而捕获语句则是提供了定义函数时提供的环境。

    2、什么是右值引用?
    右值引用相对与左值引用而言的。左值即=运算符左边的变量,右值是=运算符右边的常量或变量。由此可以看出,
    右值引用指的是对常量或变量的引用。它的用途包含了移动语义和完美转发。
    移动语义就是弥补了C++历史在处理变量传递时丢失的一种语义。它和值传递、引用传递一样,是变量传递的方式之一。
    如果没有移动语义,为了将一个类的实例传递给另外一个实例,就需要额外地进行构造、赋值、销毁的操作。
    对于一些比较复杂的变量,的确是非常耗时并且消耗大的操作。(浪费指令时间、浪费内存)

    对于这样的函数返回:
    vector<string> str_split(const string& s) {
    vector<string> v;
    // ...
    return v; // v是左值,但优先移动,不支持移动时仍可复制。
    }

    标准要求先调用移动构造函数,如果不符合那么再调用拷贝构造函数。所以可以轻松地写出这种写法而不必担心效率问题。
    同时,现代编译器都会对返回值进行优化,成为RVO以及NRVO。所以不用太担心会多调用构造析构函数。

    对于完美转发,C++对于引用的转发有规则。传统的C++是无法对引用进行再引用的。但是现代的C++放宽了它的使用范围。
    只有右引用右值的时候,才会产生右引用。这也称为引用折叠。

    3、auto关键字的作用是什么?
    auto关键字为的是能够让编译器自动推导类型。自C++98之后,编译器对类型的推导变得越来越智能了。
    而我们在编写复杂代码的时候,冗长的类型不仅容易出错,有时也不容易人工推导出类型。
    因此auto可以简化我们的任务量,让类型的推导交给编译器完成。
    除了auto外,我们还可以使用decltype()来让编译器推导类型。

    read more
  • 我感觉比起《Physically Based Rendering Technique》,还是《Ray Tracing in a Weekend》更容易上手,因为慢慢地能够做出一个渲染效果,这个是有成就感的。🎓

    read more
  • G

    北京名律免费法律咨询,解决您的法律困扰,如果您眼下没有遇到法律上的问题,也可以留一位大律师的联系方式以备不时之需!ccfd91efc3a6b2ed0e79054d2248eed.jpg bf6015b383483f1fe83cdcfd130fc6b.jpg 2f347879129add1096bf3424edbe517.jpg

    read more

关注我们

微博
QQ群