Перейти к содержимому


Фотография

Как работает звуковая карта?

computronics cx карта звук ВОЛНЫ

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 10

#1 Оффлайн   Fingercomp

Fingercomp
  • Гуру
  • Сообщений: 2 015
  • Уровень сигнала: 149,05%
  • В игре: 1279 час. 35 мин.

Награды

                                               

Отправлено 18 Июнь 2016 - 11:59

Взываем на помощь богов и богинь звука!

 

В общем, в CX в 1.6.1 заезжает крутейшая, звуковая карточка. Я сейчас вкратце опишу её функции, взятые из исходников мода.

  • sound.modes — это таблица, которая содержит пары "имя формы волны ⟷ её код" и наоборот. Например, sound.modes.sine вернёт код для синусоиды. Вроде 0, лень вверх по сырцам бежать.

  • Имеются следующие формы волн:
    • square (ква... меандр),

    • sine (синусоида),

    • triangle (треугольная),

    • sawtooth (пилообразная).

    • А ещё есть noise — это белый шум.


  • Есть функция sound.setTotalVolume(volume: number), которая моментально для всех каналов выставляет общую громкость (от 0 до 1).

  • Каналы? Их, как и у предшественников — шумовых и пищащих карт, — 8 штук. Они нумеруются от 1 до 8 включительно, и на каждый из них можно поместить...

  • Инструкции, которыми управляется звуковая карта. Есть некая "очередь" у звуковой карточки, в которую помещаются определённые инструкции, и затем...

  • sound.process() запускает в фоне обработку этой "очереди". То есть, будут устанавливаться параметры, играться звук и прочее.

  • Обращу внимание, что это всё в фоне, да. То есть, нам нужны циклы типа таких: while not sound.process() do os.sleep(.05) end.

  • Очередь можно почистить через sound.clear().

  • И снова про каналы. Каждый из них может быть закрыт или открыт. Соответственно, закрытый канал в большинстве случаев играть звук не будет, а открытый — с превеликим удовольствием.

  • Открыть можно с помощью sound.open(channel: number), закрыть — sound.close(channel: number). И да, это уже инструкции.

  • Вот вам ещё инструкций. Можно установить форму волны на отдельном канале: sound.setWave(channel: number, type: number), вторым аргументом надо скормить код, полученный через sound.modes.

  • Можно установить частоту этой самой волны с помощью sound.setFerquency(channel: number, frequency: number). Инструкция, а как же.

  • Если вы любители... ээ, регистра сдвига с линейной обратной связью, в общем, LFSR/РСЛОС, можно даже на канал ответственную задачу генерирования этого шума возложить. Функция: sound.setLFSR(channel: number, initial: number, mask: number). Чёрт знает, как она работает.

  • Функция sound.delay(duration: number), должна, вообще, выставить какую-то задержку с данной длительностью в миллисекундах. Но что-то я совершенно не понимаю, как её использовать. А использовать надо! Иначе звука не будет.

  • И сразу же можно поставить частотную модуляцию с помощью sound.setFM(channel: number, modIndex: number, intensity: number). Или убрать её: sound.resetFM(channel: number).

  • Тем же образом можно выставить и амплитудную модуляцию. sound.setAM(channel: number, modIndex: number) и sound.resetAM(channel: number).

  • С помощью sound.setADSR(channel: number, attack: number, decay: number, attenuation: number, release: number) имеется возможность выставить ADSR-огибающую. Второй, третий и пятый аргументы указываются в миллисекундах, четвёртый — в виде числа от 0 до 1.

  • Или убрать её: sound.resetEnvelope(channel: number).

  • Для отдельного канала возможно выставить громкость, для этого нужна команда sound.setVolume(channel: number, volume: number). Громкость, как обычно, от 0 до 1.

Собственно, это все функции.

Теперь осталась мааааленькая запинка, с которой после несколько часов тыканья я не особо справился. Как заставить эту карту сгенерировать мне звук?

Потому предлагаю поиграться с этой штукой всем форумом :gamer2:

  • 1.7.10: качаем OC, CX и Asielib.

  • 1.8: OC тут, Asielib не нужен.

  • 1.9: OC тут, Asielib тоже не нужен.

И если вы-таки поняли, как заставить её генерировать звук разных уровней крутости, отпишитесь об этом здесь.


  • Totoro, Asior, electronic_steve и еще 1 это нравится

#2 Оффлайн   Doob

Doob
  • Пользователи
  • Сообщений: 814
  • Уровень сигнала: 17,03%
  • В игре: 146 час. 10 мин.

Награды

                                   

Отправлено 18 Июнь 2016 - 13:57

Ну вот, хоть что-то нормальное будет в этом моде. Генерировать музыку на кассетах, была та еще пытка.



