vraagje

Cross-fade, ClockWheel, Weight, Playlist Rules, etc..
anita

vraagje

Ongelezen bericht door anita »

goede morgen ik draai al een tijdje met sam 3 maar heb problemen met de playlist er komen telkens de zelfde nummers voor bij hoe kan dat? Heb de playlistrotatie op standaard staan.

Graag hoor ik hierover

groetjes Anita
Gebruikersavatar
Kees
Beheerder
Berichten: 3186
Lid geworden op: 28 nov 2005, 22:07
SAM-versie: 4.2.2.*
Database: MySQL
Windows: 11
Locatie: Bergen op Zoom
Contacteer:

Re: vraagje

Ongelezen bericht door Kees »

Moet we even wat meer gegevens hebben hoe je de muziek draait.
Met clockwheel of PAL scripts.
anita

Re: vraagje

Ongelezen bericht door anita »

we draaien met clockwheel
Gebruikersavatar
Kees
Beheerder
Berichten: 3186
Lid geworden op: 28 nov 2005, 22:07
SAM-versie: 4.2.2.*
Database: MySQL
Windows: 11
Locatie: Bergen op Zoom
Contacteer:

Re: vraagje

Ongelezen bericht door Kees »

Zet deze eens online !
anita

Re: vraagje

Ongelezen bericht door anita »

heb het even overgetypt:

Cat ['Tracks'].Queuebottom (smLemminglogic, EnforceRules);
Cat ['Music (All) ' ]. QueueBottom (smLRPA, EnforceRules);

heb de playlistrotation staan op:

Same album : 60
same artist : 120
same song or title : 240

5 Queue

hoop dat het zo duidelijk is
groetjes Anita
Gebruikersavatar
Kees
Beheerder
Berichten: 3186
Lid geworden op: 28 nov 2005, 22:07
SAM-versie: 4.2.2.*
Database: MySQL
Windows: 11
Locatie: Bergen op Zoom
Contacteer:

Re: vraagje

Ongelezen bericht door Kees »

Code: Selecteer alles

Cat ['Tracks'].Queuebottom(smLRP, EnforceRules);
Cat ['Music (All)'].QueueBottom(smLRP, EnforceRules);
anita

Re: vraagje

Ongelezen bericht door anita »

dat moet het volgens jouw zijn??
en wat vind je van de playlist rotation invulling?
zag op de pps de deze hoger is ingevuld
60
1440
720
2880

groetjes Anita
Gebruikersavatar
Kees
Beheerder
Berichten: 3186
Lid geworden op: 28 nov 2005, 22:07
SAM-versie: 4.2.2.*
Database: MySQL
Windows: 11
Locatie: Bergen op Zoom
Contacteer:

Re: vraagje

Ongelezen bericht door Kees »

Ligt er maar net aan hoeveel muziek er in de cat. staat.
Je moet dit berekenen naar de cat. met het laagste aantal nummers.
FataMorgana

Re: vraagje

Ongelezen bericht door FataMorgana »

Kees schreef:

Code: Selecteer alles

Cat ['Tracks'].Queuebottom(smLRP, EnforceRules);
Cat ['Music (All)'].QueueBottom(smLRP, EnforceRules);
In plaats van een nieuw topic, stof ik in dit geval een iets ouder topic maar even af want ik snap nog steeds niet alles van het Clockwheel en de manier waarop SAM daarmee de volgorde van de liedjes bepaalt.

Kees, jij promoot altijd "smLRP" terwijl je een beetje zegt dat er niet echt regels gelden in dat geval.

Ik weet niet precies waarom het bij mij nu wat minder lekker loopt (CroatiaHrvatska) maar ik krijg tegenwoordig soms opmerkingen dat veel platen uit de playlist (zo'n 4500 op dit moment) nooit voorbij komen, tegenover sommige meerdere keren per dag!
Er luisteren tegenwoordig mensen heel de dag dus zij kunnen het weten... :-D

Ik heb alles staan op: "smRandom enforcerules".

Zou je denken dat het met smLRP veel beter gaat en zoja, is daar een verklaring voor?

"smWeighted" zou theoretisch toch het beste kunnen zijn omdat elke song steeds "geteld" wordt als die wordt gedraaid?
Maar dit raadde je meestal af.

Ik zou voor de grap wel eens een php-scriptje willen hebben waarin een zeg maar Top 100 van gedraaide platen komt, met bovenaan uiteraard de meest gedraaide (dus niet request, gewoon gedraaide songs). Leuk voor de controle. Maar dat valt buiten dit topic. :wink:
Gebruikersavatar
Kees
Beheerder
Berichten: 3186
Lid geworden op: 28 nov 2005, 22:07
SAM-versie: 4.2.2.*
Database: MySQL
Windows: 11
Locatie: Bergen op Zoom
Contacteer:

Re: vraagje

Ongelezen bericht door Kees »

Goed dat je dit weer even aan haalt want n.a.v. van een ander topic ben ik aan het proefdraaien met smWeighted.
Even kijken hoe dit uitpakt want ik ben n.l. erg benieuwd wat er gebeurt als een nummer een weighted van 10 of lager heeft bereikt.
Theoretisch gezien zou dit met een cat. van 400 files nog vrij lang moeten duren.
Afbeelding
FataMorgana

Re: vraagje

Ongelezen bericht door FataMorgana »

Ha ha, je bent er zelf dus ook nog niet helemaal uit...
Nou ja, voor CroatiaHrvatska lijkt het simpel: ik heb maar 1 categorie: kroatische muziek.
4500 songs...
Ben alleen benieuwd of SAM inderdaad steeds kiest welke nog het meeste punten heeft.
Theoretisch zou je dan een plaat pas na 4499 andere songs weer een keer langs horen komen...

(Geloof er niks van. :-D )
Gebruikersavatar
Wout
Beheerder
Berichten: 3522
Lid geworden op: 03 dec 2007, 14:17
SAM-versie: 2019.3
Database: MariaDB
Windows: 11
Locatie: West-Brabant
Contacteer:

Re: vraagje

Ongelezen bericht door Wout »

U vraagt, wij draaien. :D
FataMorgana schreef: Ik zou voor de grap wel eens een php-scriptje willen hebben waarin een zeg maar Top 100 van gedraaide platen komt,
met bovenaan uiteraard de meest gedraaide (dus niet request, gewoon gedraaide songs).
Je hebt niet voldoende permissies om de bijlagen van dit bericht te bekijken.
Afbeelding
Gebruikersavatar
Kees
Beheerder
Berichten: 3186
Lid geworden op: 28 nov 2005, 22:07
SAM-versie: 4.2.2.*
Database: MySQL
Windows: 11
Locatie: Bergen op Zoom
Contacteer:

Re: vraagje

Ongelezen bericht door Kees »

Ik ben nu met een schone lei begonnen.
Ik heb de Weighted van alles songs op 90 gezet, de Play count op 0 en Reset Weight balance uitgevoerd.
Ben benieuwd hoeveel verschil er is met Weighted en LRP.
FataMorgana

Re: vraagje

Ongelezen bericht door FataMorgana »

// weer een fijn product van wout :)
:lol: :up:

Meteen uitgeprobeerd:
http://radio.croatiahrvatska.eu/samPHPweb/hoeveel.php
Dit geldt dan natuurlijk sinds de laatste restart van SAM mag ik aannemen?

Wat me opvalt is dat de meest aangevraagde song ook tevens algemeen het meest gedraaid is!

Dit is heel interessant, als ik nu ga experimenteren met andere rotatie rules ben ik benieuwd of het eerlijker gaat.
Nu komen sommige songs naar verhouding wel veel voorbij inderdaad!

@Kees: Dan horen we over een paar weken wel hoe de Top 100 er bij jou uitziet? :-D

Overigens zou bij een goede balans niet veel verschil mogen zijn tussen de nummer 1 en de nummer 100! :wink:
EDIT: en dit is in de lagere regionen ook zo! Dus zo slecht is het niet!
Gebruikersavatar
Wout
Beheerder
Berichten: 3522
Lid geworden op: 03 dec 2007, 14:17
SAM-versie: 2019.3
Database: MariaDB
Windows: 11
Locatie: West-Brabant
Contacteer:

Re: vraagje

Ongelezen bericht door Wout »

FataMorgana schreef: Dit geldt dan natuurlijk sinds de laatste restart van SAM mag ik aannemen?
Hij telt vanaf het moment dat SAM is geïnstalleerd op je pc,
tenzij je op 'clear history' klikt of een re-install hebt gedaan, dan begint het opnieuw met tellen.
Afbeelding
Gebruikersavatar
Kees
Beheerder
Berichten: 3186
Lid geworden op: 28 nov 2005, 22:07
SAM-versie: 4.2.2.*
Database: MySQL
Windows: 11
Locatie: Bergen op Zoom
Contacteer:

Re: vraagje

Ongelezen bericht door Kees »

Ik heb alle waardes op "0" gezet.
Komt bijna overheen met al je muziek uit de database halen en terug invoeren.
Ik heb er een top 10 van gemaakt en staat op de site.
Gebruikersavatar
cyberneticorganism
VIP
Berichten: 941
Lid geworden op: 11 jun 2008, 18:14
SAM-versie: 2025.3
Database: MySQL
Windows: Virtual machine
Contacteer:

Re: vraagje

Ongelezen bericht door cyberneticorganism »

Ik ben genoodzaakt om elke week 1 of 2 keer de map met nieuwe muziek gehaal te verwijderen uit SAM (remove from all). Dit omdat ik deze wekelijks update, en het auto rescan PAL script niet werkt. Ik gooi de nieuwe mp3's in een map met circa 300/400 muziekbestanden (categorie nieuwe muziek). En ik kan in SAM de files niet los toevoegen, omdat ik echt niet meer weet welke 30 mp3's ik heb toegevoegd tussen die 300/400 mp3 files :rolleyes:
Gebruikersavatar
Kees
Beheerder
Berichten: 3186
Lid geworden op: 28 nov 2005, 22:07
SAM-versie: 4.2.2.*
Database: MySQL
Windows: 11
Locatie: Bergen op Zoom
Contacteer:

Re: vraagje

Ongelezen bericht door Kees »

Ik weet niet of jullie wel eens in de Help van SAM zitten te snuffelen maar daar kwam ik een eigenaardig PAL script tegen.
Heb deze maar even aan geslingerd.
Ik heb nu de clockwheel uitgezet en de waardes bij Clockwheel op 0 gezet.
Aantal nummers in de queue staat nu op 1.
Ben benieuwd hoe SAM er mee omgaat !
Hier een exacte copie !
Alle troep zoals teksten staan er nog in !

Code: Selecteer alles

PAL.Loop := True;



// Set some global variables to be used throughout the script
  var
   D, D2, D3 : TDataSet;
  var
   scale, points, increments,
   highest_point, songID, count : Integer;
  var
   lowest_point, point_increment, balance, penalty : Float;

  var
   date : DateTime;



  // SET ALL SONG balanceS TO ZERO
  ExecSQL('UPDATE songlist SET balance = 0',[]);



{*******************************************************************************
              START OF RULE 1
*******************************************************************************}
  var current_time :  DateTime = now;
  var three_hours_ago :  DateTime = T['-03:00:00'];
{******************************************************************************
RULE 1: NO SONG REPEATS WITHIN 3 HOURS
This rule applies severe penalties to songs played in the last three hours.
The most recently played tune receives the heaviest penalty. A song played
2 1/2 hours ago receives a lighter penalty. For every second closer to NOW that
a song played, its penalty increases by about 9.25 points.
******************************************************************************}
  PAL.LockExecution;
// SET PENALTY VARIABLES
scale := 100;
points := 100;
increments := 10800;      // the number of sec's in 3 hours
lowest_point := points - ((points / 100) * scale);
highest_point := points;
point_increment := (highest_point - lowest_point) / increments;



D:=Query('SELECT ID, date_played FROM songlist WHERE date_played > :now', [three_hours_ago], True);
D.First;
While Not D.EOF Do
Begin
 // SET NEW balanceS FOR ALL SONGS PLAYED WITHIN LAST 3 HOURS
 date := D['date_played'];
 penalty := ((((date * 86400) - (three_hours_ago * 86400)) * point_increment) + lowest_point);
 ExecSQL('UPDATE songlist SET balance = balance + :penalty WHERE ID = :ID', [penalty, D['ID']]);
 D.Next;
End;
D.Free;
PAL.UnlockExecution;
WriteLn('Rule 1 complete.');
{*******************************************************************************
              END OF RULE 1
*******************************************************************************}






{*******************************************************************************
              START OF RULE 2
*******************************************************************************}
  var lastgenre : String;



{*******************************************************************************
RULE NUMBER 2: DIFFERENT GENRE FOR EACH PLAY
Checks genre of the currently playing song and penalizes all songs that are
from the same genre. This just adds a little variety, especially if you are
running a Top 40 station. For instance it will make sure you don't have two
rap songs back to back, or two pop songs. For this to really work well you
should take the time to go through all of your songs and fine tune the genre
tags. Instead of using the "Rock" genre for all of your fast guitar songs,
sort them into "Hard Rock", "Metal", "Death Metal" etc. Sort your "Rap" genres
into "Hip Hop", "Freestyle", "Gangsta", etc.
Also, this rule only works if you leave SAM on "Ghost Queue" mode, instead
of keeping more than one track in the queue. This rule only applies to the
currently playing song therefore, if you're adding the 5th song to the queue,
only the 5th song will be of a different genre from the one currently playing.
*******************************************************************************}
  PAL.LockExecution;
  penalty := 20;
  // GET GENRE OF LAST SONG PLAYED
  D := Query('SELECT genre FROM songlist ORDER BY date_played DESC LIMIT 1', [], True);
    lastgenre := (D['genre']);
  D.Free;
  // PENALIZE ALL SONGS WITH MATCHING GENRE
  ExecSQL('UPDATE songlist SET balance = balance + :penalty WHERE genre = :lastgenre',[penalty, lastgenre]);
  PAL.UnlockExecution;
  WriteLn('Rule 2 complete.');
{*******************************************************************************
              END OF RULE 2
*******************************************************************************}






{*******************************************************************************
              START OF RULE 3
********************************************************************************
********************************************************************************
RULE 3: NO ARTIST REPEATS WITHIN AN HOUR
All artists that have played in the last 60 minutes will be penalized. Currently
a blanket value of 100 points is assigned to all artists played in the last hour.
(This rule could be made better by checking exactly how long ago that artist was
played and penalizing it differently for each second closer to NOW that the
artist was played - much like the way RULE 1 penalizes songs.I'll probably play
with this a bit after some coffee.)
*******************************************************************************}
PAL.LockExecution;
penalty := 100;
//GRAB ALL ARTISTS FROM LAST HOUR
D := Query('SELECT DISTINCT artist FROM historylist WHERE date_played > :now ORDER BY date_played DESC',[T['-01:00:00']],True);
D.First;
while not D.EOF do
begin
  ExecSQL('UPDATE songlist SET balance = balance + :penalty WHERE artist = :artist',[penalty, D['artist']]);
  D.Next;
end;
D.Free;
PAL.UnlockExecution;
WriteLn('Rule 3 complete.');
{*******************************************************************************
                 END OF RULE 3
********************************************************************************



{*******************************************************************************
              START OF RULE 4
********************************************************************************
********************************************************************************
RULE 4: CHECK QUEUE LIST
This rule double checks the queue list. Any songs that are already queued will
be assigned some penalty points (currently set at 100).
*******************************************************************************}
  PAL.LockExecution;
  penalty := 100;
  //GRAB ALL SONGS FROM QUEUE LIST
  D := Query('SELECT songID FROM queuelist',[],True);
  D.First;
   while not D.EOF do
   begin
     D3 := Query('SELECT artist from songlist WHERE ID = :songID', [D['songID']], True);
     ExecSQL('UPDATE songlist SET balance = balance + :penalty WHERE artist = :artist',[penalty, D3['artist']]);
     D3.Free;
     D.Next;
   end;
  D.Free;



  PAL.UnlockExecution;
  WriteLn('Rule 4 complete.');
{*******************************************************************************
              END OF RULE 4
 ********************************************************************************}









{*******************************************************************************
              START OF RULE 5
********************************************************************************}
var x : Integer;
{*******************************************************************************
RULE 5: Check number of plays
This rule checks how many times each song has played. The more a song has been
played the higher the penalty will be. If a song has never played it will end up
with a lower balance than the one that has played the most.
********************************************************************************}



PAL.LockExecution;
scale := 100;
points := 100;



// Get highest number of song plays
D := Query('SELECT DISTINCT count_played from songlist ORDER BY count_played DESC LIMIT 1', [], True);
increments := D['count_played'];
D.Free;
lowest_point := points - ((points / 100) * scale);
highest_point := points;
point_increment := (highest_point - lowest_point) / increments;
ExecSQL('UPDATE songlist SET balance = balance + (count_played * :point_increment) ', [point_increment]);
PAL.UnlockExecution;
WriteLn('Rule 5 complete.');
{*******************************************************************************
              END OF RULE 5
********************************************************************************}









{*******************************************************************************
              START CHOOSE BEST SONG
********************************************************************************
********************************************************************************
This section grabs the song with the lowest balance. If more than one song
shares the lowest balance, a random one will be chosen with that score.
This section is currently disabled. If you do not have a complex script set up
for category based rotation, you can enable this section to do the song
selection for you. You will be amazed at the consistent results! To enable this
section, just put a closed bracket at the end of the line below this text, just
after the long series of asterisks.
*******************************************************************************}
  WriteLn('Choosing best song...');
  PAL.LockExecution;
 // GRAB LOWEST FINAL balance
  D := Query('SELECT balance FROM songlist ORDER BY balance ASC', [], True);
    balance := D['balance'];
  D.Free;
  // Count number of songs with this balance
  D:= Query('SELECT filename, balance FROM songlist WHERE balance = :balance ORDER BY RAND() LIMIT 1', [balance], True);
  // Que up selected song
  Queue.AddFile(D['filename'],ipBottom);
  WriteLn('Adding: ' + D['filename'] + ' to queue.');



  D.Free;
  PAL.UnlockExecution;
{*******************************************************************************
              END CHOOSE BEST SONG
*******************************************************************************}
  // Wait for song to play before running again from the top
  PAL.WaitForPlayCount(1);
FataMorgana

Re: vraagje

Ongelezen bericht door FataMorgana »

We horen graag hoe die bij jou reageert Kees!

Alleen wel jammer dat ik nu geen uitslag krijg van het "weighted" verhaal!
Nu weet ik nog niet wat dit doet. :rolleyes:
Gebruikersavatar
Kees
Beheerder
Berichten: 3186
Lid geworden op: 28 nov 2005, 22:07
SAM-versie: 4.2.2.*
Database: MySQL
Windows: 11
Locatie: Bergen op Zoom
Contacteer:

Re: vraagje

Ongelezen bericht door Kees »

Ik snap het hele verhaal nog niet achter die Weighted.
Moet dat echt eens goed gaan uitspitten.
Dit script kijkt naar de playcount en Weight balance.
Lijkt me ook erg interessant.
Plaats reactie
  • Vergelijkbare Onderwerpen
    Reacties
    Weergaves
    Laatste bericht