Вверх ↑
Этот топик читают: Гость
Ответов: 1429
Рейтинг: 50
#16: 2010-08-18 08:19:19 ЛС | профиль | цитата
Я понял, bassasio я взялся подключать с некоторой уверенностью что все получится.
Но я впрашиваю как быть с bass_vst мне потом?

ASIO, на практике, нужен для работы с VST.
карма: 0

0
Ответов: 3349
Рейтинг: 233
#17: 2010-08-18 08:25:58 ЛС | профиль | цитата
Там прийдется самому делать.
Или поискать для delphi.
------------ Дoбавленo в 08.25:
Вот нашел немног

------------ Дoбавленo в 08.25:
#pas
Unit Bass_VST;

interface

uses
Windows;


const
BASS_VST_PARAM_CHANGED = 1;
BASS_VST_EDITOR_RESIZED = 2;
BASS_VST_AUDIO_MASTER = 3;

BASS_VST_ERROR_NOINPUTS = 3000;// the given effect has no inputs and is probably a VST instrument and no effect
BASS_VST_ERROR_NOOUTPUTS = 3001; // the given effect has no outputs
BASS_VST_ERROR_NOREALTIME = 3002; // the given effect does not support realtime processing


type

BASS_VST_PARAM_INFO = record
name : array [0..15] of Char; // examples: Time, Gain, RoomType
FUnit : array [0..15] of Char; // examples: sec, dB, type
Display : array [0..15] of Char; // the current value in a readable format, examples: 0.5, -3, PLATE
defaultValue : single; // the default value
rsvd : array [0..255] of Char;
end;

BASS_VST_INFO = record
ChannelHandle : DWORD; // the channelHandle as given to BASS_VST_ChannelSetDSP()
uniqueID :DWORD; // a unique ID for the effect (the IDs are registered at Steinberg)
effectName : array [0..79] of Char; // the effect name
effectVersion : DWORD; // the effect version
effectVstVersion : DWORD; // the VST version, the effect was written for
hostVstVersion : DWORD; // the VST version supported by BASS_VST, currently 2.4
productName : array [0..79] of Char; // the product name, may be empty
vendorName: array [0..79] of Char; // the vendor name, may be empty
vendorVersion : DWORD; // vendor-specific version number
chansIn : DWORD; // max. number of possible input channels
chansOut : DWORD; // max. number of possible output channels
initialDelay : DWORD; // for algorithms which need input in the first place, in milliseconds
hasEditor : DWORD; // can the BASS_VST_EmbedEditor() function be called?
editorWidth : DWORD; // initial/current width of the editor, also note BASS_VST_EDITOR_RESIZED
editorHeight : DWORD; // initial/current height of the editor, also note BASS_VST_EDITOR_RESIZED
aeffect : Pointer; // the underlying AEffect object (see the VST SDK)
rsvd: array [0..255] of Char;
isInstrument:DWORD;
end;



VSTPROC = procedure (vstHandle : DWORD;Action : DWORD;Param1,Param2,User : DWORD);stdcall;

const BASS_VSTDLL = 'bass_vst.dll';

function BASS_VST_ChannelSetDSP (Channel : DWORD;const DLLFile : PChar;flags: DWORD; priority:Integer): DWORD;stdcall;external BASS_VSTDLL;
function BASS_VST_ChannelRemoveDSP(Channel : DWORD;vstHandle : DWORD): Bool;stdcall;external BASS_VSTDLL;

function BASS_VST_EmbedEditor(Channel : DWORD;ParentWindow : hwnd): Bool;stdcall;external BASS_VSTDLL;

function BASS_VST_GetInfo(VSTHandle : DWORD;pInfo: Pointer):Bool;stdcall;external BASS_VSTDLL;
function BASS_VST_GetParam(vstHandle : DWORD;paramIndex : integer): single;stdcall;external BASS_VSTDLL;
function BASS_VST_SetParam(vstHandle : DWORD;paramIndex : integer;value : single): Bool;stdcall;external BASS_VSTDLL;
function BASS_VST_GetParamCount(vstHandle : DWORD) : integer;stdcall;external BASS_VSTDLL;
function BASS_VST_GetParamInfo(vstHandle : DWORD;paramIndex : Integer;var Info : BASS_VST_PARAM_INFO): boolean;stdcall;external BASS_VSTDLL;
function BASS_VST_Resume(vstHandle : DWORD):Bool;stdcall;external BASS_VSTDLL;
function BASS_VST_SetCallback(vstHandle : DWORD; PROC : Pointer; user : DWORD):Bool;stdcall;external BASS_VSTDLL;
function BASS_VST_SetLanguage(const Lang : PChar):Bool;stdcall;external BASS_VSTDLL;
function BASS_VST_SetBypass(vstHandle : DWORD; state:boolean):bool;stdcall;external BASS_VSTDLL;
function BASS_VST_GetBypass(vstHandle : DWORD):dword;stdcall;external BASS_VSTDLL;

function BASS_VST_ChannelCreate(freq : DWORD; Chans : DWORD; const DLLFile : PChar; flags: DWORD): DWORD;stdcall;external BASS_VSTDLL;
function BASS_VST_ChannelFree(vstHandle : DWORD): BOOL;stdcall;external BASS_VSTDLL;
function BASS_VST_ProcessEvent(vstHandle : DWORD; midiCh : DWORD; event : DWORD; param : DWORD): BOOL;stdcall;external BASS_VSTDLL;

implementation

end.

карма: 1

1
Голосовали:login
Ответов: 1429
Рейтинг: 50
#18: 2010-08-18 08:30:14 ЛС | профиль | цитата
! Прикольно!
Но это только часть, тут нет важных функций.
А я и не догадался поискать. Спасибо.
карма: 0

0
Ответов: 3349
Рейтинг: 233
#19: 2010-08-18 08:33:07 ЛС | профиль | цитата
login, если папотеть то можно из того C++ кода сделать.
Тут главное API, а типы уже заданы.
карма: 1

0
Ответов: 1429
Рейтинг: 50
#20: 2010-08-18 08:35:42 ЛС | профиль | цитата
Да, согласен.
карма: 0

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#21: 2010-08-18 09:00:18 ЛС | профиль | цитата
Ivann писал(а):
лучше использовать динамическую линковку

А можно полюбопытствовать -- с чем связано такое, почти категоричное, утверждение
карма: 22

0
Ответов: 3349
Рейтинг: 233
#22: 2010-08-18 09:16:01 ЛС | профиль | цитата
nesco, при статической линковки функция dll подгружается в память при запуске, а при динамической, вызывается в любой момент времени и при этом способе есть возможность узнать есть ли на компе библиотека если есть то загружать если нет то не загружать.
При статической линковке, при отсутствии библиотеки, приложение просто завершится и не будет работать.
------------ Дoбавленo в 09.16:
nesco, , Хотя в данном случае если основной функционал программы храниться в dll то нет смысла загружаться без неё.

карма: 1

0
22
Сообщение
...
Прикрепленные файлы
(файлы не залиты)