Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,108
1

Что нужно знать для программирования в Bass

09.06.2016, 05:25. Показов 2223. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приветствую всех.
Подскажите плз, какие знания нужно иметь для bass работы с 2д и 3д звуком? В плане математики. С математикой туго, но желание есть. Что нужно почитать чтобы программировать хотя бы 2д звук. 3д можно отложить.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2016, 05:25
Ответы с готовыми решениями:

Что нужно знать для программирования bios-загружающихся программ?
То есть программ, загружаемых не из ОС. Например, как Acronis, BartPE или подобных (ну, или Grub) ...

Что нужно знать для программирования под Android?
Всем привет! Скажите пожалуйста, что нужно знать помимо Java, чтобы писать приложения под Андроид?

Что нужно знать для программирования под айфончик
Всем привет. В какой среде создаются приложения под iphone? Знаю что в XCode, а под винду какие...

Что полезно знать для программирования, помимо знания самого языка С++?
Недавно начал читать С++руководство для начинающих Герберт Шилдт. Скажите, пожалуйста, что полезно...

11
40 / 60 / 8
Регистрация: 16.11.2012
Сообщений: 460
Записей в блоге: 7
05.09.2016, 01:55 2
jonikster, Нету никакого 2д/3д звука. Есть стереофонический и монофонический. Всё!
Именно за счет стерео эффекта и получается объемный звук. Для игр bass.dll не подходит, нужно использовать direct sound / openal и городить свой микшер - который будет из набора моно-записей генерировать звуковой стереофонический поток. Для того чтобы написать этот микшер - нужно как минимум хорошо знать язык, уметь писать быстрые алгоритмы, как минимум поверхностно знать высшую математику, хотя бы немного представлять что такое фильтры.
более того, на сколько мне известно - bass.dll имеет заголовочник только для delphi а это значит - нужно писать свой хидер для с++ , это предполагает как минимум знание delphi
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
05.09.2016, 11:02 3
Цитата Сообщение от Крюгер Посмотреть сообщение
более того, на сколько мне известно - bass.dll имеет заголовочник только для delphi а это значит - нужно писать свой хидер для с++ , это предполагает как минимум знание delphi
BASS имеет Си API.
0
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,108
05.09.2016, 14:01  [ТС] 4
И не только.
Bass можно использовать в:
C/C++;
C#;
Delphi;
Python;
И вроде даже в PureBasic.
0
10 / 10 / 0
Регистрация: 13.06.2016
Сообщений: 62
05.09.2016, 22:12 5
jonikster, псс... если еще нужно,не хочешь мою сишную библиотечку с DirectSound? И 2D и 3D звук на блюдечке

C++
1
2
3
4
5
6
7
8
    InitDirectSound (g_hWnd);
    LoadSound("data/sounds/sound1.wav",0);
    Load3DSound("data/sounds/sound2.wav",1);
    Set3DSoundPosition(0.0f, 0.0f,0.0f,1);
 
        ListenerPosition(0, 0.1f, 5.0f);
    PlaySound(false,0);
    PlaySound(true,1);
в принципе все то же самое, что и в BASS. но для создания эффектов нужно разбираться в структуре форматов файлов, хотя бы WAV. 3D звук - изи, установить 3д возможности буфера одним флагом, настроить позицию слушателя и источника звука.
0
40 / 60 / 8
Регистрация: 16.11.2012
Сообщений: 460
Записей в блоге: 7
07.09.2016, 17:38 6
Цитата Сообщение от castaway Посмотреть сообщение
BASS имеет Си API.
на тот момент когда я её пользовал, то заголовочник был только на delphi, а это значит что хидер для с++ надо писать ручками.
jonikster, технически - возможно, быть может в сети уже есть заголовочные файлы для этих языков, но на тот момент когда я пользовался этой библиотекой, из коробки заголовочный файл был только для delphi, для с++ переписывалось руками по хидеру от делфей.
Nojabr, новичку хочется со звуком работать а не в формате файлов копаться. этот ваш директ икс поддерживает из коробки только wav, а остальное переваривает только в готовом виде. Он пишет с математикой туго, а для директа надо писать свои эффекты. а в басс есть готовый эквалайзер, фленжер, компрессор и тд. для изучения басс проще
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
07.09.2016, 17:52 7
Цитата Сообщение от Крюгер Посмотреть сообщение
а это значит что хидер для с++ надо писать ручками.
Не значит.
Я не просто так полез проверять API BASS, я помню что ещё лет ~ 5 назад там этот API был. Так что не надо ничего писать, для того чтобы использовать BASS в C++. Си API совместим с C++.
0
10 / 10 / 0
Регистрация: 13.06.2016
Сообщений: 62
08.09.2016, 14:10 8
Цитата Сообщение от Крюгер Посмотреть сообщение
со звуком работать
точней работать с библиотекой, которая работает со звуком. неважно. вообще есть еще squall, в котором хидеры и исходники по C++ есть. выбор за ТС, либо платная раздутая и забагованная BASS, либо ржавый бесплатный squall, или же самопальный вариант без всяких диллок. и я бы не сказал, что BASS такая уж простая библиотека, она очень похожа на чистый DX, только нужно писать меньше кода.

в DX к примеру для инициализации нужно писать примерно следующее:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
    result = DirectSoundCreate8(NULL, &DirectSoundDevice, NULL);
 
     if (FAILED(result)){
    MessageBox( NULL, "Устройство аудиовоспроизведения отсутствует или повреждено.", "DirectSound:", MB_OK );
    PostQuitMessage( 0 );
     }
 
    DirectSoundDevice->SetCooperativeLevel(hwnd_link, DSSCL_PRIORITY);
 
    //Дескриптор первичного буфера
    bufferDesc.dwSize = sizeof(DSBUFFERDESC);
    bufferDesc.dwFlags = DSBCAPS_PRIMARYBUFFER | DSBCAPS_CTRLVOLUME | DSBCAPS_CTRL3D;
    bufferDesc.dwBufferBytes = 0;
    bufferDesc.dwReserved = 0;
    bufferDesc.lpwfxFormat = NULL;
    bufferDesc.guid3DAlgorithm = GUID_NULL;
 
    DirectSoundDevice->CreateSoundBuffer(&bufferDesc, &PrimaryBuffer, NULL);
 
    //Формат первичного буфера
    waveFormat.wFormatTag = WAVE_FORMAT_PCM;
    waveFormat.nSamplesPerSec = 44100;
    waveFormat.wBitsPerSample = 16;
    waveFormat.nChannels = 2;
    waveFormat.nBlockAlign = (waveFormat.wBitsPerSample / 8) * waveFormat.nChannels;
    waveFormat.nAvgBytesPerSec = waveFormat.nSamplesPerSec * waveFormat.nBlockAlign;
    waveFormat.cbSize = 0;
 
   PrimaryBuffer->SetFormat(&waveFormat);
   //Установка слушателя
   PrimaryBuffer->QueryInterface(IID_IDirectSound3DListener8, (LPVOID*)&Llistener);
   Llistener->SetPosition(0.0f, 0.0f, 0.0f, DS3D_IMMEDIATE);
у меня это вызывается так:
C++
1
InitDirectSound (g_hWnd);
в BASS примерно так:
C++
1
BASS_Init(-1, 44100, 0, g_hWnd, NULL) ;
остальное типа установки панорамы и позиции слушателя (в BASS)это тупо переименованные DX-функции
в DX буфер можно проиграть так:

C++
1
SoundBuffer[buffer_num]->Play(0, 0, sound_loop_)
BASS:
C++
1
BASS_ChannelPlay(Handle,0) ;
дело ТС, но BASS ввиду назойливой распространенности стала безальтернативной для новичков, хотя в реале это довольно посредственная надстройка над DX с целью содрать бабла. да и не видел эти DLL в 64-битном варианте.


Цитата Сообщение от Крюгер Посмотреть сообщение
для директа надо писать свои эффекты
это ложь, там есть встроенные. пытался прикрутить их к своей библиотеке, но ни времени ни толковой инфы не нашлось. но настройки самих эффектов там на изи:
C++
1
2
3
4
reverb_param.fInGain=0.5f; 
reverb_param.fReverbMix=1.5;
reverb_param.fReverbTime=0.5;
reverb_param.fHighFreqRTRatio=4.5;
Цитата Сообщение от Крюгер Посмотреть сообщение
для изучения басс проще
да то же, что и чистый DX, только документации больше и "ленивых" функций.
0
40 / 60 / 8
Регистрация: 16.11.2012
Сообщений: 460
Записей в блоге: 7
08.09.2016, 20:55 9
castaway, вы не понимаете, я говорю не о совместимости библиотеки, а о том что новичку нужно проделать лишнюю работу. посудите сами, что проще? подключить готовый хидер и пользоваться, или вызывать каждую функцию по имени, + если напортачить с типами данных , можно получить странные вещи, от которых ТС будет не по себе.
Nojabr, когда я выбирал между dx и bass , я выбрал bass потому что работа со звуком там существенно проще.
и вот почему:
- работает со множеством форматов
- удобна в использовании, дергаешь нужные функции аля-winapi , без всяких COM объектов и тд.
- есть огромное количество доков и что немаловажно для новичка, на русском.
Да у bass есть свои недостатки, и сейчас я бы выбрал просто DXSound/OpenAL
мне не трудно написать загрузчики для файлов и всякое такое. я помню когда только входил в кодинг, для меня было главное - видеть результат, и я пользовал разные либы где только можно и нельзя. загрузчики картинок для разных форматов, парсеры xml , загрузчики звуковых файлов и тд. получалось абы как но работало. и по началу не обращаешь внимание на то, что где то можно сэкономить пару тактов процессорного времени, не задумываешься как это внутри работает.это потом ты осознаешь что ты убогий кодер и до профи тебе расти и расти. но когда написал к примеру свой первый загрузчик dds , ты понимаешь что не все так плохо, главное развиваться дальше. А по началу, когда еще только входишь в разработку - лучше иметь побольше "ленивых функций" и увидеть, получается ли кодить вообще, или нет.

Цитата Сообщение от Nojabr Посмотреть сообщение
это ложь
от части может и ложь, НО - на сколько мне известно, более-менее
серьезные разработчики (особенно в игровой индустрии) пишут собственные эффекты, более качественные.

Цитата Сообщение от Nojabr Посмотреть сообщение
дело ТС, но BASS ввиду назойливой распространенности стала безальтернативной для новичков, хотя в реале это довольно посредственная надстройка над DX с целью содрать бабла. да и не видел эти DLL в 64-битном варианте.
здесь я с вами категорически согласен.
Цитата Сообщение от Nojabr Посмотреть сообщение
самопальный вариант без всяких диллок
- больше всего и ратую именно за этот вариант, но так как ТС судя по всему новичок, вряд ли он осилит этот вариант.

ЗЫ не подумайте, что я навязываю кому то свое мнение или рекламирую басс, как говорится каждому свое и выбор за тс
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
08.09.2016, 21:15 10
Цитата Сообщение от Крюгер Посмотреть сообщение
castaway, вы не понимаете, я говорю не о совместимости библиотеки, а о том что новичку нужно проделать лишнюю работу. посудите сами, что проще? подключить готовый хидер и пользоваться, или вызывать каждую функцию по имени, + если напортачить с типами данных , можно получить странные вещи, от которых ТС будет не по себе.
Цитата Сообщение от Крюгер Посмотреть сообщение
bass.dll имеет заголовочник только для delphi а это значит - нужно писать свой хидер для с++ , это предполагает как минимум знание delphi
Всё я понимаю. Вы себя просто оправдываете. Так многие делают на этом форуме.
0
10 / 10 / 0
Регистрация: 13.06.2016
Сообщений: 62
10.09.2016, 23:45 11
Цитата Сообщение от Крюгер Посмотреть сообщение
вряд ли он осилит этот вариант
это все непонятки. я предложил ТС'у свою библиотеку в виде включения, которая по простоте не уступает BASS и её можно переделать под свои интересы, она просто упрощает работу с DirectSound до ленивого кода. Если грубо, то инициализируется DS одной строкой, буферы загружаются по номерам. буфер может быть как обычным (моно и-или стерео), либо трехмерным (только моно). для трехмерного можно установить позицию источника. да, пока что бедно с эффектами и форматами файлов, но я планирую добавить поддержку .ogg
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
11.09.2016, 11:50 12
Цитата Сообщение от Nojabr Посмотреть сообщение
но я планирую добавить поддержку .ogg
Куда? В DirectSound?
0
11.09.2016, 11:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.09.2016, 11:50
Помогаю со студенческими работами здесь

Уважаемые программисты и хакеры. Какие языки программирования нужно знать для создания веб чата?
.... Добавлено через 31 минуту Есть интересная идея особенно она подойдет программистов и...

Дополнения к языку программирования для программиста. Что ещё, кроме языка, собственно, я должен знать?
Всем здрасте!Я начинающий программист и и недавно мне кроме языка программирования стало интересно...

Что нужно знать для DirectSound
Приветствую всех. Подскажите плз, какие знания нужно иметь для DirectSound работы с 2д и 3д...

Что нужно знать для создания мультиплеера
Здравствуйте, хочу написать аналог игры Мафия с возможностью ирать по сети. Схема примерно такая:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru