reset weight & balance

Voor vragen over Playlist Automation Language.
Plaats reactie
Gebruikersavatar
NCR
***
Berichten: 56
Lid geworden op: 04 mei 2011, 11:39
SAM-versie: 2023.1
Database: MySQL
Windows: 10

reset weight & balance

Ongelezen bericht door NCR »

Hoi,
Is het mogelijk om met Weight & Balance 1 of 2 cat. te restten, ipv alle tracks ? Met een PAL-script misschien? :idea:
Gebruikersavatar
Wout
Beheerder
Berichten: 3506
Lid geworden op: 03 dec 2007, 14:17
SAM-versie: 2019.3
Database: MariaDB
Windows: 11
Locatie: West-Brabant
Contacteer:

Re: reset weight & balance

Ongelezen bericht door Wout »

Ja, dat is wel mogelijk met een PAL, maar ik denk dat een PHP-script wat makkelijker is.
Je kunt SQL gebruiken om de gemiddelde Weight als Balance per category te bekijken.

Code: Selecteer alles

SELECT categoryID, NAME, ROUND(AVG(so.weight),2) Weight, ROUND(AVG(so.balance),2) Balance 
FROM categorylist c
LEFT JOIN category ca ON c.categoryID = ca.ID 
LEFT JOIN songlist so ON c.songID = so.ID
WHERE parentID = 0 
GROUP BY name ORDER BY categoryID ;
Dan is het selecteren per category en een keuze maken met welke 0...99 je ze vult. Met deze keuze maak je een update naar je SQL-database toe.
Als ik tijd heb zal ik een webpagina maken.
Afbeelding
Gebruikersavatar
Wout
Beheerder
Berichten: 3506
Lid geworden op: 03 dec 2007, 14:17
SAM-versie: 2019.3
Database: MariaDB
Windows: 11
Locatie: West-Brabant
Contacteer:

Re: reset weight & balance

Ongelezen bericht door Wout »

In plaats van een webpagina kun je dit ook via een MySQL-editor doen. (bijvoorbeeld HeidySQL)
Ik heb het een en ander getest en dit werkt iets sneller. ;-)

Via HeidySQL bekijk je eerst welke map je wilt veranderen in weight/balance.
Dit doe je met de code en daarna krijg je een resultaat, als voorbeeld pakken we de map Dump_muziek (id = 51) gemiddelde weight (8,5)

Code: Selecteer alles

SELECT categoryID, NAME, ROUND(AVG(so.weight),2) Weight, ROUND(AVG(so.balance),2) Balance, ROUND(AVG(so.count_played),1) aantal_played, COUNT(so.ID) aantal 
FROM categorylist c
LEFT JOIN category ca ON c.categoryID = ca.ID 
LEFT JOIN songlist so ON c.songID = so.ID
WHERE parentID = 0 
GROUP BY name ORDER BY categoryID ;
weight_bepalen.png
Hieruit bepaal je de categoryID wat past bij de map die je wilt veranderen.
In dit voorbeeld gaan we aan de slag met de map Dump_muziek (id = 51)

Code: Selecteer alles

SELECT so.ID, artist, title, filename, date_title_played, weight, balance 
FROM categorylist c
LEFT JOIN category ca ON c.categoryID = ca.ID 
LEFT JOIN songlist so ON c.songID = so.ID
WHERE categoryID = 51
AND so.ID IS NOT NULL;
weight_cat.png
In deze map (51) gaan we alle nummers een weight geven van 11. Dit wordt gedaan met de volgende SQL-code:

Code: Selecteer alles

UPDATE songlist
SET weight = 11 
WHERE ID IN (
	SELECT so.ID 
	FROM categorylist c
	LEFT JOIN category ca ON c.categoryID = ca.ID 
	LEFT JOIN songlist so ON c.songID = so.ID
	WHERE categoryID = 51
	AND so.ID IS NOT NULL) ;
Als het goed is zijn alle nummers in deze categorie de weight veranderd naar 11.
Dit kunnen we controleren met de SQl-code

Code: Selecteer alles

SELECT so.ID, artist, title, filename, date_title_played, weight, balance 
FROM categorylist c
LEFT JOIN category ca ON c.categoryID = ca.ID 
LEFT JOIN songlist so ON c.songID = so.ID
WHERE categoryID = 51
AND so.ID IS NOT NULL;
weight_na_update.png
Dit is helemaal goed gegaan. Nu nog een controle op alle categorieën.

Code: Selecteer alles

SELECT categoryID, NAME, ROUND(AVG(so.weight),2) Weight, ROUND(AVG(so.balance),2) Balance, ROUND(AVG(so.count_played),1) aantal_played, COUNT(so.ID) aantal 
FROM categorylist c
LEFT JOIN category ca ON c.categoryID = ca.ID 
LEFT JOIN songlist so ON c.songID = so.ID
WHERE parentID = 0 
GROUP BY name ORDER BY categoryID ;
weight_cat_na_update.png
Mooi! Hiermee is de categorie aangepast aan een weight van 11.

