News:

SMF - Just Installed!

Main Menu
Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Topics - PatrickVossen

#1
Hi Severino,

Today, creating a new build for one of our applications using MMS (AudioDjStudioF4.dll).
Always ran a rather old version (control 10.1.0.0 / engine 13.1.1.6) but updated to latest version (control 11.3.0.0 / engine 14.3.0.4)

But now I get a lot of "*** Internal Error, cannot load engine Number 12 due to error 126" errors.
A lot is, one in 5 application starts.

Also noticed that when I got this error, the content of one of the bass-dll's was written into my application logfile.
See attached image..


Tried writing text data using different way (FilePointer / StreamWriter) but that did not help.
Also checked windows antivirus software, but no mentioning for blocked files...

Do you know at what point the bass dll's are written?
Maybe I can disable all my read/write actions until the dll files are written..

Best regards
Patrick Vossen
#2
Hi Severino,

Just a quick question;
Is it possible to or on the roadmap, the option to play/stream to Sonos speakers (UPnP/DLNA device).

Have a nice weekend!

Best regards
Patrick Vossen
#3
Hi Severino,

At first the best wishes for 2023.

We have an WPF application (.net 4.6.2) that is playing several videofiles at the same time.
The application contains the "Audio DJ Studio for .net" component, but the issue also occurs when using the "API for .net" component
The ADJ control is initialized using the WASAPI sound system and nine (9) decks are initialized.
deck 8 and 9 are used for continuously play a list of MP4 AAC/AVC files (ambient files).
These files have various lengths between 7seconds and 2 minutes.
2 other decks are used for playing video adds. Also MP4 AAC/AVC files.

Sometimes, when a file is loaded (using .Load or .LoadSync), everything seems to go OK.
No error is raised and retrieving total time after LoadDone is raised, gives the correct total time.

But when we start the playback of the track (using .play or .playrange command) this results in an ERR_GENERIC or ERR_TIMEOUT error. and the track is not started.

Current system is Windows 11, K-lite is latest version.
Do you know if there are any limitations (qty loaded tracks?) or workarounds to handle this issue?

Best regards
Patrick Vossen

#4
Hi Severino,

Is there a way to get the id's (or names) of the existing cue points or trigger points?

Best regards
Patrick Vossen
#5
Hi severino,

I currently noticed on 2 devices the following issue:
When I load a MP4 file without setting the audio output device (Default Directsound Device), the file is loaded without any issues, and the file (video and audio) is played as expected.
But when I set the audio output to an other output (Directsound: Speaker (Realtek (R) Audio)) and load the same MP4 file, I get an ERR_INVALID_FORMAT error.

The issue can be reproduced using the VideoPlayerSimple example (vb.net) in 32bit mode.
K-Lite is installed, Windows codecs disabled
AudioRenderMode is set to Audio_Renderer_Mode_Custom_2
Tested with AdjMmsEng.dll ver 13.1.0.2 and ver 13.6.0.17

Please advise

Best regards
Patrick Vossen




#6
Hi Severino,

Could you help me out with the following issue.
I am trying to create a playlist with crossfade functionality using the AudioDJStudioApiF4 control. (version 10.1.0.0 / Engine 13.6.0.17)
The playlist is created from scratch using the PlayListCreateEx and PlayListAddItem procedure.
When I create the playlist without crossfade functionality, the second track is automatically started when the first raises a Done event (both on DeckA).
But when I add the Fader object, the second track is started and directly raises a done event.

Could you hint me what I am doing wrong?

Please find below the debug logging and VB.Net code.

=== start debug logging ===
=================
Control Version = 10.1.0.0
Engine Version  = 13.6.0.17
=================
[date/time] [deck] [event]
10:58:05.057 - 0 - EV_PLAYLIST_SOUND_LOADED
10:58:05.890 - 0 - EV_BPM_AVAILABLE
10:58:05.906 - 0 - EV_FADEIN_STARTED
10:58:05.908 - 0 - EV_SOUND_PLAYING
10:58:06.704 - 0 - EV_FADEIN_COMPLETED
10:58:06.705 - 0 - EV_VOLUME_SLIDE_COMPLETED
11:00:25.125 - 0 - EV_FADING_POINT_REACHED <--fade point first track
11:00:25.175 - 1 - EV_PLAYLIST_SOUND_LOADED <--load 2nd track in deckB
11:00:26.058 - 1 - EV_BPM_AVAILABLE
11:00:26.060 - 1 - EV_SOUND_DONE
11:00:26.063 - 1 - EV_SOUND_PLAYING <--start 2nd track in deckB
11:00:26.114 - 1 - EV_SOUND_DONE <--done 2nd track in deckB
11:00:40.084 - 0 - EV_SOUND_DONE
=== end debug logging ===

Imports System.IO
Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        InitAudioEngine()
        Timer1.Start()
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim AudioFiles As String() = Directory.GetFiles("C:\Audio Files", "*.mp3")
        CreatePlaylist(AudioFiles.ToList)
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        PlaylistStart()
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        PlaylistStop()
    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Label1.Text = $"{GetCurrentTrackPositionString()} / {GetTotalTrackDurationString()}"
    End Sub
End Class


Imports AudioDjStudioApi
Imports System.IO

Module mAudioEngine
    Public AudioApiEngine As New AudioDjStudioApiObj()
    Public Const Deck_A As Short = 0
    Public Const Deck_B As Short = 1
    Private Delegate Sub CallbackForPlayersEventsDelegate(ByVal nEvent As enumPlayerEvents,
                                                          ByVal nPlayer As Int16,
                                                          ByVal nData1 As Int32,
                                                          ByVal nData2 As Int32,
                                                          ByVal fData3 As Single,
                                                          ByVal pBufferUnicode As IntPtr,
                                                          ByVal nBufferLength As Int32)
    Private addrCallbackForPlayersEvents As CallbackForPlayersEvents

    Public Sub InitAudioEngine()
        Debug.WriteLine("=================")
        Debug.WriteLine($"Control Version = {AudioApiEngine.GetControlVersion()}")
        Debug.WriteLine($"Engine Version  = {AudioApiEngine.GetEngineVersion()}")
        Debug.WriteLine("=================")

        AudioApiEngine.InitSoundSystem(2, 0, 0, 0, 0)

        ' set the player's callback
        addrCallbackForPlayersEvents = New CallbackForPlayersEvents(AddressOf PlayerCallback)
        AudioApiEngine.CallbackForPlayersEventsSet(addrCallbackForPlayersEvents)

        AudioApiEngine.Fader.Init(enumFadeTypes.FADE_SINGLE_PLAYLIST, Deck_A, Deck_B)
        AudioApiEngine.Fader.PlayListUseSingle(Deck_A)

        AudioApiEngine.Fader.FadeInEnabled = True
        AudioApiEngine.Fader.FadeInLength = 350
        AudioApiEngine.Fader.FadeOutEnabled = True
        AudioApiEngine.Fader.FadeOutLength = 3500
    End Sub
    Public Sub DisposeAudioEngine()
        AudioApiEngine.StopSound(Deck_A)
        AudioApiEngine.StopSound(Deck_B)
        AudioApiEngine.Dispose()
    End Sub
    Private Sub PlayerCallback(ByVal nEvent As enumPlayerEvents,
                               ByVal nPlayer As Int16,
                               ByVal nData1 As Int32,
                               ByVal nData2 As Int32,
                               ByVal fData3 As Single,
                               ByVal pBufferUnicode As IntPtr,
                               ByVal nBufferLength As Int32)

        Select Case nEvent
            Case enumPlayerEvents.EV_WAVEFORM_CHANGE
            Case enumPlayerEvents.EV_FADING_VOLUME_CHANGED
            Case enumPlayerEvents.EV_VUMETER
            Case Else
                Debug.WriteLine($"{Date.Now:HH:mm:ss.fff} - {nPlayer} - {nEvent}")
        End Select
    End Sub

    Public Sub CreatePlaylist(AudioFiles As List(Of String))
        AudioApiEngine.PlayListSetLoop(Deck_A, bLoop:=False)
        AudioApiEngine.PlayListSetShuffle(Deck_A, bShuffle:=False)

        AudioApiEngine.PlayListCreateEx(Deck_A, enumPlayListModes.PLAYLIST_AUTOMATION_MODE)
        Dim Index As Integer = 0
        For Each f As String In AudioFiles
            If Not File.Exists(f) Then Continue For
            AudioApiEngine.PlayListAddItem(nPlayerIndex:=Deck_A,
                                           strPathname:=f,
                                           nIndex:=Index)
            Index += 1
        Next
    End Sub
    Public Sub PlaylistStart()
        Debug.WriteLine(AudioApiEngine.PlayListExecute(Deck_A, bFromBegin:=True).ToString())
    End Sub
    Public Sub PlaylistStop(Optional ByVal Deck As Short = -1)
        If Deck = -1 Then
            AudioApiEngine.StopSound(Deck)
            Return
        End If
        AudioApiEngine.StopSound(GetPlayingDeck())
    End Sub
    Public Function GetTotalTrackDurationString() As String
        Return AudioApiEngine.GetFormattedSoundDuration(GetPlayingDeck)
    End Function
    Public Function GetTotalTrackDurationInt() As Integer
        Return AudioApiEngine.GetSoundDuration(GetPlayingDeck)
    End Function
    Public Function GetCurrentTrackPositionString() As String
        Return AudioApiEngine.GetCurrentPosString(GetPlayingDeck, False, False)
    End Function
    Public Function GetCurrentTrackPositionInt() As Integer
        Return AudioApiEngine.GetCurrentPos(GetPlayingDeck)
    End Function
    Public Function GetPlayingDeck() As Short
        If AudioApiEngine.GetPlayerStatus(Deck_B) = enumPlayerStatus.SOUND_PLAYING Then
            Return Deck_B
        End If
        Return Deck_A
    End Function

