MantisBT - MPfm
View Issue Details
0000197MPfmPlayerpublic2011-12-22 16:182012-04-07 20:57
ycastonguay 
ycastonguay 
lowfeatureN/A
resolvedfixed 
 
0.6.0.00.6.0.0 
0000197: Finish testing and bug fixing the ASIO driver
It is currently available but not working very well. Finish up the driver and make it non EXPERIMENTAL.
No tags attached.
related to 0000313assigned ycastonguay Use a push stream to feed the player stream (using a separate thread) 
Issue History
2011-12-22 16:18ycastonguayNew Issue
2011-12-22 16:18ycastonguayStatusnew => assigned
2011-12-22 16:18ycastonguayAssigned To => ycastonguay
2012-01-21 11:53ycastonguayTarget Version0.7.5.0 => 0.6.0.0
2012-02-14 17:22ycastonguayNote Added: 0000412
2012-02-14 21:28svnCheckin
2012-02-14 21:28svnNote Added: 0000413
2012-02-22 18:36svnCheckin
2012-02-22 18:36svnNote Added: 0000438
2012-02-26 11:28svnCheckin
2012-02-26 11:28svnNote Added: 0000445
2012-03-11 22:36ycastonguayRelationship addedchild of 0000310
2012-03-20 16:56svnCheckin
2012-03-20 16:56svnNote Added: 0000479
2012-03-27 15:34ycastonguayNote Added: 0000500
2012-03-27 15:35ycastonguayRelationship addedrelated to 0000313
2012-03-31 15:58svnCheckin
2012-03-31 15:58svnNote Added: 0000522
2012-04-07 20:57ycastonguayStatusassigned => resolved
2012-04-07 20:57ycastonguayFixed in Version => 0.6.0.0
2012-04-07 20:57ycastonguayResolutionopen => fixed

Notes
(0000412)
ycastonguay   
2012-02-14 17:22   
Great news, I seem to have found the source of the two problems.

First, the sample rate also needs to be set on the ASIO side (including all channels):

BassAsio.BASS_ASIO_ChannelSetRate(false, 0, 44100);
BassAsio.BASS_ASIO_SetRate(44100);

Second, BASSASIO needs to be set to accept floating point:

BassAsio.BASS_ASIO_ChannelSetFormat(false, 0, BASSASIOFormat.BASS_ASIO_FORMAT_FLOAT);
(0000413)
svn   
2012-02-14 21:28   
The user admin has checked in files related to this issue (revision 306).

Comment:
MPfm 0.5.2.1
- Player: Fixed two bugs related to ASIO playback. The static has been removed from the audio, but it still has some bugs.
          These bug fixes are also valid for WASAPI playback.

Related to issue 0000197 and issue 0000198.

Files modified:
U MPfm/branches/current/MPfm/Configuration/MPfmConfiguration.cs
U MPfm/branches/current/MPfm/Other Screens/frmSettings.cs
U MPfm/branches/current/MPfm/frmMain.cs
U MPfm/branches/current/MPfm.Player/Player.cs

(0000438)
svn   
2012-02-22 18:36   
The user admin has checked in files related to this issue (revision 328).

Comment:
MPfm 0.5.3.0
- Player: Added BASSMix. A mixing channel will enable getting data for ASIO and WASAPI without stealing decoding data (was the cause for the skipping audio bug).
          The output meter has been renabled for ASIO and WASAPI.
- Player: Fixed bugs for pausing with ASIO and WASAPI. Both of them required different methods for pausing.
- Bass.NET wrapper: Added CreateMixerStream to the Channel class.

Related to issue 0000197 and issue 0000198.

Files modified:
U MPfm/branches/current/MPfm/Other Screens/frmSettings.cs
U MPfm/branches/current/MPfm/Other Screens/frmThemes.Designer.cs
U MPfm/branches/current/MPfm/frmMain.cs
U MPfm/branches/current/MPfm.Player/Player.cs
U MPfm/branches/current/MPfm.Sound/Bass.Net/Channel.cs

(0000445)
svn   
2012-02-26 11:28   
The user admin has checked in files related to this issue (revision 332).

Comment:
MPfm 0.5.3.0
- Channel: The GetLength, GetPosition and SetPosition methods do not automatically convert
  the values depending on floating point anymore. This logic has been moved to the Player
  and other classes (such as PeakFile and PlaylistItem).
- Player:
  - Bug fix: The FX channel buffer is now cleared, like the mixer channel buffer.
  - Bug fix: The StreamProc callback was using the m_playlist.CurrentItemIndex to increase the m_currentMixPlaylistIndex. Now using a an increment instead.
             This fixes the transition between the 2nd song and other songs for ASIO and WASAPI devices (crashed the application before!).
  - Fixed volume for ASIO and WASAPI devices.
  - The SetPosition(double percentage) method is now using the SetPosition(long position) method (instead of duplicating code)
  - Set default buffer size to 1000ms.

Related to issue 0000197 and issue 0000198.

Files modified:
U MPfm/branches/current/MPfm/Other Screens/frmSettings.cs
U MPfm/branches/current/MPfm/frmMain.cs
U MPfm/branches/current/MPfm.Player/Player.cs
U MPfm/branches/current/MPfm.Sound/Bass.Net/Channel.cs
U MPfm/branches/current/MPfm.Sound/PeakFile.cs
U MPfm/branches/current/MPfm.Sound/Playlists/PlaylistItem.cs

(0000479)
svn   
2012-03-20 16:56   
The user admin has checked in files related to this issue (revision 334).

Comment:
MPfm 0.5.3.0
- Player: Refactored GoTo method. It is now re-using the Play method instead of duplicating code.
          The GoTo method now works on ASIO and WASAPI. However, on WASAPI, the playback does not start again
          after using Play or GoTo several times rapidely (bug).

Related to issue 0000197 and issue 0000198.

Files modified:
U MPfm/branches/current/MPfm.Player/Player.cs

(0000500)
ycastonguay   
2012-03-27 15:34   
I've been testing the ASIO playback in the last 7 days and so far it is very stable even though the buffering isn't done in a different thread (see related issue). The only time I got buffering issues is when running the project in debug mode and zooming in a wave form. The SYNCPROCs are working just as well as the DirectSound/ALSA/CoreAudio drivers. The song transitions are perfectly gapless.

I also tested the "ASIO DirectX" and "ASIO Generic Low Latency" outputs and they work. The next step would be to try to test on other ASIO devices.
(0000522)
svn   
2012-03-31 15:58   
The user animal has checked in files related to this issue (revision 360).

Comment:
MPfm 0.6.0.0
- Add/Edit Loop window: Fixed punch in position.
- Add/Edit Marker window: Fixed punch in position.
- Player: Fixed/refactored the StartLoop, StopLoop and LoopSyncProc methods/events.
          The looping now works under ASIO!

Related to issue 0000197.



Files modified:
U MPfm/branches/current/MPfm/Other Screens/frmAddEditLoop.cs
U MPfm/branches/current/MPfm/Other Screens/frmAddEditMarker.cs
U MPfm/branches/current/MPfm.Player/Player.cs