Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/313: Рейтинг темы: голосов - 313, средняя оценка - 4.82
 Аватар для VorteX
172 / 96 / 12
Регистрация: 29.05.2009
Сообщений: 341

bass.dll

28.10.2009, 15:10. Показов 65063. Ответов 129
Метки нет (Все метки)

Всем привет. Так как гугл не помог мне, обращаюсь к этому форуму=) можете плз привести пример использование bass.dll . Если точнее- то показать как ее подключить к проекту, как обращаться к ее функциям(например привести примерчик проигрывания файла).зарание спасибо=)
3
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.10.2009, 15:10
Ответы с готовыми решениями:

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

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

[Linker Error] 'E:\Programming\C++\BASS.DLL\BASS.LIB' contains invalid OMF record, type 0x21 (possibly COFF)
Народ, подскажите пожалуйста, из-за чего ошибку билдер выбивает?? 'E:\Programming\C++\BASS.DLL\BASS.LIB' contains invalid OMF record,...

129
2 / 2 / 0
Регистрация: 22.04.2010
Сообщений: 3
28.04.2010, 03:52
Регулировка громкости
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include <mmsystem.h>
 
HMIXER hmix;
MIXERCAPS mixcaps;
int VolumeID,volmin,volmax;
MIXERCONTROLDETAILS details;
MIXERCONTROL mixctrl;
MIXERCONTROLDETAILS_UNSIGNED valdets;
DWORD curvolume;
bool svEnable;
 
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TSetVol *SetVol;
//---------------------------------------------------------------------------
__fastcall TSetVol::TSetVol(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
// Change Volume (-)
void __fastcall TSetVol::SpeedButton1Click(TObject *Sender)
{
  if(!svEnable) return;
  VolBar->Position = VolBar->Position-(VolBar->Max-VolBar->Min)/10;
  if(VolBar->Position < VolBar->Min) VolBar->Position = VolBar->Min;
  details.cbStruct = sizeof(details);
  details.dwControlID = VolumeID;
  details.cChannels = 1;
  details.cMultipleItems = 0;
  details.cbDetails = sizeof(valdets);
  details.paDetails = &valdets;
  if(VolBar->Position > 4000)
    valdets.dwValue = VolBar->Position;
  else
    valdets.dwValue = 0;
  mixerSetControlDetails((HMIXEROBJ)hmix,&details,MIXER_SETCONTROLDETAILSF_VALUE);
}
//---------------------------------------------------------------------------
// Change Volume (+)
void __fastcall TSetVol::SpeedButton2Click(TObject *Sender)
{
  if(!svEnable) return;
  VolBar->Position = VolBar->Position+(VolBar->Max-VolBar->Min)/10;
  if(VolBar->Position > VolBar->Max) VolBar->Position = VolBar->Max;
  details.cbStruct = sizeof(details);
  details.dwControlID = VolumeID;
  details.cChannels = 1;
  details.cMultipleItems = 0;
  details.cbDetails = sizeof(valdets);
  details.paDetails = &valdets;
  if(VolBar->Position > 4000)
    valdets.dwValue = VolBar->Position;
  else
    valdets.dwValue = 0;
  mixerSetControlDetails((HMIXEROBJ)hmix,&details,MIXER_SETCONTROLDETAILSF_VALUE);
}
//---------------------------------------------------------------------------
void __fastcall TSetVol::FormDestroy(TObject *Sender)
{
  if(!svEnable) return;
  mixerClose(hmix);
}
//---------------------------------------------------------------------------
void __fastcall TSetVol::FormCreate(TObject *Sender)
{
  unsigned int i;
  MIXERLINE mixline;
  MIXERLINECONTROLS mixlinectrl;
  MIXERCONTROL mixctrl;
 
  MMRESULT rc; // Return code.
  rc = mixerOpen(&hmix,0,0,0,0);
  if (MMSYSERR_NOERROR == rc) { ; } else ShowMessage("Error");
 
  ZeroMemory(&mixline,sizeof(mixline));
  mixerGetDevCaps(0,&mixcaps,sizeof(mixcaps));
 
  for(i=0; i < mixcaps.cDestinations-1; i++)
   {
     mixline.dwDestination = i;
     mixline.cbStruct = sizeof(mixline);
     mixerGetLineInfo((HMIXEROBJ)hmix,&mixline,MIXER_GETLINEINFOF_DESTINATION);
     if(mixline.dwComponentType==MIXERLINE_COMPONENTTYPE_DST_SPEAKERS) break;
   }
/*  if(mixline.dwComponentType!=MIXERLINE_COMPONENTTYPE_DST_SPEAKERS)
   {
     ShowMessage("Error. Mixer is disabled !");
     svEnable = false;
     return;
   }*/
//  else
     svEnable = true;
 
  ZeroMemory(&mixlinectrl, sizeof(mixlinectrl));
  mixlinectrl.cbStruct = sizeof(mixlinectrl);
  mixlinectrl.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME;
  mixlinectrl.dwLineID = mixline.dwLineID;
  mixlinectrl.cControls = 2;
 
  ZeroMemory(&mixctrl, sizeof(mixctrl));
  mixlinectrl.cbmxctrl = sizeof(mixctrl);
  mixctrl.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME;
  mixlinectrl.pamxctrl = &mixctrl;
  mixerGetLineControls((HMIXEROBJ)hmix,&mixlinectrl,MIXER_GETLINECONTROLSF_ONEBYTYPE);
 
  VolumeID = mixctrl.dwControlID;
  volmin = mixctrl.Bounds.dwMinimum;
  volmax = mixctrl.Bounds.dwMaximum;
 
  details.cbStruct = sizeof(details);
  details.dwControlID = VolumeID;
  details.cChannels = 1;
  details.cMultipleItems =0;
  details.cbDetails = sizeof(valdets);
  details.paDetails = &valdets;
  mixerGetControlDetails((HMIXEROBJ)hmix,&details,MIXER_GETCONTROLDETAILSF_VALUE);
 
  curvolume = valdets.dwValue;
  VolBar->Min = volmin;
  VolBar->Max = volmax;
  VolBar->Position = curvolume;
}
//---------------------------------------------------------------------------
1
 Аватар для BARS1991
23 / 15 / 0
Регистрация: 16.11.2009
Сообщений: 332
25.10.2010, 17:24
Как сделать эквалайзер на bass.dll ? И получить разделение выходного сигнала на частоты ?
0
294 / 200 / 6
Регистрация: 23.10.2010
Сообщений: 1,173
Записей в блоге: 1
15.08.2011, 20:42
У меня почему то запускается проект и разу закрывается почему так происходит???
0
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
16.08.2011, 11:40
Проигривание сделал так но когда нжимаю на Play (тоест на батн) нечего не происходит, почему ето так?
Вот код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
HSAMPLE samp;
HSTREAM chan;
//---------------------------------------------------------------------------
void __fastcall TForm6::FormCreate(TObject *Sender)
{
  BASS_Init(-1,44100,BASS_DEVICE_3D,0,NULL);
}
//---------------------------------------------------------------------------
void __fastcall TForm6::btn1Click(TObject *Sender)
{
UnicodeString FileNm = "D:\\Take me away from.mp3";
wchar_t *a = FileNm.c_str();
chan = BASS_StreamCreateFile(FALSE,a,0,0,0);
BASS_ChannelPlay(chan,FALSE);
}
1
 Аватар для pomkalk
365 / 247 / 24
Регистрация: 03.04.2011
Сообщений: 558
Записей в блоге: 1
16.08.2011, 12:53
Попробуй инициализировать так сначала
BASS_Init(-1,44100,0,NULL,NULL);, если не поможет
Внеси chan в состав класса(объяви в классе, а не глобально)

Добавлено через 1 минуту
и проверку на chan поставь, открыл он канал или нет!
1
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
16.08.2011, 15:37
pomkalk,
Сделал всё так как ты сказал но с "chan" ом проблемы! Вот так проверил и вилезает Message что "Something wrong witth chan"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void __fastcall TForm6::btn1Click(TObject *Sender)
{
HSAMPLE samp;
HSTREAM chan;
UnicodeString FileNm = "D:\\Take me away from.mp3";
wchar_t *a = FileNm.c_str();
chan = BASS_StreamCreateFile(FALSE,a,0,0,0);
if(chan == TRUE)
 {
  ShowMessage("now time to use BASS_ChannelPlay");
  if(BASS_ChannelPlay(chan,FALSE)==TRUE)
   {
       ShowMessage("Music is started now");
   }
   else
   ShowMessage("Somethin wrong with BASS_ChannelPlay");
 }
 else
 ShowMessage("Something wrong with chan");
}
1
 Аватар для pomkalk
365 / 247 / 24
Регистрация: 03.04.2011
Сообщений: 558
Записей в блоге: 1
16.08.2011, 16:40
*.h файле, в раздел private его нужно
+ попробуй в качестве парамметра не wchar_t а просто char.
Я суда вечером рабочий пример скину
1
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
16.08.2011, 16:53
pomkalk,
Цитата Сообщение от pomkalk Посмотреть сообщение
не wchar_t а просто char.
не понимаю причем char и wchar_t просто у меня XE версиа

Цитата Сообщение от pomkalk Посмотреть сообщение
*.h файле, в раздел private его нужно
Ето еше причем!

О_о

Спасибо жду вашего примера
1
 Аватар для pomkalk
365 / 247 / 24
Регистрация: 03.04.2011
Сообщений: 558
Записей в блоге: 1
16.08.2011, 17:19
попробуй просто char поставить, это от Unicode вряд ли зависит, так как это сторонняя библиотека, и подставляя туда wchar_t он его не явно в char переделывает, так что это нужно в первую очередь попробовать
0
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
16.08.2011, 18:08
pomkalk,
Цитата Сообщение от pomkalk Посмотреть сообщение
попробуй просто char поставить, это от Unicode вряд ли зависит, так как это сторонняя библиотека, и подставляя туда wchar_t он его не явно в char переделывает, так что это нужно в первую очередь попробовать
Пробовал и опять Message: "Something wrong with chan"
1
 Аватар для pomkalk
365 / 247 / 24
Регистрация: 03.04.2011
Сообщений: 558
Записей в блоге: 1
16.08.2011, 19:25
))Только щас обратил внимание
chan будет 0 если не загрузил музыку, если загрузил, вернет дескриптор этого канала, то есть нежно проверять так
C++
1
2
3
4
if (chan)
{
BASS_ChennelPlay(chan,TRUE);
}
Это по поводу chan
еще я сталкивался с такой же проблемой из за инициализации(кстати то же с 3д) так что лучше по стандарту инициализировать -1,44100,0,NULL,NULL , а потом играть с парамметрами

А так то у тебя все правильно
ps не забывай в диструкторе BASS_Free(); - не мало важно
1
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
16.08.2011, 23:01
pomkalk,
Сделал так как ты сказал, всё сделано спс!
1
Прогер
 Аватар для Programmer.
632 / 263 / 15
Регистрация: 17.11.2010
Сообщений: 1,371
Записей в блоге: 2
25.08.2011, 13:55
Блин опять проблемы

Выдает ошибок!

C++
1
2
3
4
[ILINK32 Error] Error: Unresolved external 'BASS_Init' referenced from C:\DOCUMENTS AND SETTINGS\PRGRMMR\MY DOCUMENTS\RAD STUDIO\PROJECTS\DEBUG\WIN32\AWDAWDA.OBJ
[ILINK32 Error] Error: Unresolved external 'BASS_StreamCreateFile' referenced from C:\DOCUMENTS AND SETTINGS\PRGRMMR\MY DOCUMENTS\RAD STUDIO\PROJECTS\DEBUG\WIN32\AWDAWDA.OBJ
[ILINK32 Error] Error: Unresolved external 'BASS_ChannelPlay' referenced from C:\DOCUMENTS AND SETTINGS\PRGRMMR\MY DOCUMENTS\RAD STUDIO\PROJECTS\DEBUG\WIN32\AWDAWDA.OBJ
[ILINK32 Error] Error: Unresolved external 'BASS_Free' referenced from C:\DOCUMENTS AND SETTINGS\PRGRMMR\MY DOCUMENTS\RAD STUDIO\PROJECTS\DEBUG\WIN32\AWDAWDA.OBJ
Что делать?
0
Now I Matrix
137 / 134 / 28
Регистрация: 01.03.2010
Сообщений: 223
25.08.2011, 16:38
А bass.lib подключил? Или только bass.h?
Просто ошибки похожи на то, когда либу не подключаешь...
2
harimambura
07.10.2011, 17:43
 Комментарий модератора 