#3 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 458
  • Уровень сигнала: 0,22%
  • В игре: 1 час. 54 мин.
  • ГородCity17

Награды

                             

Отправлено 19 Июнь 2016 - 04:38

Походу мод ещё не доделан. У шумящей карты нет функции для открытия канала. Я так и не понял как её тестить не открывая канал.



#4 Оффлайн   Fingercomp

Fingercomp
  • Автор темы
  • Гуру
  • Сообщений: 2 015
  • Уровень сигнала: 149,05%
  • В игре: 1279 час. 35 мин.

Награды

                                               

Отправлено 19 Июнь 2016 - 10:08

Всё там доделано и работает прекрасно.



#5 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 458
  • Уровень сигнала: 0,22%
  • В игре: 1 час. 54 мин.
  • ГородCity17

Награды

                             

Отправлено 19 Июнь 2016 - 10:57

Всё там доделано и работает прекрасно.


Если разобрался, может напишешь гайд?

#6 Оффлайн   Fingercomp

Fingercomp
  • Автор темы
  • Гуру
  • Сообщений: 2 015
  • Уровень сигнала: 149,05%
  • В игре: 1279 час. 35 мин.

Награды

                                               

Отправлено 19 Июнь 2016 - 11:10

Если разобрался, может напишешь гайд?

Напишу. После релиза CX.

Сейчас главное — разобраться с звуковой картой. Но, как я вижу, как-то не особо люди хотят помочь.

Пока рекомендую хотя бы почитать описания функций карты шумовой. И, к слову, там нет ничего интересного.



#7 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 458
  • Уровень сигнала: 0,22%
  • В игре: 1 час. 54 мин.
  • ГородCity17

Награды

                             

Отправлено 19 Июнь 2016 - 12:47

Напишу. После релиза CX.
Сейчас главное — разобраться с звуковой картой. Но, как я вижу, как-то не особо люди хотят помочь.
Пока рекомендую хотя бы почитать описания функций карты шумовой. И, к слову, там нет ничего интересного.


Тестил я вчера новые версии ОС и СХ. Ничего не понял как работает в этих картах СХ.
Тут без 100 грамм костной пыли не разобраться.

#8 Оффлайн   TC1061

TC1061
  • Пользователи
  • Сообщений: 39
  • Уровень сигнала: 6,93%
  • В игре: 59 час. 28 мин.

Отправлено 26 Январь 2018 - 07:59

Вообщем повозился с вашей карточкой и вышло вот что:

component.sound.open(1)
-- Создаем очередь из частот и сразу обрабатываем
for n=1,1000 do
  component.sound.setWave(1,component.sound.modes.sine)
  component.sound.setFrequency(1,n)
  component.sound.delay(1)
  component.sound.process()
end
-- Слушаем получившийся бульк и радуемся что все работает :)

Сообщение отредактировал TC1061: 26 Январь 2018 - 08:21


#9 Оффлайн   Fingercomp

Fingercomp
  • Автор темы
  • Гуру
  • Сообщений: 2 015
  • Уровень сигнала: 149,05%
  • В игре: 1279 час. 35 мин.

Награды

                                               

Отправлено 26 Январь 2018 - 13:38

Спустя этой просьбы прошёл почти год, когда я написал свой гайд по этой штуке в трёх частях с подробным объяснением. Больше мне не нужно ничего в этом топике, естественно.

 

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



#10 Оффлайн   TC1061

TC1061
  • Пользователи
  • Сообщений: 39
  • Уровень сигнала: 6,93%
  • В игре: 59 час. 28 мин.

Отправлено 26 Январь 2018 - 21:11

Спустя этой просьбы прошёл почти год, когда я написал свой гайд по этой штуке в трёх частях с подробным объяснением. Больше мне не нужно ничего в этом топике, естественно.

 

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

Ой простите. Но, если вынести из цикла указание волны и процессинг, звук ведь совсем не такой выйдет?


Сообщение отредактировал TC1061: 26 Январь 2018 - 21:12


#11 Оффлайн   Fingercomp

Fingercomp
  • Автор темы
  • Гуру
  • Сообщений: 2 015
  • Уровень сигнала: 149,05%
  • В игре: 1279 час. 35 мин.

Награды

                                               

Отправлено 26 Январь 2018 - 22:33

звук ведь совсем не такой выйдет?

Гм, разве? Настройки же кумулятивны... в смысле, не сбрасываются сами по себе. Как минимум, когда я писал synth (2017-05), они такими были.


Сообщение отредактировал Fingercomp: 26 Январь 2018 - 22:34






Темы с аналогичным тегами computronics, cx, карта, звук, ВОЛНЫ

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных