Nach Bass.net Update kein Stream mehr.

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von DarkEvolution.

    Nach Bass.net Update kein Stream mehr.

    Hallo VB-Paradise Community,
    Ich habe dass Problem wenn ich bei mir ein Internet stream an klicke und dehn auf Play passiert nichts.

    Library sind:
    Bass.NetWrapper
    Bass.Asio
    Bass.Native
    Newtonsoft.Json
    EmbedIO
    SpotifyAPI.Web
    SpotifyAPI.Web.Auth
    Unsquare.Swan.Lite
    MaterialDesigncolors und Themes

    Als ich dass rein gecoded habe:

    C#-Quellcode

    1. MesageBox.Show(Bass.BASS_ErrorGetCode().ToString());


    kam BASS_ERROR_HANDLE(5) mehr nicht.

    Dann hab ich es auch in Window loading mit eingebaut kam BASS_OK.

    bin am ende mit meinen Latein weil Ahnung hab ich aber leider nicht in fehler suche und Beseitigung.

    Der angäbliche schadhafte Code:

    Spoiler anzeigen

    C#-Quellcode

    1. using System;
    2. using System.Runtime.CompilerServices;
    3. using System.Windows.Forms;
    4. using System.Drawing;
    5. using Un4seen.Bass;
    6. using Un4seen.Bass.AddOn.Tags;
    7. using Un4seen.Bass.Misc;
    8. using CSCore;
    9. using System.IO;
    10. namespace We_Are_One
    11. {
    12. internal class MusicPlayer
    13. {
    14. private string[] metaTags;
    15. private string _mUserAgent = "WeAreOne";
    16. public MainWindow mw;
    17. [FixedAddressValueTypeAttribute()]
    18. public IntPtr _mUserAgentPtr;
    19. private int stream = 0;
    20. private string path = "";
    21. private double volume;
    22. public TAG_INFO _tagInfo;
    23. public TAG_INFO Tags;
    24. public Visuals Spectrum = new Visuals();
    25. private bool Playing;
    26. private SYNCPROC _mSync;
    27. public void InitialBass()
    28. {
    29. Bass.BASS_SetConfigPtr(BASSConfig.BASS_CONFIG_NET_AGENT, _mUserAgentPtr); Bass.BASS_Init(-1,44100,BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero);
    30. }
    31. public void Play(string Filename)
    32. {
    33. Bass.BASS_StreamFree(this.stream);
    34. this.path = Filename;
    35. this.volume *= 0.01;
    36. this.stream = Bass.BASS_StreamCreateFile(this.path, 0L, 0L, 0);
    37. if (this.stream != 0)
    38. {
    39. Bass.BASS_ChannelPlay(this.stream, false);
    40. this.Tags = new TAG_INFO(this.path);
    41. BassTags.BASS_TAG_GetFromFile(this.stream, this.Tags);
    42. }
    43. }
    44. public void SetLautstaerke(double lautstaerkeInProzent)
    45. {
    46. volume = lautstaerkeInProzent * 0.01;
    47. Bass.BASS_ChannelSetAttribute(stream, BASSAttribute.BASS_ATTRIB_VOL, (float)volume);
    48. }
    49. public int GetCurrentPosition()
    50. {
    51. return (int)Bass.BASS_ChannelBytes2Seconds(this.stream, Bass.BASS_ChannelGetPosition(this.stream));
    52. }
    53. public int GetDuration()
    54. {
    55. return (int)Bass.BASS_ChannelBytes2Seconds(this.stream, Bass.BASS_ChannelGetLength(this.stream));
    56. }
    57. public void SetCurentposition(int CurrentPosition)
    58. {
    59. Bass.BASS_ChannelSetPosition(this.stream, (double)CurrentPosition);
    60. }
    61. public void Stop()
    62. {
    63. Bass.BASS_ChannelStop(stream);
    64. Bass.BASS_StreamFree(stream);
    65. Bass.FreeMe();
    66. }
    67. public bool IsPlaying()
    68. {
    69. if (Bass.BASS_ChannelIsActive(stream) == 0)
    70. {
    71. this.Playing = false;
    72. }
    73. else
    74. {
    75. this.Playing = true;
    76. }
    77. return this.Playing;
    78. }
    79. public void Pause()
    80. {
    81. if (Bass.BASS_ChannelIsActive(stream) != BASSActive.BASS_ACTIVE_PAUSED)
    82. {
    83. Bass.BASS_ChannelPause(stream);
    84. }
    85. else if (Bass.BASS_ChannelIsActive(stream) != BASSActive.BASS_ACTIVE_PLAYING)
    86. {
    87. Bass.BASS_ChannelPlay(stream, false);
    88. }
    89. }
    90. public int GetVolume()
    91. {
    92. return (int)(this.volume * 100.0);
    93. }
    94. public bool PlayStream(string url, double lautstaerkeInProzent)
    95. {
    96. volume = (double)lautstaerkeInProzent * 0.01;
    97. if (IsPlaying())
    98. {
    99. Stop();
    100. }
    101. _tagInfo = new TAG_INFO(url);
    102. _mSync = new SYNCPROC(MetaSync);
    103. Bass.BASS_SetConfig(BASSConfig.BASS_CONFIG_NET_PREBUF, 0);
    104. Bass.BASS_SetConfig(BASSConfig.BASS_CONFIG_NET_PLAYLIST, 1);
    105. Bass.BASS_SetConfig(BASSConfig.BASS_CONFIG_NET_BUFFER, 300);
    106. stream = Bass.BASS_StreamCreateURL(url, 0, BASSFlag.BASS_STREAM_AUTOFREE, null, IntPtr.Zero);
    107. bool result;
    108. //if(BassTags.BASS_TAG_GetFromURL(stream,_tagInfo))
    109. if (stream != 0)
    110. {
    111. Bass.BASS_ChannelSetSync(stream,BASSSync.BASS_SYNC_META,0,_mSync,IntPtr.Zero);
    112. Bass.BASS_ChannelSetAttribute(stream, BASSAttribute.BASS_ATTRIB_VOL, (float)volume);
    113. Bass.BASS_ChannelPlay(stream, false);
    114. result = true;
    115. }
    116. else
    117. {
    118. result = false;
    119. }
    120. return result;
    121. }
    122. private void MetaSync(int handle, int channel,int data,IntPtr user){
    123. string[] tags = Bass.BASS_ChannelGetTagsMETA(channel);
    124. //mw = new MainWindow();
    125. //mw.lblGenre.Content = tags.Genre;
    126. }
    127. /*
    128. public void Analyzer(PictureBox analyzer, Color anColor)
    129. {
    130. if (analyzer != null)
    131. {
    132. analyzer.Image = this.Spectrum.CreateSpectrumLine(this.stream, analyzer.Width, analyzer.Height, Color.White, anColor, Color.Transparent, 5, 10, false, true, true);
    133. }
    134. }*/
    135. public string[] GetMetaTags()
    136. {
    137. return this.metaTags;
    138. }
    139. public static bool GetUrlCheck(string url)
    140. {
    141. bool result;
    142. if (Path.GetExtension(url) == "m3u")
    143. {
    144. result = false;
    145. }
    146. else
    147. {
    148. int num = Bass.BASS_StreamCreateURL(url, 0, BASSFlag.BASS_STREAM_AUTOFREE, null, IntPtr.Zero);
    149. result = (num != 0);
    150. }
    151. return result;
    152. }
    153. public Array Tag(int stream){
    154. IntPtr tag = Bass.BASS_ChannelGetTags(stream,BASSTag.BASS_TAG_META);
    155. string[] tags = Utils.IntPtrToArrayNullTermUtf8(tag);
    156. return tags;
    157. }
    158. }
    159. }

    der andere teil von oben:
    Spoiler anzeigen

    C#-Quellcode

    1. private void btnPlay_Click(object sender, RoutedEventArgs e)
    2. {
    3. if (senderView.SelectedIndex == 0)
    4. {
    5. rItem item = (rItem)senderView.SelectedItem;
    6. mp.PlayStream(item.url.ToString(), slideVol.Value);
    7. Enabled = true;
    8. btnStop.IsEnabled = true;
    9. IsPlaying = true;
    10. }else if (senderView.SelectedIndex < 0)
    11. {
    12. MessageBox.Show("No Item Found");
    13. }
    14. //Bass.BASS_ErrorGetCode().ToString()
    15. MessageBox.Show(Bass.BASS_ErrorGetCode().ToString());
    16. //string[] metaTags = mp.GetMetaTags();
    17. //lblGenre.Content = String.Format("{0}", metaTags[0]);
    18. }


    Entfernt

    Mit freundlichen Grüßen,
    DarkEvolution

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „DarkEvolution“ ()

    Bereinige dein Projekt bitte, daß heißt, lösche die Ordner bin und obj und hänge das ganze dann hier, mit der foreninternen upload Funktion, an den Thread an.
    Besser noch, du fügst den relevanten code, von einem VB.Net-code-tag umschlossen, direkt in den Startpost ein.
    Beides zusammen kann auch nicht schaden.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „FormFollowsFunction“ ()

    DarkEvolution schrieb:

    kam BASS_ERROR_HANDLE(5) mehr nicht.


    Der Fehler besagt das ein handle ungültig ist. Ich meine das BassInit immer zuerst gecallt werden muss, auch testet du nicht ob überhaupt Initialisiert werden konnte, BassInit gibt dir einen Boolean zurück, macht hier doch sinn, aus der void InitialBass eine function machen, die den Boolean von BassInit rausgibt. Was, wenn was schief ging und du die info nicht hast? Pengbumm und zu spät.

    Ich gucke mir mal deine mappe eben an. Was soll denn das CsCore? Ich täte eines von beidem nehmen Bass oder CsCore.

    @DarkEvolution mach mal eine abgespeckte Projektmappe, ich werde nicht deine ganze mappe aufräumen oder mir die verwiesenen DLLs sonstwie hohlen. BassNet-SDK hab ich installiert. Evtl. bringt es schon was wenn du mir die Fehlerzeile nennst.
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin
    So schau dir mal diesen Code an, habe ich dir angefertigt. Bei Webradio-Streams werden Tags ermittelt und via Event rausgefeuert. Lautstärke hab ich als Property reingemacht, brauchste keine void um den Wert zu setzen, so geht das auch mit Zuweisung( = ), in diesem Fall deutlich eleganter. Musste vllt. noch andere arten von Tags welche die Bass unterstützt reinmachen, so wie weitere Funktionen.
    BassPlayer.cs

    C#-Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.Linq;
    4. using System.Text;
    5. using System.Threading.Tasks;
    6. using System.Windows.Forms;
    7. using Un4seen.Bass;
    8. namespace BassDemo
    9. {
    10. class BassPlayer
    11. {
    12. private enum TagTypes : int { META = 1, HTTP, ICY };
    13. private int Stream = 0;
    14. private List<SYNCPROC> SyncProcs = new List<SYNCPROC>();
    15. private List<int> SyncProcHandles = new List<int>();
    16. public delegate void METATagsReceived(object sender, string[] e);
    17. public event METATagsReceived OnMETATagsReceived;
    18. public delegate void HTTPTagsReceived(object sender, string[] e);
    19. public event HTTPTagsReceived OnHTTPTagsReceived;
    20. public delegate void ICYTagsReceived(object sender, string[] e);
    21. public event ICYTagsReceived OnICYTagsReceived;
    22. private float _volume = 0.5f;
    23. public float Volume
    24. {
    25. get
    26. {
    27. return _volume;
    28. }
    29. set
    30. {
    31. if(value < 0.0f | value > 1.0f)
    32. {
    33. throw new ArgumentOutOfRangeException("Volume must be in Range from 0 to 1");
    34. }
    35. _volume = value;
    36. if (Stream != 0)
    37. {
    38. Bass.BASS_ChannelSetAttribute(Stream, BASSAttribute.BASS_ATTRIB_VOL, _volume);
    39. }
    40. }
    41. }
    42. public BassPlayer()
    43. {
    44. if (!Init())
    45. {
    46. //in case of error
    47. //remember that we use 1 flag for multiple function return values
    48. MessageBox.Show(Bass.BASS_ErrorGetCode().ToString());
    49. }
    50. }
    51. private void MetaSyncProcCallback(int handle, int channel, int data, IntPtr user)
    52. {
    53. string[] tags = null;
    54. switch ((TagTypes)user.ToInt32())
    55. {
    56. case TagTypes.META:
    57. tags = Bass.BASS_ChannelGetTagsMETA(channel);
    58. if (tags != null) OnMETATagsReceived?.Invoke(this, tags);
    59. break;
    60. case TagTypes.HTTP:
    61. tags = Bass.BASS_ChannelGetTagsHTTP(channel);
    62. if (tags != null) OnHTTPTagsReceived?.Invoke(this, tags);
    63. break;
    64. case TagTypes.ICY:
    65. tags = Bass.BASS_ChannelGetTagsICY(channel);
    66. if (tags != null) OnICYTagsReceived?.Invoke(this, tags);
    67. break;
    68. }
    69. }
    70. private bool Init()
    71. {
    72. bool flag = Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_CPSPEAKERS, IntPtr.Zero);
    73. flag &= Bass.BASS_SetConfig(BASSConfig.BASS_CONFIG_BUFFER, 250); //250ms buffersize
    74. flag &= Bass.BASS_SetConfig(BASSConfig.BASS_CONFIG_NET_PLAYLIST, true); //parse playlist ((e.g. M3U or PLS or....)
    75. flag &= Bass.BASS_SetConfig(BASSConfig.BASS_CONFIG_NET_BUFFER, 250); //250ms buffersize
    76. flag &= Bass.BASS_SetConfig(BASSConfig.BASS_CONFIG_NET_PREBUF, 20); //buffer needs to be filled 20% before playing
    77. return flag;
    78. }
    79. public void CleanUp()
    80. {
    81. Stop();
    82. Bass.BASS_Free();
    83. }
    84. public bool PlayUrl(string url)
    85. {
    86. Stream = Bass.BASS_StreamCreateURL(url, 0, BASSFlag.BASS_STREAM_PRESCAN | BASSFlag.BASS_STREAM_AUTOFREE, null, IntPtr.Zero);
    87. bool flag = (Stream != 0);
    88. Bass.BASS_ChannelSetAttribute(Stream, BASSAttribute.BASS_ATTRIB_VOL, _volume);
    89. flag &= Bass.BASS_ChannelPlay(Stream, true);
    90. SyncProcs.Add(new SYNCPROC(MetaSyncProcCallback));
    91. SyncProcHandles.Add(Bass.BASS_ChannelSetSync(Stream, BASSSync.BASS_SYNC_META, 0, SyncProcs[SyncProcs.Count - 1], new IntPtr((int)TagTypes.HTTP)));
    92. SyncProcs.Add(new SYNCPROC(MetaSyncProcCallback));
    93. SyncProcHandles.Add(Bass.BASS_ChannelSetSync(Stream, BASSSync.BASS_SYNC_META, 0, SyncProcs[SyncProcs.Count - 1], new IntPtr((int)TagTypes.META)));
    94. SyncProcs.Add(new SYNCPROC(MetaSyncProcCallback));
    95. SyncProcHandles.Add(Bass.BASS_ChannelSetSync(Stream, BASSSync.BASS_SYNC_META, 0, SyncProcs[SyncProcs.Count - 1], new IntPtr((int)TagTypes.ICY)));
    96. return flag;
    97. }
    98. public bool PlayFile(string filename)
    99. {
    100. Stream = Bass.BASS_StreamCreateFile(filename, 0, 0, BASSFlag.BASS_STREAM_PRESCAN | BASSFlag.BASS_STREAM_AUTOFREE);
    101. Bass.BASS_ChannelSetAttribute(Stream, BASSAttribute.BASS_ATTRIB_VOL, _volume);
    102. return Bass.BASS_ChannelPlay(Stream, true);
    103. }
    104. public bool IsStreamActive()
    105. {
    106. return (Bass.BASS_ChannelIsActive(Stream) == BASSActive.BASS_ACTIVE_PLAYING) | (Bass.BASS_ChannelIsActive(Stream) == BASSActive.BASS_ACTIVE_STALLED) | (Bass.BASS_ChannelIsActive(Stream) == BASSActive.BASS_ACTIVE_PAUSED);
    107. }
    108. public void Stop(){
    109. if(Stream != 0)
    110. {
    111. while (SyncProcHandles.Count > 0)
    112. {
    113. Bass.BASS_ChannelRemoveSync(Stream, SyncProcHandles[0]);
    114. SyncProcHandles.RemoveAt(0);
    115. }
    116. while (SyncProcs.Count > 0)
    117. {
    118. SyncProcs[0] = null;
    119. SyncProcs.RemoveAt(0);
    120. }
    121. Bass.BASS_ChannelStop(Stream);
    122. Stream = 0;
    123. }
    124. }
    125. }
    126. }
    127. [spoiler='FrmMain.cs']
    128. [cs]
    129. using System;
    130. using System.Collections.Generic;
    131. using System.ComponentModel;
    132. using System.Data;
    133. using System.Drawing;
    134. using System.Linq;
    135. using System.Text;
    136. using System.Threading.Tasks;
    137. using System.Windows.Forms;
    138. namespace BassDemo
    139. {
    140. public partial class FrmMain : Form
    141. {
    142. private readonly BassPlayer player = new BassPlayer();
    143. public FrmMain()
    144. {
    145. InitializeComponent();
    146. player.OnMETATagsReceived += player_METATagsReceived;
    147. player.OnHTTPTagsReceived += player_HTTPTagsReceived;
    148. player.OnICYTagsReceived += player_ICYTagsReceived;
    149. }
    150. private void player_METATagsReceived(object sender, string[] tags)
    151. {
    152. Console.WriteLine("META TAGS: " + DateTime.Now.ToShortTimeString());
    153. foreach(string tag in tags)
    154. {
    155. Console.WriteLine(tag);
    156. }
    157. Console.WriteLine("");
    158. }
    159. private void player_HTTPTagsReceived(object sender, string[] tags)
    160. {
    161. Console.WriteLine("HTTP TAGS: " + DateTime.Now.ToShortTimeString());
    162. foreach (string tag in tags)
    163. {
    164. Console.WriteLine(tag);
    165. }
    166. Console.WriteLine("");
    167. }
    168. private void player_ICYTagsReceived(object sender, string[] tags)
    169. {
    170. Console.WriteLine("ICY TAGS: " + DateTime.Now.ToShortTimeString());
    171. foreach (string tag in tags)
    172. {
    173. Console.WriteLine(tag);
    174. }
    175. Console.WriteLine("");
    176. }
    177. private void BtnPlayFile_Click(object sender, EventArgs e)
    178. {
    179. using (OpenFileDialog ofd = new OpenFileDialog())
    180. {
    181. ofd.Multiselect = false;
    182. ofd.Filter = "MP3 Dateien|*.mp3"; //edit this how you need it
    183. if(ofd.ShowDialog() == DialogResult.OK)
    184. {
    185. player.Stop();
    186. player.PlayFile(ofd.FileName);
    187. }
    188. }
    189. }
    190. private void BtnPlayUrl_Click(object sender, EventArgs e)
    191. {
    192. player.Stop();
    193. player.PlayUrl("http://www.rockantenne.de/webradio/rockantenne.m3u");
    194. }
    195. private void BtnStop_Click(object sender, EventArgs e)
    196. {
    197. player.Stop();
    198. }
    199. private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)
    200. {
    201. player.CleanUp();
    202. }
    203. private void TrackBarVolume_Scroll(object sender, EventArgs e)
    204. {
    205. player.Volume = trackBarVolume.Value * 0.01f;
    206. }
    207. }
    208. }


    FrmMain.cs

    C#-Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Linq;
    7. using System.Text;
    8. using System.Threading.Tasks;
    9. using System.Windows.Forms;
    10. namespace BassDemo
    11. {
    12. public partial class FrmMain : Form
    13. {
    14. private readonly BassPlayer player = new BassPlayer();
    15. public FrmMain()
    16. {
    17. InitializeComponent();
    18. player.OnMETATagsReceived += player_METATagsReceived;
    19. player.OnHTTPTagsReceived += player_HTTPTagsReceived;
    20. player.OnICYTagsReceived += player_ICYTagsReceived;
    21. }
    22. private void player_METATagsReceived(object sender, string[] tags)
    23. {
    24. Console.WriteLine("META TAGS: " + DateTime.Now.ToShortTimeString());
    25. foreach(string tag in tags)
    26. {
    27. Console.WriteLine(tag);
    28. }
    29. Console.WriteLine("");
    30. }
    31. private void player_HTTPTagsReceived(object sender, string[] tags)
    32. {
    33. Console.WriteLine("HTTP TAGS: " + DateTime.Now.ToShortTimeString());
    34. foreach (string tag in tags)
    35. {
    36. Console.WriteLine(tag);
    37. }
    38. Console.WriteLine("");
    39. }
    40. private void player_ICYTagsReceived(object sender, string[] tags)
    41. {
    42. Console.WriteLine("ICY TAGS: " + DateTime.Now.ToShortTimeString());
    43. foreach (string tag in tags)
    44. {
    45. Console.WriteLine(tag);
    46. }
    47. Console.WriteLine("");
    48. }
    49. private void BtnPlayFile_Click(object sender, EventArgs e)
    50. {
    51. using (OpenFileDialog ofd = new OpenFileDialog())
    52. {
    53. ofd.Multiselect = false;
    54. ofd.Filter = "MP3 Dateien|*.mp3"; //edit this how you need it
    55. if(ofd.ShowDialog() == DialogResult.OK)
    56. {
    57. player.Stop();
    58. player.PlayFile(ofd.FileName);
    59. }
    60. }
    61. }
    62. private void BtnPlayUrl_Click(object sender, EventArgs e)
    63. {
    64. player.Stop();
    65. player.PlayUrl("http://www.rockantenne.de/webradio/rockantenne.m3u");
    66. }
    67. private void BtnStop_Click(object sender, EventArgs e)
    68. {
    69. player.Stop();
    70. }
    71. private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)
    72. {
    73. player.CleanUp();
    74. }
    75. private void TrackBarVolume_Scroll(object sender, EventArgs e)
    76. {
    77. player.Volume = trackBarVolume.Value * 0.01f;
    78. }
    79. }
    80. }


    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin

    Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von „NoIde“ ()

    @NoIde Wenn Du die Events ordentlich deklarierst, brauchst Du keine Delegates und keinen null-Test:
    Spoiler anzeigen

    C#-Quellcode

    1. /// <summary>
    2. /// Event zur Übertragung eines Namens-Arrays
    3. /// </summary>
    4. public event EventHandler<BassEventArgs> MetaTagsReceived = delegate {};
    5. // ...
    6. MetaTagsReceived(this, new BassEventArgs(DAS_ARRAY);

    C#-Quellcode

    1. namespace BassDemo
    2. {
    3. /// <summary>
    4. /// Klasse zur Übertragung eines Namens-Arrays
    5. /// </summary>
    6. internal class BassEventArgs
    7. : EventArgs
    8. {
    9. /// <summary>
    10. /// die Namen
    11. /// </summary>
    12. public int Names { get; private set; }
    13. /// <summary>
    14. /// Standardkonstruktor der Klasse BassEventArgs
    15. /// </summary>
    16. /// <param name="names">die Namen</param>
    17. public BassEventArgs(string[] names)
    18. {
    19. this.Names = names;
    20. }
    21. }
    22. }
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    War mir grad noch aufgefallen ist, hab im setter falsch geprüft, hatte _volume statt value geprüft ob in Range, wie auch in der function Init einen gravierenden Fehler gemacht.

    Hatte flag gesetzt mit Bass_StreamCreate, dann logisch or angwendet, was falsch war. Hab den Code noch editiert.
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin
    Will leider auch nicht funktionieren. gibt kein sound aus.

    #Edit: 27.01.2020
    Jetzt funktioniert nur Aus der liste nur noch einer aber ich will dass alle funktionieren.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „DarkEvolution“ ()