ОСНОВНОЙ - активировать запись микрофона при нажатии клавиш? - PullRequest
0 голосов
/ 28 января 2010

Мне предъявлена ​​обвинение в старой программе BASIC, которую необходимо изменить, чтобы активировать запись с микрофона при нажатии определенной клавиши. У меня проблемы с поиском как.

Кто-нибудь здесь может пролить свет?

Спасибо за любую помощь.

Редактировать: Я уверен, что изначально он был написан для GW-BASIC.

1 Ответ

1 голос
/ 28 января 2010

Поскольку звучит так, как будто у вас еще не написан какой-либо аудиокод, я советую вам не пытаться записывать с GW-BASIC. Нет встроенных функций для доступа к звуковой карте (SOUND и BEEP не учитываются, поскольку они работают с динамиком ПК), а отправка управляющих кодов SoundBlaster в лучшем случае ненадежна в Windows. Для записи используйте вторичную программу для Windows.

Что касается базового кода, вам придется опросить клавиатуру. Пример:

100 PRINT "Press any key to continue"
110 A$ = INKEY$
120 IF A$ = "" THEN GOTO 110
130 IF A$ = CHR$(1) THEN GOSUB 1000
140 PRINT "Rest of code goes here..."
1000 ' Ctrl+A triggered the microphone
1010 PRINT "Starting microphone recording."
1020 SHELL "otherprg --startrecording"
1030 RETURN

Замените предпочитаемый код ключа. Если вы используете INPUT, есть способ - оператор KEY? - заставить функциональную клавишу вставлять текст по вашему выбору. Используйте KEY для вставки, скажем, CHR $ (2) + CHR $ (13) (^ B плюс Enter) при нажатии функциональной клавиши, затем при каждом вызове INPUT сканируйте результаты для CHR $ (2) с использованием INSTR и переходите по желанию код микрофона.

Это все равно не сработает, если вы используете INPUT для чтения чисел. Серьезно, если только случай записи микрофона не очень ограничен, вы настраиваете себя на отвратительный код, который работает только в основном.

РЕДАКТИРОВАТЬ: И все это катается вокруг самой большой проблемы: GW-BASIC является однозадачным. Когда вы записываете с микрофона, вы не можете выполнять настоящую работу в другом месте программы, и наоборот.

...