Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2014, 21:39   #1
DanilinNikita
Новичок
Джуниор
 
Регистрация: 16.09.2014
Сообщений: 1
По умолчанию DJ-ский пульт на BASS.dll

Всем привет!
Хочу на основании кода для mp3 плеера сделать код для диджейского пульта... По ходу создания возникли вопросы:
1. Я взял вот этот код и у меня по какой-то причине он выдает ошибку загрузки файла
Цитата:
unit Player;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, bass, StdCtrls, ComCtrls, ExtCtrls;

type
TPlayerMode=(Play,Paused,Stop);
TForm1 = class(TForm)
ListBox1: TListBox;
Edit1: TEdit;
Label1: TLabel;
ScrollBar1: TScrollBar;
ListBox2: TListBox;
ScrollBar2: TScrollBar;
Edit2: TEdit;
TrackBar1: TTrackBar;
TrackBar2: TTrackBar;
TrackBar3: TTrackBar;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
TrackBar4: TTrackBar;
TrackBar5: TTrackBar;
TrackBar6: TTrackBar;
TrackBar7: TTrackBar;
TrackBar8: TTrackBar;
TrackBar9: TTrackBar;
TrackBar10: TTrackBar;
TrackBar11: TTrackBar;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
OpenDialog1: TOpenDialog;
OpenDialog2: TOpenDialog;
Timer1: TTimer;
Timer2: TTimer;
Button9: TButton;
Button10: TButton;
TrackBar12: TTrackBar;
Label11: TLabel;
procedure Button5Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Player;
procedure Button9Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
i: integer;
m: integer;
filename: string;
filename2: string;
Channel: DWORD;
Mode: TPlayerMode;


implementation

{$R *.dfm}

procedure TForm1.Button5Click(Sender: TObject);
var j: integer;
begin
OpenDialog1.Title := 'Open Files';
OpenDialog1.Filter := 'mp3|*.mp3';
if listbox1.Count<>0 then i:=ListBox1.ItemIndex else i:=0;

if not OpenDialog1.Execute then exit;
begin
for j:=0 to OpenDialog1.Files.Count-1 do
begin
ListBox1.Items.Add(OpenDialog1.File s.Strings[j]);
end;
end;

Filename:=ListBox1.Items.Strings[i];
ListBox1.ItemIndex:=i;
end;


procedure TForm1.Button3Click(Sender: TObject);
var k: integer;
begin
OpenDialog2.Title := 'Open Files';
if listbox2.Count<>0 then m:=ListBox2.ItemIndex else m:=0;

if not OpenDialog2.Execute then exit;
begin
for k:=0 to OpenDialog2.Files.Count-1 do
begin
ListBox2.Items.Add(OpenDialog2.File s.Strings[k]);
end;
end;

Filename:=ListBox2.Items.Strings[m];
ListBox2.ItemIndex:=m;
end;




procedure TForm1.Button1Click(Sender: TObject);
begin
if mode=play then exit ;
player;
end;


procedure TForm1.Button6Click(Sender: TObject);
begin
if mode=play then
begin
BASS_ChannelStop(Channel);
mode:=Stop;
end;
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
if mode=play then
begin
BASS_ChannelPause(Channel);
mode:=paused;
end;
end;

procedure TForm1.Player;
begin

if mode<>paused then begin

if not FileExists(FileName) then begin ShowMessage('файл не существует');exit;end;

BASS_ChannelStop(Channel);BASS_Stre amFree(Channel);

Channel := BASS_StreamCreateFile(FALSE, PChar(FileName), 0, 0, 0 {$IFDEF UNICODE} or BASS_UNICODE {$ENDIF});
if Channel=0 then begin ShowMessage('ошибка загрузки файла');exit;end;
end;

if not BASS_ChannelPlay(Channel, False) then
begin ShowMessage('ошибка воспроизведения файла');exit;end;

Form1.Caption:=ExtractFileName(File Name);
mode:=play;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin

if (HIWORD(BASS_GetVersion) <> BASSVERSION) then
begin
MessageBox(0,'Не корректная версия BASS.DLL',nil,MB_ICONERROR);
Halt;
end;


if not BASS_Init(-1, 44100, 0, Handle, nil) then
begin
MessageBox(0,'Ошибка инициализация аудио',nil,MB_ICONERROR);
Halt;
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//Освобождаем объекты перед закрытием
Bass_Stop(); //останавливаем проигрывание
BASS_StreamFree(channel); // освобождаем звуковой канал
Bass_Free;// Освобождаем ресурсы используемые Bass
end;

end.
2. подскажите, пожалуйста, как подключить flac библиотеку (достаточно ли просто вписать bassflac в uses?
3. Возможна ли на bass.dll одновременная игра двух композиций?
DanilinNikita вне форума Ответить с цитированием
Старый 17.09.2014, 04:02   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от DanilinNikita Посмотреть сообщение
1. Я взял вот этот код и у меня по какой-то причине он выдает ошибку загрузки файла
Ничего удивительного, если просто взять и скопипастить чужой код не вникая в подробности.
На официальном сайте есть документация и примеры кода. Если потратить немного времени, будет легко понять, что именно не так.
Как минимум, 1 ошибка в этом коде есть. Только будет лучше если Вы сами по документации и примерам разберётесь что чего и как.
Цитата:
Сообщение от DanilinNikita Посмотреть сообщение
3. Возможна ли на bass.dll одновременная игра двух композиций?
Можно. Для этого нужно создать и запустить на воспроизведение 2 канала.
В принципе процедура стандартная, только выполняется 2 раза.
Streletz вне форума Ответить с цитированием
Старый 17.09.2014, 17:51   #3
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

bass.dll не поддерживает полностью все звуковые форматы. Для воспроизведения можно использовать и один, но для создания звукового потока придется проверять перед создание формат файла и создавать звуковой поток с помощью только нужной функции, поддерживающей тот или иной формат.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 17.09.2014, 18:13   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от саша40 Посмотреть сообщение
bass.dll не поддерживает полностью все звуковые форматы. Для воспроизведения можно использовать и один, но для создания звукового потока придется проверять перед создание формат файла и создавать звуковой поток с помощью только нужной функции, поддерживающей тот или иной формат.
КО, естественно что в программе должен задаваться лимит входных данных.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
BASS.Dll artiom4356 Мультимедиа в Delphi 3 26.08.2013 01:08
BASS.DLL Serrg1994 Мультимедиа в Delphi 0 20.09.2011 21:38
bass.dll larry Общие вопросы C/C++ 1 09.11.2009 13:23
Ошибка при выхове функций Bass.dll из другой DLL SalasAndriy Общие вопросы Delphi 7 21.10.2009 23:36
bass.dll Elem Мультимедиа в Delphi 18 19.07.2009 11:04