Вернуться   CoderX :: Forums > Основные форумы > Курилка
Войти через OpenID

Курилка Флудим и шутим тут!

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 27.12.2017, 17:58   #1
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,224
Сказал Спасибо: 4
Имеет 229 спасибок в 182 сообщенях
SeregaZ пока неопределено
По умолчанию Visual Studio 6.0 и звук

совершенно забыл спрашивал ли я тут на форуме или нет. пересоздам тему - мало ли вдруг кто подскажет

не разбирается ли кто в Visual Studio 6.0? есть исходники одной библиотеки, которая худо бедно эмулирует звуковой чип - FM - для приставки Sega Mega Drive 2. использовал в своем проекте (другой язык программирования) и был щаслив по самые помидоры... НО! в этой библиотеке есть пару маленьких недочетов.

1. для проигрывания аудио сэмплов в ней была предусмотрена PlayDACSample функция. и затык в ней в том, что если в файле сэмпла в течении секунды или двух не помню - идет проигрывание тишины, то тогда проигрывание всего сэмпла не происходит. либо если скажем в сэмпле были две фразы: первая, пауза 2 секунды, вторая - проиграет только первую. на второй отрубится. и вроде бы я нашел где это в коде функции void FillBuffer(WAVE_16BS* Buffer, UINT32 BufferSize) и закомментировал:
Код:
if (NullSamples >= SampleRate)
   {
      //NullSamples = 0xFFFFFFFF;
      //PauseStream(true);   // stop the stream if chip isn't used
   }
после сборки библиотеки и тесте - играет без этой проверки на тишину и нет "съедания" сэмплов. правда как это скажется на производительности... ведь получается что трансляция тишины идет все время работы программы, а не только тогда когда это нужно - то есть существуют данные для проигрывания.

2. главная проблема. использую эту библиотеку для проигрывания треков аудиодрайвера GEMS для игр приставки. этот драйвер с теми или иными модификациями использовался на множестве игр. краткое объяснение: FM каналов на чипе 6 штук. причем один из них - 3 - может работать как обычный, но может и уходить в специальный режим проигрывания. некий Ch3Mode - не объясню что делает, да и не важно. кароче звук там звучит по иному. например противный звук соник танка в игре Dune Battle For Arrakis. так-же 6 канал тоже с прибабахом - может быть как стандартный FM синтезированный звук, а может проигрывать аудио сэмпл. то есть или или. ну кароче 6 дорожек. плюс еще 4 (хотя правильней было бы наверное 3) - шумовых канала PSG. где 3 канала тон, а 1 канал шумовой - шипение, или там скажем тыц тыц тыц от тарелки на барабанах. или короткий шум, который можно воспринять как рабочий барабан. ну не суть... проблема заключается в том, что всего получается 10 каналов в сумме, но по факту дорожек в GEMS может быть 16. просто играются они по приоритету. у кого выше приоритет того и тапки. и там нет порядка, что типа 5 каналов у песни: 1, 2, 5 это FM каналы, а 3 и 4 это PSG. кароче динамическое перераспределение каналов. воспроизвести такую динамическую фигню я не смог. точнее для PSG как-то смог родить. куча грязного кода, и я не представляю сейчас по прошествии года что я там наваял. но работает и довольно таки близко к оригиналу. оооочень грязный код для FM все гораздо хуже и родить подобную динамическую фигню я не смогу.

вот тут-то и помогла бы эта библиотека, а именно тот момент, что в ней можно задействовать 2 чипа FM. то есть я смог бы переназначить каналы, идущие в песни четко по их номерам и использовать в двух разных чипах. типа 1,2,3,4,5,6 будут играть соответственно в 1,2,3,4,5,6 канале первого FM. а 7-12 треки в песне в 1-6 канале второго чипа. то есть если скажем в 3 дорожке песни идет на самом деле PSG а не FM - то просто не использовать 3 канал первого чипа. это могло бы поднять мою полифонию до 12 каналов. вместо нынешних 6. то есть сейчас я играю только 6 дорожек из песни. конечно 12 это не все 16 - но 16 трековых песен мне практически не попадалось. так что 12 хватило бы за глаза.

вот это все была преамбула. затык библиотеки в том, что когда там включаешь это самое второе ядро - происходит какая-то неведомая херня и оба ядра начинают играть так, как будто там происходит удвоение частоты работы процессора. звук разительно завышен. в архиве два ехе файла 1 chip.exe и 2 chips.exe. следует собрать дллку в Visual Studio, чтобы она лежала рядом с этими ехешками и запустить эти ехешки. в 1 чиповом при нажатии плей играет солидно, как оно должно звучать. звук выстрела гранатомета из Alien 3. в 2 chips.exe этот звук завышен. там точно те-же параметры, что и в первом - просто включено 2 ядро. всего одна функция разницы и трындец. весь эффект испорчен. если включать 3 ядро - звук еще выше по частоте. и так по нарастающей. как бы исправить это умножение частоты так сказать? нужно чтоб была возможность использовать 2 ядра, и чтоб они работали верно, то есть проигрывали солидно - как полагается.
__________________
хочу картинку в подпись!
SeregaZ вне форума   Ответить с цитированием
Старый 27.12.2017, 23:06   #2
Местный
 
Аватар для ScythLab
 
Регистрация: 24.10.2014
Сообщений: 190
Сказал Спасибо: 4
Имеет 42 спасибок в 40 сообщенях
ScythLab пока неопределено
По умолчанию

Вспоминается анекдот "Дяденька! Я знаю, что у вас сломалось."
__________________
Хобби: разработка бота для Lineage.
ScythLab вне форума   Ответить с цитированием
Старый 28.12.2017, 02:28   #3
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,224
Сказал Спасибо: 4
Имеет 229 спасибок в 182 сообщенях
SeregaZ пока неопределено
По умолчанию

подумаешь я ссылку "скачать" забыл приложить надо было телепатическими способностями прочитать код.
http://www.emu-land.net/forum/index....;attach=185238
__________________
хочу картинку в подпись!
SeregaZ вне форума   Ответить с цитированием
Старый 28.12.2017, 03:15   #4
Местный
 
Аватар для ScythLab
 
Регистрация: 24.10.2014
Сообщений: 190
Сказал Спасибо: 4
Имеет 42 спасибок в 40 сообщенях
ScythLab пока неопределено
По умолчанию

Я не про это.
Буковок много и достаточно сложно описано, может не понял детали, но фраза "не разбирается ли кто в Visual Studio 6.0?" и остальное сообщение не очень связано. Здесь нужно разобраться в звуковой библиотеке и изменить алгоритм "сложения" звуковых потоков, это не совсем к с++ относится. Я на отлично знаю Делфи, хорошо знаю с++, но написать библиотеку по сжатию звука в mp3 формат (это просто к примеру) на каком-либо языке не смогу, потому как здесь больше требуется знание математики (ее я тоже нормально знаю, но не на таком уровне).
__________________
Хобби: разработка бота для Lineage.
ScythLab вне форума   Ответить с цитированием
Старый 28.12.2017, 14:51   #5
Местный
 
Аватар для SeregaZ
 
Регистрация: 16.08.2009
Сообщений: 1,224
Сказал Спасибо: 4
Имеет 229 спасибок в 182 сообщенях
SeregaZ пока неопределено
По умолчанию

и тут меня начинают грызть сомнения... а что если взять и изначально влепить частоту чипа в 2 раза меньше и включить 2 ядро. тогда по идее 2 ядерная конфигурация будет иметь правильные частоты и звук будет проигрываться верно. правда это всегда должны будут быть включены 2 ядра. пойду смотреть где такая частота выставляется...

вторая идея, что приходит в голову - создать копию проекта, добавить ко всем функциям циферку 2, создать вторую библиотеку, и загружать две библиотеки в проект. (сейчас копирование и переименование и импорт 2 библиотеки под другими названиями функций не работает видимо функции внутри библиотек, имея одинаковые названия, портят работу друг друга. поэтому надо их внутри тоже переименовать)

Добавлено через 1 час 11 минут
эх... идея с частотой была замечательная но теперь происходит вылет программы. а с переименованием всееех функций и констант я погорячился. что-то их там просто дофига ))
__________________
хочу картинку в подпись!

Последний раз редактировалось SeregaZ, 28.12.2017 в 14:51. Причина: Добавлено сообщение
SeregaZ вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Курилка



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 21:54.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!