Andere updates
Met de weight kun je een nummer opgeven van 0...99. Als voorbeeld een weight van 65 wordt dan in de categoryID van 51:

Code: Selecteer alles

UPDATE songlist
SET weight = 65
WHERE ID IN (
	SELECT so.ID 
	FROM categorylist c
	LEFT JOIN category ca ON c.categoryID = ca.ID 
	LEFT JOIN songlist so ON c.songID = so.ID
	WHERE categoryID = 51
	AND so.ID IS NOT NULL) ;
Met de balance kun je een nummer opgeven van 0...99999. Wil je de balance veranderen naar voorbeeld 85 in de categoryID van 51 dan wordt de code:

Code: Selecteer alles

UPDATE songlist
SET balance = 85 
WHERE ID IN (
	SELECT so.ID 
	FROM categorylist c
	LEFT JOIN category ca ON c.categoryID = ca.ID 
	LEFT JOIN songlist so ON c.songID = so.ID
	WHERE categoryID = 51
	AND so.ID IS NOT NULL) ;
Om met SAM een Weight-playlist te maken maak je weer gebruik van (smWeighted of smPriority)

Code: Selecteer alles

Cat['Music (All)'].QueueBottom(smWeighted , EnforceRules);
Cat['Music (All)'].QueueBottom(smPriority, EnforceRules);
Je hebt niet voldoende permissies om de bijlagen van dit bericht te bekijken.
Afbeelding
Gebruikersavatar
Wout
Beheerder
Berichten: 3506
Lid geworden op: 03 dec 2007, 14:17
SAM-versie: 2019.3
Database: MariaDB
Windows: 11
Locatie: West-Brabant
Contacteer:

Re: reset weight & balance

Ongelezen bericht door Wout »

Een andere manier is via drag-and-drop in SAM.
Selecteer je muziek in SAM en verplaatst het in de map van "Weighted Rotation".
Hierbij wordt de versleepte muziek in de Weight gezet waarin je ze heb verplaatst.
Je hebt niet voldoende permissies om de bijlagen van dit bericht te bekijken.
Afbeelding
Gebruikersavatar
Wout
Beheerder
Berichten: 3506
Lid geworden op: 03 dec 2007, 14:17
SAM-versie: 2019.3
Database: MariaDB
Windows: 11
Locatie: West-Brabant
Contacteer:

Re: reset weight & balance

Ongelezen bericht door Wout »

Verder heb ik gekeken wat de Reset Weight Balance onderhuids doet met SAM.
Dit kun je eventueel zelf doen door de logging aan te zetten.

Code: Selecteer alles

SET GLOBAL general_log = 'ON';
SHOW VARIABLES LIKE "general_log%";
//niet vergeten ook uit te zetten, anders wordt je log-file erg groot
//resultaat vind je dan terug in "C:\Program Files\MariaDB 10.3\data"
Bij een Reset Weight Balance wordt de volgende SQL-querys uitgevoerd door SAM

Code: Selecteer alles

UPDATE songlist SET weight = 01 WHERE weight < 01
UPDATE songlist SET weight = 99 WHERE weight > 99
UPDATE songlist SET balance = 1/weight
En bij elke songwissel wordt in SAM de balance geupdate door balance=balance+(1/weight)

Code: Selecteer alles

UPDATE songlist SET balance=balance+(1/weight), date_played='2023-11-24 19:39:08', count_played=count_played+1, count_performances = count_performances + 0 WHERE ID = 2
Informatie waar je niets aan heb, maar ik vond het heerlijk om het uit te zoeken. 8-)
Het kan zijn dat ik bij WoutFM meer gebruik ga maken van Weight & balance om een unieke playlist te genereren.
Afbeelding
Gebruikersavatar
NCR
***
Berichten: 56
Lid geworden op: 04 mei 2011, 11:39
SAM-versie: 2023.1
Database: MySQL
Windows: 10

Re: reset weight & balance

Ongelezen bericht door NCR »

Zoooooo pet af Wout toppie echt bedankt ! We gaan ermee aan de slag. Nogmaals bedankt.
Gebruikersavatar
radioomega
******
Berichten: 286
Lid geworden op: 18 dec 2020, 22:20
SAM-versie: 2025.3
Database: MariaDB
Windows: 11
Locatie: dordrecht
Contacteer:

Re: reset weight & balance

Ongelezen bericht door radioomega »

hoi

als de mp3 in power hits zet
en ik klik op Reset Weight Balance dan kom alle mp3 s op power hit op 100 % power hit
dat werk wel en ik merk ook dat nu de mp3 s draait wat die nog niet had gedraait
Plaats reactie
  • Vergelijkbare Onderwerpen
    Reacties
    Weergaves
    Laatste bericht