GIUBBE SOFTWARE
 

Guida psMenu

libro
Menu
AttivoDocumenti e FAQ
(guida a psMenu)
possibile scelta link

 

Guida a psMenu 1.5.x (download)

Cosa serve per seguire questa guida

Dovete avere il programma psMenu con il suo manuale e un programma in grado di aggiungere un'intestazione wav ad un file mp3, in modo da ottenere un wav compresso. Un programma di questo genere è WaveMp3.
Vi serve inoltre il blocco note di Windows, un editor grafico (io ho usato GIMP) e un po' di pazienza

Cos'è psMenu
Psmenu interpreta uno script che descrive un menù simile a quelli presenti nel DVD, con la differenza che non è possibile aggiungere animazioni in una pagina, ma solo tra una pagina e l'altra. Il menù può anche essere di tipo testuale e i due tipi di rappresentazione (testuale e grafica) possono essere presenti contemporaneamente. Una volta che lo script è stato scritto, psMenu consente di memorizzare un certo numero di azioni (macro) per poi ripeterle in un secondo momento.
PsMenu permette anche di creare delle semplici playlist senza mostrare alcun menù. Vista la facilità di questo metodo di utilizzo vi rimando agli esempi allegati al programma.

Scopo della guida
Questa guida vi insegnerà a creare uno script partendo da zero. Per farlo vi guiderò passo-passo alla creazione di un menù con possibilità di scelta della lingua e dei sottotitoli, con possibilità di selezionare i capitoli e con una sezione extra che permetterà di sfogliare un album fotografico. Per quanto riguarda i capitoli useremo una caratteristica unica per questo tipo di programmi: la possibilità di avviare un solo specificato capitolo e solo quello, quindi la visione terminerà alla fine del capitolo e non alla fine del filmato. Questo, unito alla possibilità di utilizzare le macro, permette di creare una playlist di capitoli da vedere nella sequenza desiderata.
Il menù che creeremo con questa guida sarà testuale con la parte degli extra in grafica, ma vi insegnerò subito a creare un menù DVD like. Vedrete subito che l'unica differenza tra un menù testuale e uno grafico è la presenza delle immagini, lo script e la logica che ci sta dietro è esattamente la stessa. Ovviamente il menù grafico richiede un po' più di tempo perché bisogna realizzare gli hot spot, ma andiamo con ordine.

Preparazione delle immagini per un menù DVD like
La prima cosa da avere è una serie di immagini, una per ogni pagina che comporrà il menù, L'immagine deve essere in formato jpeg. Dato che per motivi di copyright non vi posso mostrare un vero menù di DVD e per motivi di privacy non posso neanche mostrare altri menù, dovrò riprendere quello fornito come esempio, ma tanto una volta imparato, il limite sarà imposto solo dalla vostra fantasia.
Darò per scontato che il vostro editor grafico lo sapiate usare, anche perché vi serve per creare le immagini delle singole pagine. Una volta che avete creato la serie di immagini che rappresenterà il menù è giunto il momento di estrapolare da ciascuna di essa le immagini sensibili, cioè quelle che si attiveranno al passaggio del mouse. Queste immagini, che chiamerò hot spot, dovranno anche contenere delle informazioni visive che indicano all'utente che quella porzione di immagine è selezionabile. Inoltre gli hot spot dovranno essere messi tutti insieme in modo da formare loro stessi un immagine. L'esempio chiarirà subito il concetto.

Immagine principale
hot spot

Dall'immagine di sinistra sono stati copiati nell'immagine di destra gli elementi sensibili, questi sono stati modificati in modo tale da essere evidenziati. Volendo è anche possibile non creare l'immagine contenete gli hot spot, in questo caso la parte selezionabile sarà evidenziata solo dal cambiamento del mouse.
Una volta che abbiamo le due immagini (o solo la principale, nel caso in cui non di desiderano hot spot particolari) si deve creare un file da passare a psMenu che indica come interpretare gli hot spot. In pratica bisogna indicare al programma dove sono gli hot spot. Per farlo è sufficiente utilizzare il programma installato insieme a psMenu, quello che da questa versione si chiama "hot spot editor" (che fantasia! ^_^).
All'avvio del programma si presenta la maschera qui sotto e dopo aver caricato le due immagini non ci resta che premere "prepare"

Ci troveremo di fornte all'editor di hot spot

in cui premeremo il tasto "new..."

In questa schermata selezioniamo la porzione di immagine da rendere sensibile. Prima di tutto indichiamo il tipo di selezione, nell'esempio si è scelto lo shape rettangolare, ma è presente anche quello ellittico e irregolare. A questo punto premete il tasto "Edit Shape" e create il vostro hot spot. Nel caso del rettangolo e dell'ellisse la selezione terminerà dopo aver indicato il secondo punto, mentre nel caso di selezione irregolare la selezione terminerà con la pressione del tasto destro del mouse. La grandezza della selezione deve essere analoga (non necessariamente uguale) alla grandezza dell'immagine Hot spot che sostituirà la selezione stessa, come indicato nella figura seguente. Occorre segnarsi il numero indicato in SpotID perché dovrà essere utilizzato all'interno del menù per identificare l'hot spot.
Ora si può inserire un commento in "Hint text", lo stesso commento apparirà nel psMenu. Alla pressione di OK si torna nella schermata precedente e qui, dopo aver evidenziato l'hot spot di nostro interesse, premiamo il tasto "mask.."

In mask action selezionate "mouse over" e spostate la griglia a sinistra in modo da coprire l'immagine che dovrà sostituire la corrispondente immagine dell'immagine principale. A questo punto potete effettuare un test sulla singola selezione, oppure terminare il lavoro e tornare alla schermata principale. Ripete gli stessi passi per tutti gli altri hotspot ed infine salvate il vostro lavoro nel formato HMT (formato testo). Nella finestra iniziale potete effettuare un test su tutta l'immagine in modo vedere se c'è qualche modifica da fare.
Abbiamo finito, ora abbiamo le immagini per un menù DVD like.

Preparazione della musica

Con psMenu è possibile inserire una o più musiche di sottofondo e alcuni effetti in relazione agli eventi associati al menù. Vedremo nel dettaglio dopo come e dove inserire i suoni, ora bisogna prepararli. Per farlo è sufficiente creare i suoni in formato wav o mp3 CBR, se sono wav abbiamo già finito, altrimenti bisogna trasformare il file mp3 CBR in un file wavmp3, cioè un file identico a quello iniziale, ma con un intestazione wave. Per farlo occorre utilizzare il programma WaveMp3 (o simile).

Creazione del menu, parte intestazione

Aprite il blocco note di windows e scrivete queste due righe

[SCRIPT FOR PSMENU]
VER=1.5

La versione dello script, in questo caso, è 1.5. In futuro consultate il manuale per conoscere eventuali nuovi numeri di versioni. E' importante indicare la versione corretta perché è in dipendenza di ciò che potrete o meno usare alcune funzioni di psMenu. Salvate il file con nome primomenu.psmu

Creazione del menu, informazioni generali.

Nello stesso file (primomenu.psmu) subito sotto la direttiva "Ver" aggiungete la seguente riga, è possibile lasciare anche una o più righe vuote. Da ora chiamerò sezioni le parti dello script identificate dalle scritte tra parentesi quadre, e direttive le opzioni per ogni singola sezione.

[MAIN]