End Module
#7
Hi Severino,
I am currently facing an issue where a tick occurs in the sound of a playing videoclip (in deck 1).
This occurs when a second videoclip is loaded in deck 2.

This occurs when using AdjMmsEng.dll version 13.6.0.0 and 13.6.0.16
When using AdjMmsEng.dll version 13.1.0.2, there is no click.

It does not make any difference when using 'DisplayVideoPlayer.LoadSync' or 'DisplayVideoPlayer.Sync'

The used videofiles are MP4 (AVC/AAC - full HD)
The installed codec is K-Lite version 15.4.8 or newer

Find attached the code I used

Please advise...

Best regards
Patrick Vossen

-------
There was a typo in the text file with code:
"Private Const PlayerB As Short = 2" should be "Private Const PlayerB As Short = 1"
#8
Hi Severino,

One of the thing where we use MMS for, is playing internet radio.
This always works without any issues.
But as of today the engine cannot open the streams any more and the control returns a stream_load_fail.
When I open the link in a browser (Chrome or Firefox) or in VLC, the links still can be played.
I guess that the provider changed something what results in a not able to open the stream using MMS

Do you have a more detailed reason for this stream_load_fail result?

One of the links for the radio station is https://20133.live.streamtheworld.com/RADIO10.mp3

Best regards
Patrick Vossen
#9
Hi,

Retrieving the shuffled playlist order does not seem to work.

I have a playlist that's loaded from .pdj file containing 3 files (using PlayListLoadSync, PlayListLoad does not seem to work at all).
The PlaylistSetShuffle option is set to true (was already set before loading the pdj-file).
On the PlayListLoadDone-event, I do a call to PlayListExecOrderTableGet to retrieve the PlayOrder.
Result for this is    2 - 1 - 0
The playlist starts playing and on the PlaylistSoundLoaded-event I log the indexes that are played.
The result for this is    2 - 0 - 1

Grtz
Patrick Vossen
#10
Hi Severino,

We are using the MMS engine for playing (streaming) mp3 files from several network locations.
Some customers experience errors where the engine returns STREAM_LOAD_FAIL on loading the stream.
Is there a way to get the real error (404 or timeout or something else) instead of the generic message STREAM_LOAD_FAIL?

Best regrards
Patrick Vossen
#11
Hi Severino,

I noticed when creating a playlist file (.pdj), the complete path is used.
Is there a way to only use the filename in the .pdj file and set the soundsdirectory for the control?

Best regards
Patrick Vossen
#12
Hi Severino,

I am trying to create a playlist-file (wpl or pdj) for using with the ADJ component, but I noticed that, when adding a filename with an &-sign in the filename, the file is not found by the control and removed from the playlist.
When manually creating a playlist with the demo application and saving the playlist I notice that the &-sign is saved as &amp;
Is there a list what chars needs to be converted to html entries (e.g. the space is NOT converted to &nbsp;)

Best regards
Patrick Vossen
#13
Hello,

I've got some questions;

  • When I set drivertype to WASAPI, does the videoplayer also use the wasapi driver type?
  • Does it make any difference what audio_render_mode is used? I am using the AUDIO_RENDERER_MODE_CUSTOM_2

Best regards,
Patrick Vossen
#14
Hi Severino,

Is it possible to cancel an fade-out action after setting the StreamVolumeSmoothingSet-function?
I noticed that when setting
audioDjStudio1.StreamVolumeSmoothingSet(e.nPlayerIndex, False, 5000, enumVolumeCurves.VOLUME_CURVE_LINEAR, -1)
And calling
audioDjStudio1.StopSound(Player_A)
The player starts to fade out (=OK), but then when I want to stop the song during the fade-out time, I can call
audioDjStudio1.StreamVolumeSmoothingSet(e.nPlayerIndex, False, 0, enumVolumeCurves.VOLUME_CURVE_LINEAR, -1)
And calling 'StopSound' again, the song directly stops, but when I start the song again, the first Fade action is continuing to Fade-out.

Is there a way to cancel this Fade-out action?

Best regards
Patrick Vossen

#15
Hello,
We have noticed a crackle/tick in the sound when loading a videofile into the engine.
This occurs on several W10 systems with several soundcard types. (onboard/usb/pci)
I guess that this tick is in the soundcard, not in the application, I also noticed it when listening to internet radio in Chrome browser and when loading a MP4 (AAC/AVC) into the MMS engine the crackle occurs. The used codec is latest KLite (LAV) but also on W10 codecs.
I have checked and issue occurs with AdjMmsEng v10.7 but also with v13.1.1.6.

Has someone a solution for this?
Grtz Patrick Vossen
#16
Hello,

Sometimes we have the issue that loading an MP4 file takes "forever".
We have a backup routine that tries to reload the file if loading has not finished within 15~20sec.
But when this issue occurs the loading of a file in that deck results in a ERR_PLAYER_BUSY response.
Closing the player does not reset the player state, the only way to reset this, is restarting the application.
Is there a way to reset this player state?
If possible an other way then resetting (reinitialize) the engine.
Our player has 6 decks and one of the other decks is playing (video) at that moment.

We have seen this issue on WinXP up to Win10 (32bit) and used codec is LAV (K-Lite) on MMS version 6 up to 9.

Best regards
Patrick Vossen


#17
Hello,

Is there a known limitation that audioDJStudio cannot handle bluetooth speakers?
It seems that or, InitSoundSystem fails or when trying to start a player, everythings seems OK but the the sound is not played (also no progress on SoundPositionGet).

I have noticed this same behaviour in the past when using Dante virtual soundcard.

Grtz Patrick Vossen
#18
Hello,

Is it possible to stream/cast to a network port in MP3/AGG/AAC format from a streammixer?
The same like the AudioDjStudio1.CastingWmaNetworkOpenForStreamMixer command but not in a WMA format?
Maybe using the BASS_ChannelSetAttribute function?

Best regards
Patrick Vossen
#19
Hello,

At this moment, when casting to a network port (using CastingWma..) and listening to it using internetradio example, there is a delay of approx. 5 seconds.
Is it possible to reduce this delay?

Best regards
Patrick Vossen
#20
Hello,

I am current facing the following:
When loading a file from https location into player-index 0 and start playing, everything is OK.
When loading a the following file (can be the same file from https or a different file from https) into player index 0 and pless play, after approximately 2.5 seconds the sound stutters.
Even when using a .closesound command, this stutter is present.

I have changed the soundcard from Onboard HD to MAYA44 USB+. This does not solve this.

The update buffer and INET settings are all default.

  • audioDjStudio1.BufferLength = 500
  • audioDjStudio1.BufferUpdateTime = 100
  • Value_INET_SETTING_BUFFER_LENGTH = 5000
  • Value_INET_SETTING_CONNECT_TIMEOUT = 5000
  • Value_INET_SETTING_FTP_PASSIVE_MODE = 1
  • Value_INET_SETTING_PREBUFF_PERC = 75
  • Value_INET_SETTING_PREBUFF_PLAYBACK_PERC = 90
  • Value_INET_INET_SETTING_READ_TIMEOUT = 0

Please advice...

Best regards,
Patrick Vossen