Reservierter Channel bleibt stumm
Übersicht

![]() |
RatchetBetreff: Reservierter Channel bleibt stumm |
![]() Antworten mit Zitat ![]() |
---|---|---|
Leider kann ich nicht den ganzen Quellcode posten, aber es geht mir auch nur darum, ob ihr vielleicht einen Denkanstoß für mich habt, was hier faul sein könnte.
Ich reserviere einen TChannel mit AllocChannel. Dieser ist Teil der Klasse TTrack. In eine zweiten Klasse TSample wird ein Sound geladen. Diesen möchte ich im Channel von TTrack abspielen. Also übergebe ich meinen Channel an die Play Methode. Es wird aber nichts abgespielt. Übergebe ich keinen Channel, sondern lasse einen neuen erstellen, funktioniert es. Folgender Code ist eine Nachbildung - dummerweise funktioniert dieser! BlitzMax: [AUSKLAPPEN] sound: TSample = New TSample Im echten Quellcode sieht es nicht anders aus: Funktioniert nicht BlitzMax: [AUSKLAPPEN] Method Play(Channel: TChannel) Funktioniert, erzeugt aber einen neuen Channel BlitzMax: [AUSKLAPPEN] Method Play(Channel: TChannel) Der Channel ist "gefüllt" (if Channel then ...), habe auch schon das AllocCahnel in die New Metode von TTrack verschoben, Channel als var übergeben, Lautstärke gesetzt, Rate und und und. Ich weiß echt nicht mehr was es sein könnte. Jemand eine Idee? |
||
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro] |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Soundmodule kommen mir schon länger etwas verbuggt vor. Setzt du einen Audiodriver? | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich hatte seit Jahren keine Probleme mehr mit den Sounds in BMax. Allerdings verzichten wir total darauf einen Channel vorzugeben. Zwar wird immer wieder das gleiche Objekt benutzt, aber jedesmal durch den neuen Channel, den CueSound zurückliefert, überschrieben.
BlitzMax: [AUSKLAPPEN] AktChannel:TChannel Das entspricht deinem Beispiel No II ("..Funktioniert, erzeugt aber einen neuen Channel "). Es könnte gut sein, dass wir das in der Firma irgendwann mal so festgelegt haben, weil der andere Weg vielleicht auch Probleme bereitete. Mir ist aber auch nichts negatives über diese Art der ständigen Neugenerierung bekannt. Es scheint stabil zu laufen und geht auch nach Hunderten (Tausenden?) von CueSound() nie in die Knie. Soweit meine Erfahrungen.... |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
![]() |
Ratchet |
![]() Antworten mit Zitat ![]() |
---|---|---|
Xeres hat Folgendes geschrieben: Die Soundmodule kommen mir schon länger etwas verbuggt vor. Setzt du einen Audiodriver?
Ja und Nein. Habe dort auch schon alles erdenkliche probiert. Es ist egal welchen Treiber ich setzte, das Problem bleibt. @Midimaster: Ich frage mich beim Neugenerieren nur, ob das dann nicht ein Speicherleck wäre. Außerdem geht es mir darum, dass ich nun mal eine festgelegte Anzahl an Channels habe und eben diese auch nutzen möchte/muss/will ![]() |
||
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro] |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
wie meinst du das mit der festgelegten Anzahl?
wir nutzen ja auch immer wieder die gleichen Variablen für die Channels. Allerdings steckt dahinter jedesmal eine andere ID oder wenn du so willst Zeiger des OS. Scheinbar greift man hier aus einem endllosen Pool zu. wir hatten zunächst auch bedenken wegen eines Lecks, aber sind bisher auf keine Grenzen gestoßen. Und wir nutzen Sounds wirklich intensiv. off-topic: z.b. unter Monkey haben wir größte Probleme bei den Channels festgestellt und bis heute keine Möglichkeit gefunden unsere Software auch für dieses Target umzusetzen. Den intensivsten Gebrauch von immer wieder neuen Channels machen wir derzeit bei "Rhythmus-Trainer" ( https://www.blitzforum.de/showcase/448/ ), wo pro Sekunde schon mal 20 individuelle Sounds zusammenkommen und das ganze läuft auch nach einer Stunde ( 3.600*20=72.000 Sounds) immer noch ohne Ausfälle. Dabei werden die Channels intensiv gestreßt, so werden z.b. viele unserer Channel immer wieder mit "fade out" ausgeblendet. |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
![]() |
Ratchet |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Anzahl lege ich selber fest, da es für meine Art von Programm Gang und Gebe ist (Tracker). Wenn ich acht Tracks habe sind es eben acht Channel. Ständig neue Channels zu erzeugen macht hier einfach keinen Sinn und ich würde es gerne sauber programmieren und nicht mit so einer "Notlösung". Außerdem macht es vieles einfacher was das Handling angeht. | ||
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro] |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
du kannst ja mit 8 Channels arbeiten! Allerdings bekommen die von Betriebssystem immer wieder neue IDs untergeschoben. Für das OS sind es neue Channels, aber Du sprichst sie immer unter den 8 gleichen "Channels" an.
Probier mal das: BlitzMax: [AUSKLAPPEN] Method Play(Channel: TChannel) oder das: BlitzMax: [AUSKLAPPEN] Method Play(Channel: TChannel) ### EDIT ### Ich habe mal grad im Modul BRL.Audio nachgesehen. Ich glaube hier ist die Lösung. Was Du vorhast klappt nicht bei CueSound: BlitzMax: [AUSKLAPPEN] Function CueSound:TChannel( sound:TSound,channel:TChannel=Null ) Es wird immer ein neuer Channel erzeugt und der wird mit RETURN zurückgegeben. also muss man... BlitzMax: [AUSKLAPPEN] Channel = CueSound(Sample.Sound, Channel) ...schreiben!!! |
||
![]() |
Ratchet |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ach so, verstehe. Macht natürlich Sinn. Dann war es wohl eher ein Denkfehler von mir was CueSound angeht ![]() Vielen Dank. |
||
[iMac 27"] [3,4GHz Intel Core i5 ] [8GB Ram] [NVIDIA GeForce GTX 775M 2GB] [MacOS X Yosemite] [BlitzMax + MaxGui] [Monkey X Pro] |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann kann man sich auch den Channel als Parameter Sparen, der wird ja für absolut nichts verwendet...
Immerhin sammelt der GC die alten Channel ein und es gibt kein Speicherleck. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Logisch!
Auch den "AllocChannel" kann man sich sparen! Den braucht man nur vorsorglich beim Programmstart, wenn man in der Hauptschleife schon auf ChannelPlaying() testet, bevor vielleicht ein Sound geladen wurde: BlitzMax: [AUSKLAPPEN] AktChannel:TChannel |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group