Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
jonikster
7 / 7 / 0
Регистрация: 26.10.2014
Сообщений: 627
#1

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

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

Приветствую всех.
Подскажите плз, какие знания нужно иметь для bass работы с 2д и 3д звуком? В плане математики. С математикой туго, но желание есть. Что нужно почитать чтобы программировать хотя бы 2д звук. 3д можно отложить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2016, 05:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что нужно знать для программирования в Bass (C++):

Что же нужно знать чтобы поступить на работу программистом? - C++
Здравствуйте уважаемые форумчане....Я изучаю C++ на протяжении 4 лет, писал много программ и игр на OpenGL в основном 2D в 3D зарисовывал...

Какие нужно знать аспекты C++ для работы с Unreal Engine 4? - C++
вопрос.

Какие разделы математики нужно знать, чтобы стать разработчиком игр? - C++
знаю чтобы стать геймдевелопером нужно знать математику.хз и как это знать?как ее применять?можно примеры?

Нужно мнение по поводу изучения программирования - C++
Здравствуйте! Во мне поселилось некоторое сомнение что не очень хорошо) Поэтому решил задать вопрос на форуме, чтобы узнать разные...

Подскажите, что мне нужно знать для создания окошек? - C++ Builder
Что мне нужно знать для создания окошек?

Куда закинуть bass.dll,bass.h,bass.lib - C++ Builder
Ребят, пересмотрел темы на форуме, гуглил, толком ничего не нашел. Собственно такая проблема, вот я скачал архив bass.zip, в нем находится...

11
Крюгер
0 / 60 / 3
Регистрация: 16.11.2012
Сообщений: 418
Записей в блоге: 5
05.09.2016, 01:55 #2
jonikster, Нету никакого 2д/3д звука. Есть стереофонический и монофонический. Всё!
Именно за счет стерео эффекта и получается объемный звук. Для игр bass.dll не подходит, нужно использовать direct sound / openal и городить свой микшер - который будет из набора моно-записей генерировать звуковой стереофонический поток. Для того чтобы написать этот микшер - нужно как минимум хорошо знать язык, уметь писать быстрые алгоритмы, как минимум поверхностно знать высшую математику, хотя бы немного представлять что такое фильтры.
более того, на сколько мне известно - bass.dll имеет заголовочник только для delphi а это значит - нужно писать свой хидер для с++ , это предполагает как минимум знание delphi
0
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
05.09.2016, 11:02 #3
Цитата Сообщение от Крюгер Посмотреть сообщение
более того, на сколько мне известно - bass.dll имеет заголовочник только для delphi а это значит - нужно писать свой хидер для с++ , это предполагает как минимум знание delphi
BASS имеет Си API.
0
jonikster
7 / 7 / 0
Регистрация: 26.10.2014
Сообщений: 627
05.09.2016, 14:01  [ТС] #4
И не только.
Bass можно использовать в:
C/C++;
C#;
Delphi;
Python;
И вроде даже в PureBasic.
0
Nojabr
10 / 10 / 0
Регистрация: 13.06.2016
Сообщений: 62
Завершенные тесты: 2
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
Крюгер
0 / 60 / 3
Регистрация: 16.11.2012
Сообщений: 418
Записей в блоге: 5
07.09.2016, 17:38 #6
Цитата Сообщение от castaway Посмотреть сообщение
BASS имеет Си API.
на тот момент когда я её пользовал, то заголовочник был только на delphi, а это значит что хидер для с++ надо писать ручками.
jonikster, технически - возможно, быть может в сети уже есть заголовочные файлы для этих языков, но на тот момент когда я пользовался этой библиотекой, из коробки заголовочный файл был только для delphi, для с++ переписывалось руками по хидеру от делфей.
Nojabr, новичку хочется со звуком работать а не в формате файлов копаться. этот ваш директ икс поддерживает из коробки только wav, а остальное переваривает только в готовом виде. Он пишет с математикой туго, а для директа надо писать свои эффекты. а в басс есть готовый эквалайзер, фленжер, компрессор и тд. для изучения басс проще
0
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
07.09.2016, 17:52 #7
Цитата Сообщение от Крюгер Посмотреть сообщение
а это значит что хидер для с++ надо писать ручками.
Не значит.
Я не просто так полез проверять API BASS, я помню что ещё лет ~ 5 назад там этот API был. Так что не надо ничего писать, для того чтобы использовать BASS в C++. Си API совместим с C++.
0
Nojabr
10 / 10 / 0
Регистрация: 13.06.2016
Сообщений: 62
Завершенные тесты: 2
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
Крюгер
0 / 60 / 3
Регистрация: 16.11.2012
Сообщений: 418
Записей в блоге: 5
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
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
08.09.2016, 21:15 #10
Цитата Сообщение от Крюгер Посмотреть сообщение
castaway, вы не понимаете, я говорю не о совместимости библиотеки, а о том что новичку нужно проделать лишнюю работу. посудите сами, что проще? подключить готовый хидер и пользоваться, или вызывать каждую функцию по имени, + если напортачить с типами данных , можно получить странные вещи, от которых ТС будет не по себе.
Цитата Сообщение от Крюгер Посмотреть сообщение
bass.dll имеет заголовочник только для delphi а это значит - нужно писать свой хидер для с++ , это предполагает как минимум знание delphi
Всё я понимаю. Вы себя просто оправдываете. Так многие делают на этом форуме.
0
Nojabr
10 / 10 / 0
Регистрация: 13.06.2016
Сообщений: 62
Завершенные тесты: 2
10.09.2016, 23:45 #11
Цитата Сообщение от Крюгер Посмотреть сообщение
вряд ли он осилит этот вариант
это все непонятки. я предложил ТС'у свою библиотеку в виде включения, которая по простоте не уступает BASS и её можно переделать под свои интересы, она просто упрощает работу с DirectSound до ленивого кода. Если грубо, то инициализируется DS одной строкой, буферы загружаются по номерам. буфер может быть как обычным (моно и-или стерео), либо трехмерным (только моно). для трехмерного можно установить позицию источника. да, пока что бедно с эффектами и форматами файлов, но я планирую добавить поддержку .ogg
0
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
11.09.2016, 11:50 #12
Цитата Сообщение от Nojabr Посмотреть сообщение
но я планирую добавить поддержку .ogg
Куда? В DirectSound?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2016, 11:50
Привет! Вот еще темы с ответами:

Знаю,что должен сам знать, но ПОмогите пожалуйста.кто может, поясните хотя бы кратно,какая строчка за что отвечает - C++ Builder
//--------------------------------------------------------------------------- #include <vcl.h> #include <dstring.h> #pragma...

Где взять bass.dll bass.lib for win64 - C++ Builder
Приветствую. Тут много тем было на эти вопросы , но ответа не нашел. Где можно и вообще есть ли bass.dll,bass.lib для Windows 8.1 64...

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

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


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

Или воспользуйтесь поиском по форуму:
12
Yandex
Объявления
11.09.2016, 11:50
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru