|
|||||||
| In Russian Discussion in the Russian Language |
![]() |
|
|
Thread Tools |
|
|
#1 |
|
HardwareHeaven Junior Member
Join Date: Aug 2005
Posts: 24
Rep Power: 0 ![]() |
Linux
как я понимаю, для линуха такой радости не будет. зато в алсе есть редактор дсп для креативных плат. вопрос такой: можно ли как-то перекомпилить по крайней мере эффекты под алсу? всё равно код-то должен быть один (ибо для проца звуковухи).
зы: что можно - это понятно, только как?
|
|
|
|
|
|
#2 |
|
h/h member-shmember
Join Date: Dec 2002
Location: Evil Empire
Posts: 2,640
Rep Power: 69 ![]() ![]() ![]() ![]() ![]() ![]() |
ну чтобы совсем автоматом никак - надо либо в ручную сидеть и каждый переписывать (ну там кода-то в среднем 20-30 строчек на эффект)
- ну или проще всего написать конвертилку из одного формата в другой - но это само-собой надо понимать что-там к чему. (бинарный-то код само-собой одинаковый - только он формируется и там и там на лету уже в в момент загрузки кода в DSP - а промежуточный код ("то во что компилится") разный - вот для этого промежуточного кода и можно написать конвертилку - на сегодня это будет самый простой вариант) Ну и плюс ко всему - еще трудность - код для проца оно главное но не единственное - для большинства эффектов нужна еще и обвязка для расчета всяческих там коэффициентов/шмициффиентов и прочего (то что в kX делается через плагин дллку для микшера) - а вот в алсе ничего такого похожего нету (ну вернее эта часть там совсем в зародыше) - это тоже писать надо...
__________________
|
|
|
|
|
|
|
|
|
HardwareHeaven Junior Member
Join Date: Aug 2005
Posts: 24
Rep Power: 0 ![]() |
Quote:
|
|
|
|
|
|
|
#4 |
|
h/h member-shmember
Join Date: Dec 2002
Location: Evil Empire
Posts: 2,640
Rep Power: 69 ![]() ![]() ![]() ![]() ![]() ![]() |
>а если просто сделать дамп в винде, а в линухе его загрузить?
понимаешь какая штука... (так на вскидку даже и не соображу как объяснить-то) код зависит от того в какое место он загружен (и зависит от того что уже было загружено в DSP до этого момента) то есть можно сделать дамп _всего_ что загружено в DSP и загрузить - так как бы заработает (но толку особого не будет ибо код этот завязан будет на каиксовское-же назначения входов выходов в алсе они другие - чтобы заработал такой дамп алсовский драйвер должен в точности делать тоже что и kx (ситуация в общем-то таже что и с обычным x86 кодом - бинарно тоже самое - а "окружение" разное - бинарный дамп "hello world!" для виндов не заработает в другой ос)) Или лучше другими словами даже - деление на эффекты оно чисто логическое - для самого DSP все загруженные в данный момент эффекты/программы/модули просто один большой кусок кода, который драйвер формирует на лету (по мере того как загружаешь или выгружаешь те или иные эффекты и делаешь всякие соединения) - и там все зависят ото всех - нельзя взять дамп кусочка от каикс и загрузить его в окружающий код от алсы - потому что просто получится неправильный "большой кусок кода" который непойми чего делает... Или еще по другому: Грубо говоря если ты загружаешь два одинаковых эквалайзера - то в самом поцессоре это уже будут два разных кода (использущие разные регистры и прочее) - бинарно не одинаковые... поэтому просто так копировать дампы туда-сюда не получится (даже из kx в kx)
__________________
Last edited by Max M.; Jun 27, 2008 at 12:29 PM. |
|
|
|
|
|
|
|
|
HardwareHeaven Junior Member
Join Date: Aug 2005
Posts: 24
Rep Power: 0 ![]() |
Quote:
верхнем уровне). Тогда возникает вопрос, какие функции из Кха используют плагины. Я думал, что пишется чисто код для процессора + какой-то интерфейс для настроек.
|
|
|
|
|
|
|
#6 |
|
h/h member-shmember
Join Date: Dec 2002
Location: Evil Empire
Posts: 2,640
Rep Power: 69 ![]() ![]() ![]() ![]() ![]() ![]() |
Ну а что com? вспомни как оно под обоими OS выполняется (фактически под вирутальной машиной, чисто в качестве одолжения от OS - типа кто не спрятался я не виноват (на досуге попробуй запустить com под MacOS например
)) (ну не беря в расчет те комы что под голым bios - много-ли там сделаешь?) Ну и в любом случае, аналогии аналогиями, но все-же до определенного предела.>Я думал, что пишется чисто код для процессора + какой-то интерфейс для настроек. ну так и есть. я когда писал "чтобы заработал такой дамп алсовский драйвер должен в точности делать тоже что и kx" - не имел ввиду настройки (эта отдельная история) - а чисто вот причины по которым даже бинарный дамп DSP целиком (продолжая аналогии "дамп целиком" как-раз типа com и получается) толком не заработает (не беря в расчет настройки вообще - допустим настроил что надо и больше трогать ничего не нужно). Код в DSP он же не "вещь в себе" - он же не в вакууме работает. Во первых - разные входы/выходы из в DSP - физические совпадают само-собой (они не программируются) - то бишь к примеру выход на Line-Out это тот же самый регистр и там и там - ту все ОК, а вот скажем каналы запись/воспроизведение уже зависят от драйвера - и они разные и там и там. Ну к счастью Wave 0/1 на самом деле совпадут - так что если много не хотеть - а только скажем просто послушать стерео запиcь - тут более менее ОК. Поехали дальше - "разные уровни" - скажем тот же сигнал при воспр того стерео файла что сверху приходит в дсп под каиксом с уровнем 0.25 (именно этот уровень считается (в каиксе) за 0dB, не суть важно почему). Так вот - я сейчас на вскидку не помню - но допустим в Алсе стандартным уровнем в DSP считается 1.0 - вот и приехали - играть будет но жутко зашкаливать (это легко исправляется - там сям подпатчить - просто это лишь один из примеров - см. ниже) Дальше, после того как ты загрузил дамп - надо следить чтобы никто (драйвер, утилиты) не лез в DSP там чего-нибудь менять - они ж без понятия что там загружено. Ну драйвер (альсовский имеется ввиду) - насколько я помню после загрузки изначального кода в дсп больше не лезет - а вот микшеры уже всё кирдык (в лучшем случает не дадут никакого эффекта, в худшем попортят ключевые значения в дампе - получишь треск/тишину/что-нибудь-этакое) (ну то что с этой историей с дампом ты даже громкость не сможешь поменять - я даже не упоминаю - это само-собой). Это все мелкие проблемы - потихонечку полегонечку решаются - тут подпатчтить, там подпатчить, можно для дампа на бумажке выписать ключевые регистры - скажем хотя бы тот что регулирует мастер уровень и накидать маленькую утилитку чтобы это крутить (не беда что для разных дампов это все в разных местах может сидеть - то бишь новый дамп -> новая утилитка ) - и так далее и так далее (а я упомянул только те затыки что сразу в голову приходят а сколько еще таких мелочей будет.. о) ну не суть ->Я то к чему веду - я ж не о том что вариант с дампами в принципе невозможен - вполне себе возможен - но я клоню к тому что даже такой максимально ограниченый подход c "дампом всего" тоже требует кучи мелких левых действий - и в какой-то момент сложность этого (изначально тупикового) метода становится выше сложности "нормального" метода (с разделением на подпрограммы в промежуточном формате) - при это разбираться-то с потрохами так или иначе надо - ну загарузил ты дамп и опс - ничего не произошло - где будешь затык искать? При том что с дампами ты сидишь на самом низком уровне с черным ящиком на руках. Вот и вся история. То бишь я все-равно думаю что (с какой нуля не начинай) - как писал выше "для этого промежуточного кода и можно написать конвертилку - на сегодня это будет самый простой вариант" (возвращаясь к аналогиям "промежуточный код" - это аля PE/ELF - только намного проще - каиксовский это вообще C++ текст с массивами - см. da_***.cpp файлы в SDK) И грузить все это дело стандартными средствами драйвера. А для тех же "настроек" вполне для начала (чтобы попроще) подойдет промежуточный метод как-раз с дампами (хотя опять с оговорками что это не для любого плагина) - типа kx тебе скидывает текущие значения регистров для текущих настроек для каждого отдельного плагина уже в нормальном "логическом" формате (то есть один-к-одному прописывающемуся в какиксовский же "промежуточный код") - и после конвертации получаешь уже готовый эффект в нормальном формате где эти самый настройки уже вшиты (и дальше открыт путь к углублению/усилению/расширению возможностей) (кстати в точности по такому ("код в нормальном формате, настройки дампом") методу работают "CLEAX*Reverb" эффекты в kX (в посл версиях) - это изначально не более чем бинарный дамп ревера из креативовского драйра - но код уже сконверченный в каиксовский промформат и с "пресетами" сделанными как просто массивы значений регистров для таких-то и таких-то настроек) А бинарный дамп кода это не намного проще и тупик полный на самом деле. (Ну на счет "не проще" - можешь попробовать - для начала надо писать бинарную дампилку для kx и бинарную грузилку для для alsa - просто примерно понять на каком уровне придется вникнуть - функции для этого всего есть и там и там - только не жди что это будет функция аля give_me_nice_binary_dump_of_everything_in_dsp() )Как-то так вот примерно...
__________________
Last edited by Max M.; Jun 28, 2008 at 10:54 AM. |
|
|
|
|
|
|
|||||
|
HardwareHeaven Junior Member
Join Date: Aug 2005
Posts: 24
Rep Power: 0 ![]() |
Quote:
Quote:
Quote:
).Quote:
) раза подпатчить... Проще будет переписать плагин...Quote:
|
|||||
|
|
|
|
|
#8 |
|
h/h member-shmember
Join Date: Dec 2002
Location: Evil Empire
Posts: 2,640
Rep Power: 69 ![]() ![]() ![]() ![]() ![]() ![]() |
я тут решил себе присвоить удовольствие от написания конвертилки
![]() бинарик и исходнички тут: k2a Download потом, как будет время - напишу что к чему, ну и коментарии какие...
__________________
|
|
|
|
|
|
|
|
HardwareHeaven Junior Member
Join Date: Aug 2005
Posts: 24
Rep Power: 0 ![]() |
|
|
|
|
|
|
|
|
HardwareHeaven Junior Member
Join Date: Aug 2005
Posts: 24
Rep Power: 0 ![]() |
|
|
|
|
![]() |
| Thread Tools | |
|
|