In questa sezione scriveremo tutte le opzioni che valgono per tutte le pagine del menù, come i colori, i suoni, gli sfondi e altre inizializzazioni. E' possibile decidere gli sfondi e i colori anche pagina per pagina, se nella pagina non è presente l'apposita direttiva (identica a main, vedi manuale) allora saranno usati i valori impostati qui. Da notare che gli sfondi (WallPaper) e i colori sono ininfluenti nel caso di menù DVD like perché ogni pagina è descritta dalla relativa immagine. La direttiva Sound indica la musica di sottofondo principale, mentre i tre eventi onOpenSheet, onClick, OnMouseEnter indicano rispettivamente il suono da eseguire quando si cambia pagina, quando si clicca un pulsante (o hot spot) e quando il mouse passa sopra un pulsante (non funziona con gli hot spot). Dato che il menù sarà sia testuale che grafico impostiamo i valori per entrambe le modalità, in verità per il menù grafico basta solo impostare a uno la direttiva HotSpot.

Title=Mio film
Directory=.
WallPaper=sfondo.jpg
tile=1
Sound=sound.wav
FontLighColor=blue
FontNormalColor=navy
TitlePageColor=red
TitleColor=Blue
HotSpot=1

per un descrizione dettagliata delle direttive si rimanda al manuale.

Nella sezione MAIN ci sono ancora alcune direttive molto importanti per il funzionamento del menù. Bisogna indicare dove trovare il bsplayer che è il player a cui si appoggia il menù, occorre anche indicare il numero del cd corrente e quante traccie audio ha il filmato.

TrackAudio=2
RunBsPlayFromCD=1
CD=1

La direttiva RunBsPlayFromCD indica di cercare il programma bsplayer su cdrom (=1) o su harddisk (=0), nell'esempio psMenu cercherà bsplayer su cdrom, per conoscere le cartelle in cui viene cercato consulta il manuale. Se invece si indica l'harddisk quale posizione predefinita, il bsplayer viene trovato automaticamente.
Il numero di traccie audio (TrackAudio) deve essere indicato perché il psMenu non è in grado di capirlo dal file avi (o ogm, o mkv) ed è necessario solo per il comando openbsi che vedremo dopo. Infine la direttiva CD è importante perché è con questa informazione che psMenu capisce su quale cdrom cercare i vari file che l'utente richiede.
Ci sono ancora due direttive da prendere in considerazione prima di chiudere questa sezione.

Una caratteristica che rende il programma enormemente flessibile è la possibilità di memorizzare le informazioni. In psMenu 1.5.x è possibile memorizzare fino a 200 informazioni nelle celle numerate da 0 a 199. Chi mastica un po' di programmazione può vedere queste celle come un array di tipo variant, gli altri possono immaginare delle locazioni dove è possibile memorizzare numeri interi o parole.
All'avvio del programma tutte le celle vuote (non contengono alcuna informazione), però a volte è necessario impostare un qualche valore iniziale, per farlo occorre utilizzare la direttiva DefaultMemory.

DefaultMemory=0,0,,_,_LITA,11,06,3,0,,foto_1.jpg ,foto_hot_1.jpg,sel_hot_1.hmt,1

I parametri di DefaultMemory sono il contenuto della memoria e la posizione indica la cella, quindi nell'esempio sopra riportato è come se avessimo scritto:
Memory[0]=0
Memory[1]=0
Memory[2]=""
Memory[3]=_
Memory[4]=_LPD
Memory[5]=11
Memory[6]=06
Memory[7]=3
Memory[8]=0
Memory[9]=""
Memory[10]=foto_1.jpg
Memory[11]=foto_hot_1.jpg
Memory[12]=selhot_1.hmt
Memory[13]=1
Dove il simbolo "" indica la cella vuota (nessun elemento).

Utenti avanzati
Da tenere presente che DefaultMemory="",1 è diverso da DefaultMemory=,1 perché con il primo comando si dice che la cella zero contiene una stringa (parola) vuota, mentre nel secondo la cella zero non contiene nulla. Per intenderci, nel primo caso è come se avessimo scritto Memory[0]="""", mentre nel secondo caso è come se avessimo scritto Memory[0]="".

Se non avete capito il discorso per utenti avanzati, non preoccupatevi. Solo in alcuni casi esiste una reale differenza tra il vuoto e la stringa vuota perché psMenu riesce a capire dal contesto quale dei due valori si deve utilizzare. Quando invece esiste ambiguità il programma vi avvertirà con un chiaro messaggio di errore.
Da notare che "01", "1" e 1 rappresentano il numero intero 1, solo in alcuni casi psMenu li tratterà come se fossero diversi, più avanti vedremo quando ciò accadrà.
L'ultima direttiva è VisMemory, indica a psMenu di mostrare a video il contenuto di alcune celle di memoria. Le celle di memoria saranno mostrate ogni volta che vengono modificate
VisMemory=3,4

Visualizzazione della memoria

Questa sezione è facoltativa, è necessaria solo se si desidera visualizzare dei commenti in base al contenuto della memoria. I commenti sono visualizzati in alto a sinistra, con le caratteristiche indicate.
Un uso tipico di questa sezione è l'emulazione del comportamento di alcuni lettori di DVD che mostrano su schermo la lingua e il sottotitolo scelto dall'utente. Le righe qui sotto fanno esattamente quello appena descritto.

[FORMAT]
Delay=5
Transparent=1
ColorMemory=yellow
_SSUO=Sottotitoli Commento suo
_SPD=Sottotitoli presa diretta
_LSUO=Commento suo
_LPD=Commento in presa diretta
_=Nessun sottotitolo

Le prime tre direttive sono ovvie e comunque si può consultare il manuale. Le ultime sono in numero variabile ed indicano cosa visualizzare in corrispondenza di un determinato contenuto della memoria. Per esempio, se la cella contiene la parola "_LPD" sarà mostrato il commento "Commento in presa diretta", se la cella contiene un valore non elencato esso sarà mostrato senza alcuna modifica.

Descrizione delle pagine

Siamo così arrivati alla parte più significativa e in un certo modo complessa di psMenu. Questa sezione si chiama [SHEET n] dove n è il numero della pagina. La pagina numero 1 deve sempre esistere perché è la pagina principale del menù, le altre possono avere una qualsiasi numerazione.
La sezione è essenzialmente divisa in due parti, la prima descrive cosa visualizzare nella pagina (il come è stato deciso in main), mentre la seconda parte descrive come rispondere ad una scelta dell'utente.

Descrizione delle pagine, menu testuale (da leggere anche si creano solo menu dvd like)

Occorre visualizzare sia il nome della pagina che le singoli voci che compongono il menù. Qui ognuno può scrivere quello desidera con l'unica limitazione di non usare più di 20 voci (pulsanti). Non ci si deve preoccupare di come saranno visualizzati perché il programma adatta le dimensioni e le posizioni in base al numero di pulsanti presenti e alla risoluzione dello schermo.
La direttiva TitlePage indica il titolo della pagina, in questo caso, con la fantasia che mi contraddistingue, sarà

[SHEET 1]
TitlePage=Menu principale

Di seguito si dovranno aggiungere le voci del menù. In questo caso si è deciso di spostare tutte le impostazioni in una pagina separata, quindi qui abbiamo solo tre possibili scelte: la visione del filmato, le opzioni, e l'uscita dal menù.
La direttiva che descrive il pulsante (la voce di menù) è Item, ed è composta da due parti, ma andiamo con ordine. Per descrivere le tre voci è sufficiente scrivere quanto segue

Item01="Avvia il filmato"
Item02="Opzioni"
Item03="Chiudi menu"

La numerazione dell'item indica l'ordine in cui dovranno essere visualizzate le singoli voci, inoltre la numerazione deve essere sempre di due cifre, non si può scrivere item1="avvia il filmato".

Se si pensa alla voce del menù come ad un pulsante ci si rende conto che manca qualcosa, manca la parte che descrive cosa fare in corrispondenza della pressione del pulsante. Ad ogni pulsante deve essere associato un comportamento, che poi sarà descritto nei dettagli nella seconda parte della sezione [sheet n]. In questa prima parte si dovrà inserire solo il numero che identifica le azioni da eseguire. Quindi il vero script per la prima parte della sezione [sheet n] è

Item01="Avvia il filmato"|Action=00
Item02="Opzioni"|Action=01
Item03="Chiudi menu"
|Action=02

Dove il numero dopo Action= identifica l'elenco delle azioni da intraprendere alla pressione del pulsante. Il numero deve avere almeno due cifre e non può essere 99.

Descrizione delle pagine, menu DVD like

In questo caso non serve indicare un titolo per la pagina, bisogna caricare i tre file che descrivono la grafica della pagina. I tre file sono quelli vista in precedenza quando si è descritto il modo di creare gli hot spot, ecco come appare la sezione di un menù DVD like

[SHEET 1]
HotSpotImg=MainMenu.jpg
HotSpotMask=HotMainMenu.jpg
HotSpotDef=MainSel.hmt

Ora occorre associare le azioni agli hotspot. L'identificazione dell'hotspot si fa attraverso il suo numero identificativo (SpotID) e si mette quale argomento di Item:

Item00="1"|Action=10
Item01="2"|Action=15
Item02="3"|Action=20

dove "1" (dell'item00) identifica l'hotspot con SpotID=1 e così via.

Descrizione delle pagine, altre funzioni, in particolare DefaultAction e cache

All'apertura della pagina si può avviare un video ed eventualmente interrompere la musica di sottofondo, per farlo si usa OpenVideo e OnVideoStopMusic, vedi il manuale per i dettagli.

Due caratteristiche molto importanti nelle pagine sono la possibilità di definire un'azione di default e l'uso della memoria, a volte queste caratteristiche vengono usate insieme.
Si può chiedere a psMenu di effettuare una determinata serie di azioni ogni volta che una specifica pagina viene aperta, oppure si può chiedere di cominciare un conto alla rovescia per la scelta di un pulsante (solo menù testuale), si può anche decidere di compiere una determinata azione se non è stata fatta alcuna scelta nel menù per un certo periodo di tempo. La direttiva interessata a tutte queste funzioni è DefaultAction. Questa ha due parametri, il primo indica l'azione da compiere, mentre il secondo indica il tempo da attendere prima di eseguire l'azione. Vediamo nel dettaglio caso per caso.

1. Conto alla rovescia per un pulsante
La direttiva sarà DefaultAction=X,Y dove X è il numero dell'azione da eseguire corrispondente ad un pulsante e Y è numero di secondi dal quale cominciare il conto alla rovescia.
Fino ad ora si è detto che ad ogni pressione del pulsante deve corrispondere un comportamento, si può quindi pensare (e si è scritto) che ad ogni pulsante è associata una serie di azioni, questa associazione si è fatta con la direttiva item, per esempio con

Item01="Avvia il filmato"|Action=00

si associa alla voce 01 l'azione 00, o in modo equivalente, si associa a "Avvia il filmato" l'azione 00. Con DefaultAction si deve pensare al contrario, dato un numero che identifica l'azione si va a vedere a quale voce corrisponde. In questo caso all'azione 00 corrisponde la voce 01, così se volessimo avviare il filmato dopo 5 secondi dall'apertura della pagina possiamo scrivere

DefaultAction=00,5

In questo caso se entro cinque secondi non si muove il mouse o non si fa una scelta diversa nel menu, viene avviata l'azione 00, cioè si avvia il filmato. A video il programma mostrerà un contatore in corrispondenza della voce associata all'azione.
Il conto alla rovescia è utilizzabile solo con i menu testuali.

2. Azione da svolgere all'apertura della pagina
La direttiva sarà DefaultAction=X,0 dove X è il numero dell'azione da eseguire. In questo caso all' azione X non deve corrispondere un pulsante. Nella terminologia del manuale quando ad X non corrisponde alcun pulsante si dice che DefaultAction esegue un'azione invisibile.
In questo caso non è possibile interrompere l'azione e questa sarà sempre eseguita tranne nei casi in cui la direttiva DefaultAction non viene presa in considerazione.

3. Azione da eseguire dopo un determinato periodo di inoperosità.
La direttiva sarà DefaultAction=X,Y dove X è il numero dell'azione da eseguire e Y è un numero maggiore di zero che indica il tempo di inoperosità. Anche in questo caso all'azione X non deve corrispondere un pulsante. Il conteggio del tempo è interrotto e mai più ripreso (fino ad una nuova apertura della pagina) nel momento in cui si preme un pulsante del menu.

Grazie alla memoria è possibile avere anche una combinazione dei tre casi appena esposti, è cioè possibile fare in modo che le diverse volte che si entra nella pagina la direttiva DefaultAction abbia uno dei tre casi sopra riportati. In verità esiste una limitazione, ma la vedremo dopo.

Prima di conclusere il paragrafo bisogna parlare della direttiva cache. Il programma psMenu, su indicazione della direttiva cache, memorizza in una memoria interna il numero della pagina attualmente aperta. Prima di eseguire DefaultAction controlla questa memoria, se trova la pagina la direttiva DefaultAction non viene eseguita.
Per inserire il numero di pagina nella memoria interna occorre che cache abbia il valore 1 e che DefaultAction sia nel primo caso.

All'inizio del paragrafo si è detto che ci sono dei casi in cui la direttiva DefaultAction non viene presa in considerazione, il caso più semplice si presenta quando uno dei due parametri vale -1, l'altro caso è dettato da Cache e forse si è capito qual'è la limitazione a cui accennavo, comunque lo vedremo dopo perchè ora non abbaimo gli strumenti necessari per approfondire.
C'è ancora un caso in cui la direttiva DefaultAction non viene presa in considerazione, per parlarne devo prima accennare ai comandi. I comandi (che vedremo tra poco) sono tutti eseguiti sequenzialmente (con un'unica eccezione) e quindi all'atto dell'apertura della pagina prima si eseguono tutti i comandi eventualmente rimasti in sospeso e poi i comandi indicati da DefaultAction. Se tra i comandi in sospeso ce ne è uno che rimanda in un altra pagina o un salto allora la direttiva DefaultAction non sarà eseguita. Come è possibile che ci siano comandi in sospeso lo vedremo dopo.

Per concludere riporto tutto lo script fin qui descritto

[SCRIPT FOR PSMENU]
VER=1.5

[MAIN]
Title=Mio film
Directory=.
WallPaper=sfondo.jpg
tile=1
Sound=sound.wav
FontLighColor=blue
FontNormalColor=navy
TitlePageColor=red
TitleColor=Blue
HotSpot=1
TrackAudio=2
RunBsPlayFromCD=1
CD=1
DefaultMemory=0,0,,_,_LITA,11,06,3,0,,foto_1.jpg ,foto_hot_1.jpg,sel_hot_1.hmt,1
VisMemory=3,4

[FORMAT]
Delay=5
Transparent=1
ColorMemory=yellow
_SSUO=Sottotitoli Commento suo
_SPD=Sottotitoli presa diretta
_LSUO=Commento suo
_LPD=Commento in presa diretta
_=Nessun sottotitolo

[SHEET 1]
TitlePage=Menu principale
Item01="Avvia il filmato"|Action=00
Item02="Opzioni"|Action=01
Item03="Chiudi menu"
|Action=02

Se c'è qualcosa che non è chiaro rileggi questa parte della guida o il manuale prima di proseguire.

Seconda parte


Licenza Creative Commons
Alcuni diritti riservati. Questa guida è pubblicata sotto una Licenza Creative Commons.
Per un uso diverso da quello indicato nella licenza si prega di contatatre l'autore.