Не делайте из темы свалку. Правила
п.2.4. На каждый вопрос создавайте по одной теме - это помогает избежать путаницы в ответах и облегчает поиск.
Создайте новую тему со своим вопросом.
 Аватар для DrSMERTb
64 / 40 / 10
Регистрация: 12.11.2010
Сообщений: 841
11.12.2011, 16:14
Цитата Сообщение от Emty Посмотреть сообщение
Project->Add to Project или Шифт+Ф11 Выбираешь в Типе файла ".lib" - что бы быстрее найти и добавляешь в проект файл - bass.lib
После того как подключил файл начал выдавать ошибку
[ILINK32 Error] Fatal: Unable to open file '܀.OBJ'
0
Denniska
11.12.2011, 21:19
Подскажите пожалуйста , а как сохранить и загрузить Плей-лист ??? )

вот код ) подскажите как будет правельно..

C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm2::N10Click(TObject *Sender)
{
if (SaveDialog1->Execute()) ListBox1->Items->SaveToFile(SaveDialog1->FileName+".plst");
}
//---------------------------------------------------------------------------
 
void __fastcall TForm2::N11Click(TObject *Sender)
{
if (OpenDialog2->Execute() )  ListBox1->Items->LoadFromFile(OpenDialog2->FileName);
}
//---------------------------------------------------------------------------
 Аватар для Mr.Sandman
42 / 59 / 15
Регистрация: 19.12.2011
Сообщений: 552
14.05.2012, 19:47
Вот подскажите простому человеку, как загрузить файлы в лист бокс через OpenDialog ? А потом их дальнейшее воспроизведение?
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
26.02.2013, 14:51
Доброго всем! Вернулся к визуализации звука, однако возникла проблема, мне пока непонятная:

1) предварительно:
C++
1
2
3
4
5
6
HSTREAM chan;
...
void __fastcall TForm1::FormCreate(TObject *Sender)
{
BASS_Init( -1,44100, BASS_DEVICE_3D,0,NULL);
}
2) По таймеру при воспроизведении:
C++
1
2
3
4
5
6
7
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (OpenDialog1->Execute())
        {
        chan=BASS_StreamCreateFile(FALSE, OpenDialog1->FileName.c_str(), 0, 0, 0);
        }
}
...
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::Timer4Timer(TObject *Sender)
{
DWORD level, left;
 
level=BASS_ChannelGetLevel(chan);
left=LOWORD(level);
 
int i=BASS_ChannelGetLength(chan, 0);
 
Memo1->Lines->Add(left);
}
Все работает как надо, в мемо данные пишутся.

3) По кнопке (т.е. попытка прогнать все сразу)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void __fastcall TForm1::Button5Click(TObject *Sender)
{
QWORD len=BASS_ChannelGetLength(chan, BASS_POS_BYTE);
 
DWORD level;
 
for (int i=0; i<len; i+=10000)
{
BASS_ChannelSetPosition(chan, i, 0);
 
level=BASS_ChannelGetLevel(chan);
left=LOWORD(level);
 
Memo1->Lines->Add(left);
}
}
Заполняет все одной цифрой;
Если предварительно включить воспроизведение, в одном месте ставит цифру, остальное заполняет нулями.

Что я делаю не так?

П.С.: По сути, мне надо вытащить в таблицу "peak amplitude" всего звукового файла за каждые n мс. (Вроде как График звука в Nero Wave Editor)

Добавлено через 22 минуты
Цитата Сообщение от sh4d°_°ff Посмотреть сообщение
2) По таймеру при воспроизведении:
...

Все работает как надо, в мемо данные пишутся.
Ремарка: каждый раз разные данные =(

Добавлено через 1 час 16 минут
В общем, как я и предполагал, ошибка была в создании потока. Решение по кнопке:
C++
1
chan=BASS_StreamCreateFile(FALSE,OpenDialog1->FileName.c_str(),0,0,BASS_STREAM_PRESCAN|BASS_STREAM_DECODE);
0
говнокодер
 Аватар для sh4d°_°ff
1273 / 297 / 35
Регистрация: 31.10.2009
Сообщений: 1,432
28.02.2013, 06:19
Появилась еще пара вопросов по функции BASS_ChannelGetLevel
1) возвращается значение от 0 до 32768, в какой единице измерения?
2) как это дело перевести в децибелы?

используя функцию:
C++
1
2
3
4
5
double LevelToDB(int level)
{
float db=20*log10(level/32768);
return db;
}
получаю ошибку:
Название: err2.PNG
Просмотров: 282

Размер: 4.6 Кб
подскажите кто-нибудь как тут быть.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.02.2013, 06:19

Получение спектра (bass.dll)
Добрый день! Начал писать выпускную работу по обработке аудио файлов и столкнулся с проблемой. Функция BASS_ChannelGetData(stream, fft,...

Освобождение файла из BASS.dll
Вопрос может немного не корректный, но все же. Проблема нашла меня при попытке переименовывать файл. Никак не хотел переименовывать, потом...

Bass.dll в CodeGear 2010
Народ подскажите как подключить bass к codegear 2010... что куда надо копировать и где что прописывать? Если сможете напишите пошагово.

Визуализация с использованием bass.dll
Как сделать визуализацию на bass.dll

BASS.DLL не работает на Windows XP
Я написал приложение с использованием аудио библиотеки bass.dll оно прекрасно работает на Win7 а вот на XP запускается но не воспроизводит...


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

Или воспользуйтесь поиском по форуму:
120
Ответ Создать тему
Новые блоги и статьи
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов. Сигнатура func Fetch(urls string, maxConcurrent int) Result Пример urls :=. . .
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition) Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool Worker Pool — паттерн конкурентной обработки задач в Go. Суть: фиксированное количество горутин-воркеров читают задачи из общего канала и пишут результаты в общий канал результатов. . . .
[golang] Pipeline
alhaos 08.06.2026
Pipeline Pipeline — паттерн конкурентной обработки данных в Go. Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь lIs4oanZS9Y
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru