home
products
contribute
download
documentation
forum
Home
Forums
New posts
Search forums
What's new
New posts
All posts
Latest activity
Members
Registered members
Current visitors
Donate
Log in
Register
What's new
Search
Search
Search titles only
By:
New posts
Search forums
Search titles only
By:
Menu
Log in
Register
Navigation
Install the app
Install
More options
Contact us
Close Menu
Forums
MediaPortal 1
Support
Watch / Listen Media
Listen Music
gapless playback
Contact us
RSS
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
<blockquote data-quote="grubi" data-source="post: 177102" data-attributes="member: 52476"><p>Hi hwahrmann,</p><p></p><p>I think a feature freeze is a good thing to get 0.2.3 to the level of reliability it needs for a stable release. Esp. in the </p><p>recent past we saw that new features were breaking existing code.</p><p></p><p>The amount of changes necessary also prevent me from giving it a try at the moment (the effect on exisiting code is more complex as it seems in the first moment).</p><p></p><p>From what I have seen so far gapless should be possible with the current architecture as it is possible to crossfade two songs at the moment without a gap. I have taken a deeper look at the Play method however I still did not find where and when it is triggered exactly. I would assume this happens by a callback of the BASS engine when the end of the currently running track is reached (nearly reached?). What is necessary for gapless is to use the BASS_Mixer interface which I saw is already used at least when upmixing or ASIO is involved. Important is to use the BASS_MIXER_NORAMPIN flag on the BASS_Mixer_StreamAddChannel call which was introduced exactly for the gapless issue. Following is a code snipped which is from the BASS devs for achieving gapless playback. I have not checked it, however I will do so from within a test app and see if it leads to really gapless playback.</p><p></p><p>Regards,</p><p>grubi.</p><p></p><p>mixer=BASS_Mixer_StreamCreate(44100, 2, BASS_MIXER_END); // create mixer</p><p>BASS_ChannelSetSync(mixer, BASS_SYNC_END|BASS_SYNC_MIXTIME, 0, EndSync, 0); // set sync for end</p><p></p><p>source=BASS_StreamCreateFile(...,BASS_STREAM_DECODE|BASS_SAMPLE_FLOAT); // open 1st source</p><p>BASS_Mixer_StreamAddChannel(mixer, source, BASS_STREAM_AUTOFREE); // plug it in (and auto-free it when it ends)</p><p></p><p>BASS_ChannelPlay(mixer, FALSE); // start playing</p><p></p><p>...</p><p></p><p>void CALLBACK EndSync(HSYNC handle, DWORD channel, DWORD data, DWORD user)</p><p>{</p><p> if (!more_sources) return;</p><p> source=BASS_StreamCreateFile(...,BASS_STREAM_DECODE|BASS_SAMPLE_FLOAT); // open next source</p><p> BASS_Mixer_StreamAddChannel(mixer, source, BASS_STREAM_AUTOFREE|BASS_MIXER_NORAMPIN); // plug it in</p><p> BASS_ChannelSetPosition(mixer, 0); // reset the mixer</p><p>}</p></blockquote><p></p>
[QUOTE="grubi, post: 177102, member: 52476"] Hi hwahrmann, I think a feature freeze is a good thing to get 0.2.3 to the level of reliability it needs for a stable release. Esp. in the recent past we saw that new features were breaking existing code. The amount of changes necessary also prevent me from giving it a try at the moment (the effect on exisiting code is more complex as it seems in the first moment). From what I have seen so far gapless should be possible with the current architecture as it is possible to crossfade two songs at the moment without a gap. I have taken a deeper look at the Play method however I still did not find where and when it is triggered exactly. I would assume this happens by a callback of the BASS engine when the end of the currently running track is reached (nearly reached?). What is necessary for gapless is to use the BASS_Mixer interface which I saw is already used at least when upmixing or ASIO is involved. Important is to use the BASS_MIXER_NORAMPIN flag on the BASS_Mixer_StreamAddChannel call which was introduced exactly for the gapless issue. Following is a code snipped which is from the BASS devs for achieving gapless playback. I have not checked it, however I will do so from within a test app and see if it leads to really gapless playback. Regards, grubi. mixer=BASS_Mixer_StreamCreate(44100, 2, BASS_MIXER_END); // create mixer BASS_ChannelSetSync(mixer, BASS_SYNC_END|BASS_SYNC_MIXTIME, 0, EndSync, 0); // set sync for end source=BASS_StreamCreateFile(...,BASS_STREAM_DECODE|BASS_SAMPLE_FLOAT); // open 1st source BASS_Mixer_StreamAddChannel(mixer, source, BASS_STREAM_AUTOFREE); // plug it in (and auto-free it when it ends) BASS_ChannelPlay(mixer, FALSE); // start playing ... void CALLBACK EndSync(HSYNC handle, DWORD channel, DWORD data, DWORD user) { if (!more_sources) return; source=BASS_StreamCreateFile(...,BASS_STREAM_DECODE|BASS_SAMPLE_FLOAT); // open next source BASS_Mixer_StreamAddChannel(mixer, source, BASS_STREAM_AUTOFREE|BASS_MIXER_NORAMPIN); // plug it in BASS_ChannelSetPosition(mixer, 0); // reset the mixer } [/QUOTE]
Insert quotes…
Verification
Post reply
Forums
MediaPortal 1
Support
Watch / Listen Media
Listen Music
gapless playback
Contact us
RSS
Top
Bottom