Show Posts
|
|
Pages: [1] 2 3
|
|
2
|
Developments / BASS / DTS
|
on: 20 May '13 - 21:36
|
|
Hello,
How can we play DTS, extension wav in BASS? Now i hear some noise Help me please.
|
Reply
Quote
|
|
|
3
|
Developments / BASS / Volume Equalizer
|
on: 7 May '13 - 09:17
|
|
Is there another possibility beside lower down the DSP volume to determine the Equalizer volume? It's important for use BASS_ChannelGetLevel because if the Equalizer is on the values are quit high. The overall DSP volume is active for Compressor and Damp. But if i want to get a perfect ChannelGetlevel view i must put down the DSP volume to 50% For Compressor i multiply the output 'ChannelGetLevel ' DSP volume. Works fine. Maybe this is the only solution. I hope not. Greetings.
|
Reply
Quote
|
|
|
4
|
Developments / BASS / Re: NetRadio problem
|
on: 28 Mar '13 - 12:39
|
|
I have tried my program on another computer with a different sound card. Problem does not occur anymore. So it's my own soundcard that isn't good and after some checking I notice that changing the speaker configuration from 7.1 to 2.1 all work well. I think that rewriting the program Sound Device settings (My own application) is the best solution. Because the BASS_Getinfo speaker value = 2 using SPEAKER flags is not the best idea. But REAR and FRONT works with my soundcard? Lucky?
Maybe you need the BASS_GetInfo values:
flags: 3871 ($00000F1F) hwsize: 0 hwfree: 0 freesam: 0 free3d: 0 minrate: 100 maxrate: 200000 eax: False minbuf: 55 dsver: 9 latency: 50 initflags: 2304 ($00000900) speakers: 2 freq: 48000
Soundcard settings: 48KHz/16bit. Sample.mp3 = 44100Hz (Don't think it's important anymore)
Regards, Ed.
|
Reply
Quote
|
|
|
5
|
Developments / BASS / Re: NetRadio problem
|
on: 27 Mar '13 - 09:02
|
OS: Windows 7 SOUND: Creative Audigy SE (SB0570) Sound Card Soundcard problem? Soundcard doesn't really understand BASS_SPEAKER_FRONT or BASS_SPEAKER_REAR. Audible good. BASS_GetInfo > Speakers = 2; But I hear, if selected, sound in the REAR. Strange. If I don't use flag: BASS_SPEAKER_FRONT in the StreamCreateURL I suppose all output must be right? (doesn't matter where or when I use BASS_SPEAKER_FRONT in another stream?) I don't have an mono file. It's all MP3 stereo. I use only for listing Internet radio, not as a Shoutcast. See this small source code in Delphi. If you push Button1 (SOUND) after that Button2 (NO SOUND) Or if you push Button2 (SOUND) after that Button1 (SOUND) and again Button2 (NO SOUND) If I use BASS_SPEAKER_FRONT as flag in StreamCreateURL both work well. Of course removing BASS_SPEAKER_FRONT they all work well. Maybe you can reproduce this code? Simple test. I don't understand  procedure TForm1.Button1Click(Sender: TObject); begin BASS_StreamFree(chan); // close old stream chan := BASS_StreamCreateFile(False, PChar('d:\Sample.mp3'), 0, 0, BASS_UNICODE or BASS_SPEAKER_FRONT); if (chan <> 0) then BASS_ChannelPlay(chan, FALSE); end;
procedure TForm1.Button2Click(Sender: TObject); begin BASS_StreamFree(chan); // close old stream chan := BASS_StreamCreateURL('http://somafm.com/suburbsofgoa24.pls', 0, 0, nil, 0); if (chan <> 0) then BASS_ChannelPlay(chan, FALSE); end;
procedure TForm1.FormCreate(Sender: TObject); begin BASS_Init(-1, 44100, 0, Handle, nil); BASS_SetConfig(BASS_CONFIG_NET_PLAYLIST, 1); // enable playlist processing BASS_SetConfig(BASS_CONFIG_NET_PREBUF, 0); // minimize automatic pre-buffering, so we can do it (and display it) instead end;
|
Reply
Quote
|
|
|
6
|
Developments / BASS / Re: NetRadio problem
|
on: 26 Mar '13 - 11:31
|
Working now, but: What I mean exactly: (I don't understand why) (HSTREAM): #1 Playerleft := BASS_StreamCreateFile(False, PChar(Fn), 0, 0, BASS_UNICODE); Starting NetRadio: NetRadio := BASS_StreamCreateURL(url, 0, BASS_STREAM_BLOCK or BASS_STREAM_STATUS or BASS_STREAM_AUTOFREE, @StatusProc, 0); No problem with all TEN links. (HSTREAM): #2 Playerleft := BASS_StreamCreateFile(False, PChar(Fn), 0, 0, BASS_UNICODE or BASS_SPEAKER_FRONT); Starting NetRadio: NetRadio := BASS_StreamCreateURL(url, 0, BASS_STREAM_BLOCK or BASS_STREAM_STATUS or BASS_STREAM_AUTOFREE, @StatusProc, 0); Now the tree links I explained don't work. (HSTREAM): #3 Playerleft := BASS_StreamCreateFile(False, PChar(Fn), 0, 0, BASS_UNICODE or BASS_SPEAKER_FRONT); Starting NetRadio: NetRadio := BASS_StreamCreateURL(url, 0, BASS_STREAM_BLOCK or BASS_STREAM_STATUS or BASS_STREAM_AUTOFREE or BASS_SPEAKER_FRONT, @StatusProc, 0); Now everything works. All links. I'm Dutch so it's sometimes difficult to explain it right. Why MPEG2 don't play after a first BASS_StreamCreateFile with BASS_SPEAKER_FRONT flag. Is Bass holding the FRONT flag, but why playing the rest and not the MPEG2 links. Maybe is stupid question but i thought that using a new HSTREAM variable had has nothing to do with the Playerleft (HSTREAM) vars. So flags and channels is different? Because I don't use the SPEAKER flag in the NetRadio. So like BASS_SPEAKER_NONE(RESET) or something like that. I don't know anymore In the final I use the SPEAKER flag for all channels (Left, Right, Headphone, Effect) so this is not much of a problem. I'm curious. Thanks in advanced. Regards, Ed.
|
Reply
Quote
|
|
|
7
|
Developments / BASS / Re: NetRadio problem
|
on: 25 Mar '13 - 17:26
|
I use the same BASS source and DLL for both applications. So it was time to give it another go. After some hours of checking I found out that after putting a song in my Jukebox the internal NetRadio test doesn't work anymore because it use the BASS_SPEAKER_FRONT flag. Added the same flag to BASS_StreamCreateURL everything works fine. I was surprised because I thought without as flag always worked?  Greetings, Ed.
|
Reply
Quote
|
|
|
10
|
Developments / BASS / Re: Transition effect songs
|
on: 2 Nov '12 - 15:30
|
|
Working with fade you need at least two Streams. And previous, noticed message 'SoundMike' it fadeOut song for 3 seconds (and stop, free stream) and FadeIn for 3 seconds. You must calculate if the song had reach end position minus 3 seconds. Not an easy task if you want it superb.
|
Reply
Quote
|
|
|
11
|
Developments / BASS / Re: ChannelBytes2Seconds in milliseconds
|
on: 2 Nov '12 - 12:40
|
Take a look at this code, hope it helps a little bit. TotalBytes := BASS_ChannelGetLength(Stream, BASS_POS_BYTE); // NORMAL TotalPlayingTime := BASS_ChannelBytes2Seconds(Stream, TotalBytes); // Double
BASS_Sec2Time(BASS_DoubleToCardinal(Round(TotalPlayingTime)), bHours, bMinutes, bSeconds, bFractions); // Format('%.2d:%.2d%.2d', [bMinutes, bSeconds, bFractions]);
function BASS_DoubleToCardinal(Value: Double): Cardinal; begin Result := Round(Value * 1000); end;
function BASS_Sec2Time(BASS_Sec: Cardinal; var tHours, tMinutes, tSecs, tFractions: Cardinal): Int64; var MilliSec, Seconds: Int64; begin MilliSec := BASS_Sec; // BASS_DoubleToCardinal(BASS_Sec); Seconds := MilliSec div 1000; tHours := (Seconds div 3600); tMinutes := (((Seconds - ((tHours) * 3600)) div 60)); tSecs := (Seconds - ((tHours) * 3600 + (tMinutes) * 60)); tFractions := (MilliSec - (((tHours) * 3600 + (tMinutes) * 60) + (tSecs)) * 1000); tFractions := Round(tFractions / 10); if (tFractions > 99) then tFractions := 99; // Dec(tFractions); Result := MilliSec; end;
|
Reply
Quote
|
|
|
12
|
Developments / BASS / Re: Writing custom tags
|
on: 27 Oct '12 - 11:52
|
Hello, I'm working also with AudioGenie3 and you can easily read user defined metatags. Just a little function will do the trick. function ID3V2GetUserText(aTagValue: string): WideString; var Index, Count: Integer; aFoundTag: WideString; begin Result := ''; Count := edReadAudioTags.ID3V2GetFrameCountW(TID3FrameID(ID3F_TXXX)); for index := 1 to Count do begin aFoundTag := edReadAudioTags.ID3V2GetUserTextDescriptionW(index); if (LowerCase(aFoundTag) = LowerCase(aTagValue)) then Result := edReadAudioTags.ID3V2GetUserTextW(index); // INHOUD! end; end;
Call it with (example): Result := ID3V2GetUserText('TEMPO');
Hope to help you for so far. Greetings!
|
Reply
Quote
|
|
|
13
|
Developments / BASS / Re: Failed Decode BPM
|
on: 20 Sep '12 - 23:41
|
|
Is it possible to get some better accurate BPM measurement if i skip some threshold at the beginning and at the End of a stream? Thats the question. I know that real time measuring is better and useful if you don't need it before playing. Please help me with this question before i start to program. Thank you, Regards, Ops2011
|
Reply
Quote
|
|
|
15
|
Developments / BASS / Volume
|
on: 8 Aug '12 - 14:08
|
|
Just a global question. Like VLC-Media player you can increased the volume to higher override. Put it to 130% of whatever? Is this possible with Bass? Regards.
|
Reply
Quote
|
|
|
16
|
Developments / BASS / Re: Drop-outs after fading (Playing next song)
|
on: 30 Jul '12 - 11:33
|
The problem was the Timer, every time the processor is overloaded the timer reloads. That was a fault in my source i noticed. I put it all together and followed Chris his idea. I focused to much on Timer calls. Thank you. See here some results: ( Just left only for view ) {==============================================================================} {== ChannelSetSync of the type BASS_SYNC_POS (SyncHandle PlayerLeft) ==========} {==============================================================================}
procedure LeftFadeTimeStart(SyncHandle: HSYNC; Channel, data, user: DWORD); stdcall; begin aSyncBoolLeft.hSyncFadeTimeStart := True; frmJukebox.LeftFadeTimeStartProc; end;
procedure LeftStartFadeIn(SyncHandle: HSYNC; Channel, data, user: DWORD); stdcall; begin aSyncBoolLeft.hSyncStartFadeIn := True; frmJukebox.LeftStartFadeInProc; end;
procedure LeftStartFadeOut(SyncHandle: HSYNC; Channel, data, user: DWORD); stdcall; begin aSyncBoolLeft.hSyncStartFadeOut := True; frmJukebox.LeftStartFadeOutProc; end;
procedure LeftAutoCue(SyncHandle: HSYNC; Channel, data, user: DWORD); stdcall; begin aSyncBoolLeft.hSyncAutoCue := True; frmJukebox.LeftAutoCueProc; end;
procedure LeftEndStream(SyncHandle: HSYNC; Channel, data, user: DWORD); stdcall; begin aSyncBoolLeft.hSyncEndStream := True; frmJukebox.LeftEndStreamProc; end;
And with a little bit help from WndProc: procedure TfrmJukebox.WndProc(var Msg: TMessage); begin inherited; if Msg.Msg = WM_INFO_UPDATE then case msg.WParam of EJB_MSG_INIT_PLAYER_LEFT: InitPlayerLeft; // SendMessage(Handle, WM_INFO_UPDATE, EJB_MSG_INIT_PLAYER_LEFT, 0); EJB_MSG_INIT_PLAYER_RIGHT: InitPlayerRight; // SendMessage(Handle, WM_INFO_UPDATE, EJB_MSG_INIT_PLAYER_RIGHT, 0); EJB_MSG_NOTIFY_NACK_LEFT: MessagePlayerNotifyNack(PlayerLeft, msg.LParam); // SendMessage(Handle, WM_INFO_UPDATE, EJB_MSG_NOTIFY_NACK_LEFT, ErrorGetCode); EJB_MSG_NOTIFY_NACK_RIGHT: MessagePlayerNotifyNack(PlayerRight, msg.LParam); // SendMessage(Handle, WM_INFO_UPDATE, EJB_MSG_NOTIFY_NACK_RIGHT, ErrorGetCode); EJB_MSG_UPDATE_STATUS_PANELS: UpdateStatusPanels; // SendMessage(Handle, WM_INFO_UPDATE, EJB_MSG_UPDATE_STATUS_PANELS, 0); EJB_MSG_MARGUEE_INFO_LEFT: MargueeInfoLinks.Items[0].Text := CreateMargueeInfo(LeftPlayerInfo.MusicInfo); // SendMessage(Handle, WM_INFO_UPDATE, EJB_MSG_MARGUEE_INFO_LEFT, 0); EJB_MSG_MARGUEE_INFO_RIGHT: MargueeInfoRechts.Items[0].Text := CreateMargueeInfo(RightPlayerInfo.MusicInfo); // SendMessage(Handle, WM_INFO_UPDATE, EJB_MSG_MARGUEE_INFO_RIGHT, 0); EJB_MSG_UPDATE_INFO_BLOCK: UpdateInfoBlok; // SendMessage(Handle, WM_INFO_UPDATE, EJB_MSG_CLEAR_PLAYER_LEFT, BoolToInt(ClearInfo)); EJB_MSG_CLEAR_PLAYER_LEFT: ClearPlayerLeft(IntToBool(msg.LParam)); // SendMessage(Handle, WM_INFO_UPDATE, EJB_MSG_CLEAR_PLAYER_RIGHT, BoolToInt(ClearInfo)); EJB_MSG_CLEAR_PLAYER_RIGHT: ClearPlayerRight(IntToBool(msg.LParam)); end; end;
Must do the trick to get it all right without failures. Question: I have some problems to call ShowMessage if in the fade moment a file does not exists? I am very certain that i call this within a Message. But i know that the procedure that i am calling to select the next song is not in the SendMessage WndProc. Like this: procedure TfrmJukebox.PlayerLeftNotifyNack(ErrorGetCode: Integer); { < Called begin ArtistLeft.Caption := PlayerLeft.PlayBuffer.Filename; TitleLeft.Caption := BASSErCodes[ErrorGetCode]; {MessagePlayerNotifyNack(PlayerLeft, ErrorGetCode); = now Sendmessage} SendMessage(Handle, WM_INFO_UPDATE, EJB_MSG_NOTIFY_NACK_LEFT, ErrorGetCode); { Here is Sendmessage } end;
System hangs after notify. Question II: I use only streams to play music. Is the flag 'BASS_SAMPLE_FLOAT' obsolete? I don't use DECODED channels. Regards.
|
Reply
Quote
|
|
|
18
|
Developments / BASS / Re: Drop-outs after fading (Playing next song)
|
on: 24 Jul '12 - 09:00
|
|
I adjusted BASS_SetVolume(0) > BASS_ChannelSetAttribute(Stream, BASS_ATTRIB_VOL, 0) The problem occurs again.
I noticed that my computer is using a lot of resources (like calculating .par files) when this occurs (I notice now and had no idea before). But only at the start of the music. If the music continued to play, no problem. Is this a simple processor fault? When starting a song the BASS engine has not enough resources to start right away?
Do you have a solution to fix this or is it just the way it is? I use: BASS_CONFIG_UPDATETHREADS = 1; (I have a dual processor so, setting to 2?) or more? Can i use BASS_CONFIG_BUFFER to improve? Or is this down the road and play your songs without running 'heavy' background programs?
Hope the explanation is clear and free me from further searching.
Thanks in advanced. Eduard.
|
Reply
Quote
|
|
|
19
|
Developments / BASS / Re: Drop-outs after fading (Playing next song)
|
on: 24 Jul '12 - 03:02
|
|
Thanks Chris and Ian.
I think that the Timer works great. I uses some Hires Timers.
What about Ian, great. This is the only 'volume' fault. So this must be it? I give it a go and hope's this adjustment works. It take some time to check this!
Greetings...
|
Reply
Quote
|
|
|