Как я играю звук в Октаве?

Согласно этот поток и этот :

затмение попытается определить местоположение Вашей JVM, используемой для [1 126] запуск сам путем исследования пути.

Так, Вы можете:

  • Создают переменную среды JAVA_HOME, которая указывает на Ваш на самом деле предпочтительный JDK.
    Этот путь можно легко выбрать между установленным JDKs.

  • Помещенный %JAVA_HOME %\bin в пути, где угодно предшествуя \system32, который также содержит Java, javaw & двоичные файлы co.
    Этот способ, которым вызывается Java* в каталоге bin JDK каждый раз, когда он вызывается от пути.

я полагаю, что другие сообщения говорят Вам, как найти то, что использует затмение JVM.

Однако я интерпретировал Ваш вопрос как: "что JVM затмит , будет использовать при запуске себя?" , когда никакой -vm args используется .

После дальнейшего исследования, кажется, что затмение будет искать JRE:

  • любой непосредственно в соответствии с его каталогом (\jre) установки: если Вы копируете содержание кого-либо, установил JRE в том подкаталоге, это будет выбрано
  • в C:\Program Files\Java\JRE....
  • в %PATH% (см. выше)

Также читает это ТАК ответ для наблюдения, почему затмение будет избранным jvm.dll по умолчанию вместо javaw.exe

10
задан Bob Cross 26 September 2009 в 14:52
поделиться

3 ответа

На одной из моих Linux-машин я создал следующий сценарий ofsndplay для обхода жестко привязанной зависимости:

$ cat /usr/bin/ofsndplay

#!/bin/sh
## Coping with stupid dependency on ofsndplay in octave
play -t au -

Этот конкретный сценарий использует Утилита SoX play .

По общему признанию, комментарий не нужен для функциональности, но он определенно заставил меня почувствовать себя лучше ....

3
ответ дан 3 December 2019 в 18:34
поделиться

Установите alsa-utils или pulseaudio-utils и введите в ~ / .octaverc следующее:

global sound_play_utility = 'aplay';

или

global sound_play_utility = 'paplay';
3
ответ дан 3 December 2019 в 18:34
поделиться

Дзен закрытия

Другие люди упоминали закрытие. Но удивительно, как много людей знают о закрытии, пишут код, используя закрытия, но все еще имеют неправильное представление о том, что закрытия на самом деле. Некоторые путают первоклассные функции с закрытиями. В то же время другие рассматривают его как своего рода статическую переменную.

Для меня закрытие является разновидностью «частной» глобальной переменной. То есть своего рода переменная, которую некоторые функции видят как глобальную, но другие функции не могут видеть. Я знаю, что это играет быстро и свободно с описанием основного механизма, но именно так он чувствует себя и ведет себя. Для иллюстрации

// Say you want three functions to share a single variable:

// Use a self-calling function to create scope:
(function(){

    var counter = 0; // this is the variable we want to share;

    // Declare global functions using function expressions:
    increment = function(){
        return ++counter;
    }
    decrement = function(){
        return --counter;
    }
    value = function(){
        return counter;
    }
})()

теперь три функции инкремент , декремент и значение совместно используют переменную счетчик без счетчика , который является фактической глобальной переменной. Такова истинная природа закрытия:

increment();
increment();
decrement();
alert(value()); // will output 1

Вышеуказанное не является действительно полезным использованием закрытия. На самом деле, я бы сказал, что использование этого способа является антиобразцом. Но это полезно для понимания характера закрытия территорий. Например, большинство людей попадаются, когда пытаются сделать что-то подобное:

for (var i=1;i<=10;i++) {
    document.getElementById('span'+i).onclick = function () {
        alert('this is span number '+i);
    }
}
// ALL spans will generate alert: this span is span number 10

Это потому, что они не понимают природы закрытия. Они думают, что они передают значение i в функции, когда фактически функции совместно используют одну переменную i . Как я уже говорил, особый вид глобальной переменной.

Чтобы обойти это, нужно отсоединить * закрытие:

function makeClickHandler (j) {
    return function () {alert('this is span number '+j)};
}

for (var i=1;i<=10;i++) {
    document.getElementById('span'+i).onclick = makeClickHandler(i);
}
// this works because i is passed by reference 
// (or value in this case, since it is a number)
// instead of being captured by a closure

* примечание: Я не знаю здесь правильную терминологию.

-121--538787-

Это на самом деле работает так, как вы ожидаете в Ruby 1.9!

define_method :m do |a = false|
end

Если требуется 1,8 совместимость, но для определения метода не обязательно требуется замыкание, попробуйте использовать class _ eval с аргументом последовательности и регулярным вызовом def :

class_eval <<-EVAL
  def #{"m"}(a = false)
  end
EVAL

В противном случае следуйте предложению в потоке, с которым связан Филипп. Пример:

define_method :m do |*args|
  a = args.first
end
-121--2521470-

На OSX, это то, что я сделал, чтобы получить звук работает:

из sound справка:

Эта функция записывает аудиоданные через канал в программу «play» из дистрибутива sox. sox работает в любом месте, но у него есть только аудио драйверы для OSS (в основном linux и freebsd) и SunOS. Если ваш локальный компьютер не является одним из них, напишите сценарий оболочки, такой как ~/bin/octaveplay, заменяющий AUDIO_UTILITY с любой звуковой утилитой в вашей системе: # !/bin/sh cat > ~/.octave _ play.au SYSTEM_AUDIO_UTILITY ~/.octave _ play.au rm -f ~/.octave _ play.au и установить глобальную переменную (например, в .octaverc) глобальный sound_play_utility="~/bin/octaveplay";

I назвал следующий сценарий «octaveplay» и поместил его в ~/bin:

cat > ~/.octave _ play.aif
afplay ~/.octave _ play.aif
rm -f ~/.octave _ play.aif

Затем я создал .octaverc и добавил: глобальные sound_play_utility="~/bin/octaveplay";

Voila!

1
ответ дан 3 December 2019 в 18:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: