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

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

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

Студворк — интернет-сервис помощи студентам
Приветствую всех.
Подскажите плз, какие знания нужно иметь для bass работы с 2д и 3д звуком? В плане математики. С математикой туго, но желание есть. Что нужно почитать чтобы программировать хотя бы 2д звук. 3д можно отложить.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
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
jonikster, Нету никакого 2д/3д звука. Есть стереофонический и монофонический. Всё!
Именно за счет стерео эффекта и получается объемный звук. Для игр bass.dll не подходит, нужно использовать direct sound / openal и городить свой микшер - который будет из набора моно-записей генерировать звуковой стереофонический поток. Для того чтобы написать этот микшер - нужно как минимум хорошо знать язык, уметь писать быстрые алгоритмы, как минимум поверхностно знать высшую математику, хотя бы немного представлять что такое фильтры.
более того, на сколько мне известно - bass.dll имеет заголовочник только для delphi а это значит - нужно писать свой хидер для с++ , это предполагает как минимум знание delphi
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
05.09.2016, 11:02
Цитата Сообщение от Крюгер Посмотреть сообщение
более того, на сколько мне известно - bass.dll имеет заголовочник только для delphi а это значит - нужно писать свой хидер для с++ , это предполагает как минимум знание delphi
BASS имеет Си API.
0
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,107
05.09.2016, 14:01  [ТС]
И не только.
Bass можно использовать в:
C/C++;
C#;
Delphi;
Python;
И вроде даже в PureBasic.
0
10 / 10 / 0
Регистрация: 13.06.2016
Сообщений: 62
05.09.2016, 22:12
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
Цитата Сообщение от castaway Посмотреть сообщение
BASS имеет Си API.
на тот момент когда я её пользовал, то заголовочник был только на delphi, а это значит что хидер для с++ надо писать ручками.
jonikster, технически - возможно, быть может в сети уже есть заголовочные файлы для этих языков, но на тот момент когда я пользовался этой библиотекой, из коробки заголовочный файл был только для delphi, для с++ переписывалось руками по хидеру от делфей.
Nojabr, новичку хочется со звуком работать а не в формате файлов копаться. этот ваш директ икс поддерживает из коробки только wav, а остальное переваривает только в готовом виде. Он пишет с математикой туго, а для директа надо писать свои эффекты. а в басс есть готовый эквалайзер, фленжер, компрессор и тд. для изучения басс проще
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
07.09.2016, 17:52
Цитата Сообщение от Крюгер Посмотреть сообщение
а это значит что хидер для с++ надо писать ручками.
Не значит.
Я не просто так полез проверять API BASS, я помню что ещё лет ~ 5 назад там этот API был. Так что не надо ничего писать, для того чтобы использовать BASS в C++. Си API совместим с C++.
0
10 / 10 / 0
Регистрация: 13.06.2016
Сообщений: 62
08.09.2016, 14:10
Цитата Сообщение от Крюгер Посмотреть сообщение
со звуком работать
точней работать с библиотекой, которая работает со звуком. неважно. вообще есть еще 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
castaway, вы не понимаете, я говорю не о совместимости библиотеки, а о том что новичку нужно проделать лишнюю работу. посудите сами, что проще? подключить готовый хидер и пользоваться, или вызывать каждую функцию по имени, + если напортачить с типами данных , можно получить странные вещи, от которых ТС будет не по себе.
Nojabr, когда я выбирал между dx и bass , я выбрал bass потому что работа со звуком там существенно проще.
и вот почему:
- работает со множеством форматов
- удобна в использовании, дергаешь нужные функции аля-winapi , без всяких COM объектов и тд.
- есть огромное количество доков и что немаловажно для новичка, на русском.
Да у bass есть свои недостатки, и сейчас я бы выбрал просто DXSound/OpenAL
мне не трудно написать загрузчики для файлов и всякое такое. я помню когда только входил в кодинг, для меня было главное - видеть результат, и я пользовал разные либы где только можно и нельзя. загрузчики картинок для разных форматов, парсеры xml , загрузчики звуковых файлов и тд. получалось абы как но работало. и по началу не обращаешь внимание на то, что где то можно сэкономить пару тактов процессорного времени, не задумываешься как это внутри работает.это потом ты осознаешь что ты убогий кодер и до профи тебе расти и расти. но когда написал к примеру свой первый загрузчик dds , ты понимаешь что не все так плохо, главное развиваться дальше. А по началу, когда еще только входишь в разработку - лучше иметь побольше "ленивых функций" и увидеть, получается ли кодить вообще, или нет.

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

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

ЗЫ не подумайте, что я навязываю кому то свое мнение или рекламирую басс, как говорится каждому свое и выбор за тс
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
08.09.2016, 21:15
Цитата Сообщение от Крюгер Посмотреть сообщение
castaway, вы не понимаете, я говорю не о совместимости библиотеки, а о том что новичку нужно проделать лишнюю работу. посудите сами, что проще? подключить готовый хидер и пользоваться, или вызывать каждую функцию по имени, + если напортачить с типами данных , можно получить странные вещи, от которых ТС будет не по себе.
Цитата Сообщение от Крюгер Посмотреть сообщение
bass.dll имеет заголовочник только для delphi а это значит - нужно писать свой хидер для с++ , это предполагает как минимум знание delphi
Всё я понимаю. Вы себя просто оправдываете. Так многие делают на этом форуме.
0
10 / 10 / 0
Регистрация: 13.06.2016
Сообщений: 62
10.09.2016, 23:45
Цитата Сообщение от Крюгер Посмотреть сообщение
вряд ли он осилит этот вариант
это все непонятки. я предложил ТС'у свою библиотеку в виде включения, которая по простоте не уступает BASS и её можно переделать под свои интересы, она просто упрощает работу с DirectSound до ленивого кода. Если грубо, то инициализируется DS одной строкой, буферы загружаются по номерам. буфер может быть как обычным (моно и-или стерео), либо трехмерным (только моно). для трехмерного можно установить позицию источника. да, пока что бедно с эффектами и форматами файлов, но я планирую добавить поддержку .ogg
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
11.09.2016, 11:50
Цитата Сообщение от Nojabr Посмотреть сообщение
но я планирую добавить поддержку .ogg
Куда? В DirectSound?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.09.2016, 11:50
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Old Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru