Поиск по сайту
Результаты поиска по тегам 'звуковая карта'.
Найдено 2 результата
-
Эта тема была создана для того что-бы привлечь умных людей, чтобы с ними сделать звук, задумка "структуры" чтобы понять куда я клоню: Будет список, в нём элементы, в элементах продолжительность звука, канал для звука, и частота звука. sound = {{['mhz'] = 200, ['delay'] = 0.5, ['chanel'] = 1}, {['mhz'] = 430, ['delay'] = 0.3, ['chanel'] = 3}} Недостаток схемы с компонентом компьютера в том, что когда воспроизводишь звук через компонент него, require('component').computer.beep() он стопит всю систему, нету многопоточности. А преимущество звуковой карты, это многопоточность, максимальная чистота не ограничена, и проигрывается в фоне, поставил в очередь запустил и занимайся своими делами. По факту нужно сделать проигрыватель(сделан) и редактор звука, а еще его формат.(решён, будет как в том примере который я приводил выше) Буду ждать людей и претензий по поводу реализации... Дискорд: oleshe#9334 Прогресс : 50% 0%.В ожиданий чуда сделаем программу для проигрывания звука из файла, наверное. 50%.Был сделан проигрыватель нот, это библиотека только на MineOs(проблема с загрузкой таблиц из файла).Но к сожелению сочинить ничего не удалось, было неудобно. Сейчас и завтра будем делать прогу редактирования.
-
SoundLib by TC1061 Здравствуйте! Сегодня я наконец-то доделал свою прекрасную либу для работы со звуковой картой! Она позволяет легко и быстро использовать этого зверя. На стороне вашей программы лежит лишь загрузка либы и ее использование (и удаление объектов звука)! Не нужно даже следить за тем, есть ли звуковая карта. Без нее библиотека никаких ошибок не выдает, но скорее всего не будет проигрывать звук. И главная ее особенность - она может проигрывать сколько угодно звуков одновременно (пока оперативка не кончится ). Вообщем скачать ее можно здесь . Ну а на опенкомпе выполнить команду: pastebin get 0LwEez14 /lib/soundlib.lua Документация: soundlib.init=function():boolean -- Инициализирует библиотеку. Возвращает, получилось ли это сделать. soundlib.deinit=function():boolean -- Тоже, что и init, но наоборот. soundlib.reinit=function() -- Выполняет deinit, а затем init. soundlib.process=function([interval:number]):boolean -- Проигрывает звук. Нужно выполнять эту функцию как можно чаще, или звук будет прерывистым. Задерживает программу примерно на interval или 10 мс. Рекомендуется ставить interval на 50. Возвращает, получилось ли это сделать. soundlib.newSound=function(size:number,delay:number):sound -- Создает объект звука с количеством сэмплов (кусочков звука), у каждого из которых длительность delay. Остается навсегда, если потерять его, не уничтожив с помощью sound:destroy() soundlib.getSoundCount():number -- Возвращает количество созданных не уничтоженных звуковых объектов sound:play()=function() -- Воспроизводит звук. sound:rewind()=function() -- Возвращает в начало звука sound:pause()=function() -- Приостанавливает звук sound:stop()=function() -- sound:rewind+sound:pause sound:setVolume(volume:number) -- Поставить звук, от 0 до math.huge. Настоящая громкость получается при volume 1. sound:getVolume():number -- Возвращает громкость звука. sound:setLooping(state:boolean)=function() -- Переключить повтор звука. sound:isLooping():boolean -- Возвращает, включен ли повтор. sound:getDuration():number -- Возвращает длительность звука в секундах. sound:seek():number -- Возвращает позицию воспроизведения в секундах. sound:setSeek(pos:number) -- Устанавливает позицию воспроизведения в секундах. sound:getCurrentSample():number -- Тоже, что и sound:seek, но в семплах (может быть дробным) sound:getSampleCount():number -- Возвращает size, который вы указали в soundlib.newSound sound:set(rawpos:number,wave:string,freq:number,vol:number) -- Ставит на сэмпле rawpos частоту freq с громкостью vol на типе волны wave sound:get(rawpos:number):number, number -- Возвращает частоту и громкость сэмпла rawpos Пример кода: print("Initialising.") local sound xpcall(function() local computer=require"computer" local term=require"term" local slib=require"soundlib" slib.reinit() print("Generating sound.") local sizesd=1000 print("Selected size "..sizesd) sound=slib.newSound(sizesd,0.001) sound:setVolume(1) print("Generating samples") for n=0,sizesd-1 do sound:set(n,"sine",500,1-n/sizesd) end print("Playing sound.") sound:setLooping(true) sound:play() local n=computer.uptime()+10 local c=0 local prevcheck=computer.uptime() local processOk=true repeat processOk=slib.process(50) and processOk c=c+1 if c>=50 then local t=computer.uptime()-prevcheck print(math.floor(50/t) .. " PPS, sound is "..(sound:isPlaying() and "playing" or "NOT playing")..", "..(processOk and "no errors" or "errored")) c=0 processOk=true prevcheck=computer.uptime() pcall(os.sleep,0) end until computer.uptime() > n sound:stop() -- Необязательно т.к. он все равно не будет проигрываться sound:destroy() -- А вот это уже обязательно. Иначе при следующем запуске soundlib.process в любой программе, звук перемешается с нашим. end,function(err) if sound then sound:stop() sound:destroy() end print(debug.traceback(err,-2)) end)