ZXNet эхоконференция «zxnet.pc»
тема: AY-player для linyx?
от: Dima Kozlov
кому: All
дата: 01 Feb 2006
Hello, SMT
SMT> ты же на с/с++ пишешь плагины? можно и статически слинковать. правда
SMT> DLL хорош тем, что можно независимо обновлять плагины и плейер
зришь в корень! кроме того можно иметь одну копию dll'ки в системе и обновлять
только ее...
SMT> вообще-то пока рано делить шкуру неубитого медведя, ещё интерфейс
SMT> даже не готов.
согласен, в конце концов если интерфейс будет достаточно стабильным, обертку
можно один раз руками будет сделать...
SMT> вот теперь думаю, для модуля нужен список свойств, которые можно
SMT> прочитать, и тех, которые можно редактировать
а вот на эту тему хорошо бы с Сергеем Бульбой пошептаться...
от: Станислав Ломакин
кому: All
дата: 02 Feb 2006
Hello, elf/2
отъ xmms-плагин...
раззиповать, сделать "make plugin", скопировать образовавшийся libvtxplay.so в
каталог, где xmms держит плагины ввода.
(у меня это /usr/lib/xmms/Input)
кстати, оказывается, есть уже один vtx-xmms-плагин под линух %)
тута: http://sashnov.nm.ru/ayengine.html
и библиотека эмуляции AY/YM там тоже есть
хм, граждане, у которых уши не из зада^H^H^H^H подмышки растут -- как считаете,
которая эмуляция больше на железку похожа? :rolleyes:
Файл: vtxplay_n_xmms.zip http://zx.pk.ru/attachment.php?attachmentid=2526
от: Slavik Tretiak
кому: All
дата: 02 Feb 2006
Hello, boo_boo
а оно только vtx-ы играет?
от: Slavik Tretiak
кому: All
дата: 02 Feb 2006
Hello, boo_boo
ну тогда я подожду, ибо в vtx у меня ровно 1 музон ^_~
от: Станислав Ломакин
кому: All
дата: 02 Feb 2006
Hello, Sinus
Sin> а оно только vtx-ы играет?
ну да. вот сделает SMT анонсированный класс Song со всякими разными форматами,
будет остальное ;)
от: Станислав Ломакин
кому: All
дата: 16 Feb 2006
Hello, SMT
SMT> большая часть из-за неподдержки nameless structs/unions в описании
SMT> Z80
ну да, по крайней мере это вроде единственное, что требует вмешательства в
код, а не только в декларации.
от: Станислав Ломакин
кому: All
дата: 16 Feb 2006
Hello, SMT
SMT> насчёт Z80 не знаю, как соберётся под линуксом. попробуйте свой, если
SMT> не получится unreal'овский
с ходу не собирается, ессно -- ругается на кучу всего, не только в z80. как со
временем разгребусь, гляну толком. ...а в MSVC что, нет режима совместимости с
ANSI/ISO C++? ;)
от: Станислав Ломакин
кому: All
дата: 16 Feb 2006
Hello, SMT
SMT> ту мне лог компиляции скинь, посмотрю...
вот лог :)
Файл: err.zip http://zx.pk.ru/attachment.php?attachmentid=2606
от: SMT
кому: All
дата: 09 Mar 2006
Hello, SMT
пофиксен глюк с рассинхронизацией AY и других звуковых источников (bepeer,
tape, etc), добавлен класс SNDCOUNTER для определения, сколько семплов
полностью готово (при генерации от нескольких источников) и откуда из
внутреннего буфера надо брать эти семплы. пример использования - в файле
sndcounter.h
Файл: sndrender.rar http://zx.pk.ru/attachment.php?attachmentid=2793
от: Станислав Ломакин
кому: All
дата: 09 Mar 2006
Hello, SMT
ура, все работает :)
кстати, предложение -- а почему бы не сделать режим EXTERNAL_BUFFER штатным? то
есть передавать в start_frame указатель на буфер и его длину. ИМХО при таком
раскладе больше ничего и не надо -- он полностью заменяет нынешний умолчальный
режим. а то сейчас чтобы EXTERNAL_BUFFER врубить, приходится лезть в сорцы (тк
дефинить его, а потом инклюдить *.h и *.cpp в файл -- неудобно, особенно если
такой файл не один ,)
от: SMT
кому: All
дата: 09 Mar 2006
Hello, SMT
> кстати, предложение -- а почему бы не сделать режим EXTERNAL_BUFFER
> штатным?
потому что 1) могут передавать размер - не степень двойки и 2) потеряется
несколько десятков тактов внутри цикла заполнения буфера из-за переменных
вместо констант (действия с константами MSVC оптимизирует на отлично)
> сейчас чтобы EXTERNAL_BUFFER врубить, приходится лезть в сорцы
понятно, я специально вынес это в отдельный файл sndbuffer.h - достаточно
исправить там 1-2 строки - указать, в какой переменной лежит буфер
з.ы. теперь можно немного упростить обработку звука - start_frame вызывать без
параметра, результат end_frame игнорировать (см. пример), объект SNDCOUNTER сам
всё считает
от: Станислав Ломакин
кому: All
дата: 09 Mar 2006
Hello, SMT
SMT> потому что 1) могут передавать размер - не степень двойки
не степень 2ки и дефайном можно указать :rolleyes:
SMT> понятно, я специально вынес это в отдельный файл sndbuffer.h -
SMT> достаточно исправить там 1-2 строки - указать, в какой переменной
SMT> лежит буфер
тогда еще надо #include "sndcounter.h" в sndcounter.cpp вынести на самый верх,
а в sndcounter.h добавить #include "sndbuffer.h" перед ifdef'ом
хмм... если важно быстродействие, можно сделать темплейтами с
параметрами-константами: медленней не станет, при использовании код править
вообще не придется, и если понадобиться с несколькими буферами работать (может
пригодиться в плеерах и тп) ничего не помешает.
ЗЫ извини за занудство, просто я маньяк по части интерфейсов, когда вижу
отличный код, безумно хочется, чтобы и интерфейс был весь из себя :rolleyes:
от: SMT
кому: All
дата: 09 Mar 2006
Hello, SMT
> не степень 2ки и дефайном можно указать
а хуже того, могут с каждым разом передавать разные буферы и размеры, когда всё
должно быть одинаково, чтобы SNDCOUNTER правильно работал
от: SMT
кому: All
дата: 09 Mar 2006
Hello, SMT
> не степень 2ки и дефайном можно указать
это я уже добавил в sndrender.h:
┌─- CODE ───
#ifdef SND_EXTERNAL_BUFFER
#if ((SND_EXTERNAL_BUFFER_SIZE & (SND_EXTERNAL_BUFFER_SIZE-1)) != 0)
#pragma error("SND_EXTERNAL_BUFFER_SIZE must be power of 2")
#endif
#endif
└── CODE ───
> тогда еще надо #include "sndcounter.h" в sndcounter.cpp вынести на
> самый верх
согласен
> а в sndcounter.h добавить #include "sndbuffer.h" перед ifdef'ом
включается через #include "sndrender.h", который надо вынести наверх
> хмм... если важно быстродействие, можно сделать темплейтами с
> параметрами-константами: медленней не станет, при использовании код
> править вообще не придется, и если понадобиться с несколькими
> буферами работать (может пригодиться в плеерах и тп) ничего не
> помешает
можно, но это надо думать - надо ещё заводить класс-буфер и юзать его как
параметр шаблона, что-ли, чтобы все SNDRENDER'ы c одним буфером были одним
классом
от: Станислав Ломакин
кому: All
дата: 09 Mar 2006
Hello, SMT
SMT> а хуже того, могут с каждым разом передавать разные буферы и размеры,
SMT> когда всё должно быть одинаково, чтобы SNDCOUNTER правильно работал
если указатель на буфер и его размер передавать параметрами темплейта, не
смогут... и, кстати, в этом случае ведь как раз и получится один класс на все
SNDRENDER'ы, использующие один буфер.
|