Autore Topic: Timer dispettoso.  (Letto 2612 volte)

Offline Berserker79

  • Grande Gambero
  • ***
  • Post: 201
    • Mostra profilo
Timer dispettoso.
« il: 01 Agosto 2010, 03:19:02 »
Ciao, sto scrivendo un programmino e utilizzo il componente timer per riprodurre un suono alla frequenza da me desiderata.
Se il delay del timer è di un secondo, funziona tutto regolare, ma se comicio a diminuirlo portandolo a 500 ms, allora la riproduzione del suono non avviene
più in maniera costante, ma si avvertono delle irregolarità nel tempo di riproduzione.
Per riprodurre il suono, ho dichiarato un oggetto sound che poi riproduco tramite il metodo play() nell'evento generato dal timer.
Grazie anticipatamente per l'aiuto. Ciao.

Offline ealmuno

  • Maestro Gambero
  • ****
  • Post: 388
    • Mostra profilo
    • http://www.ealmuno.com
Re: Timer dispettoso.
« Risposta #1 il: 01 Agosto 2010, 10:04:38 »
accanto al componente c'è una dicitura che dice "non finito ma stabile" forse è solo quello il problema, prova ad utilizzare metodi alternativi tipo da shell.
il mio nuovo sito : ealmuno.com

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Timer dispettoso.
« Risposta #2 il: 01 Agosto 2010, 12:32:30 »
Ciao, sto scrivendo un programmino e utilizzo il componente timer per riprodurre un suono alla frequenza da me desiderata.
Se il delay del timer è di un secondo, funziona tutto regolare, ma se comicio a diminuirlo portandolo a 500 ms, allora la riproduzione del suono non avviene
più in maniera costante, ma si avvertono delle irregolarità nel tempo di riproduzione.
Per riprodurre il suono, ho dichiarato un oggetto sound che poi riproduco tramite il metodo play() nell'evento generato dal timer.
Grazie anticipatamente per l'aiuto. Ciao.

Nel tuo stesso problema sono incappato anche io....purtroppo pare che la gestione di frequenza troppo alte sia mal supportata dall'oggetto timer. Se non ricordo male a tempo suo ricorsi a WAIT....certo, non è la più elegante delle soluzioni ma bene o male funzionava. Anche WAIT però al di sotto di una certa frequenza fa le bizze quindi fai delle prove approfondite.

Per curiosità, qual'è la frequenza del tuo computer?

Offline Berserker79

  • Grande Gambero
  • ***
  • Post: 201
    • Mostra profilo
Re: Timer dispettoso.
« Risposta #3 il: 01 Agosto 2010, 12:44:41 »
Ho provato anche io con il WAIT, ma anche così a frequenze "altine" c'è lo stesso problema.
Il mio pc monta un AMD 64 X2 6000+ a 3,1 GHz.
Forse potrei risolvere il problema utilizzando il parametro loop per il metodo play, ma dovrei realizzare un file audio con la durata giusta per ogni frequenza desiderata e poi
non potrei gestire tante altre cosucce interessanti che avevo in mente.
Che amarezza, mi sà che dovrò arrendermi......

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Timer dispettoso.
« Risposta #4 il: 01 Agosto 2010, 16:18:25 »
Potresti allegare l'esempio?
Visita il mio sito personale: http://www.leonardomiliani.com

Offline Berserker79

  • Grande Gambero
  • ***
  • Post: 201
    • Mostra profilo
Re: Timer dispettoso.
« Risposta #5 il: 01 Agosto 2010, 19:17:06 »
Cerrrrrrrrrrto. Il programma mira ad essere un metronomo digitale.
E' ancora nella fase iniziale, infatti non ho implementato la scelta dei BPM e delle battute.
La frequenza di riproduzione del suono al momento la gestico manualmente dall'IDE prima di eseguire il programma.
Cmq è già sufficente per mostrare il problema segnalato.

Offline Will32

  • Maestro Gambero
  • ****
  • Post: 273
  • Evviva Linux e la Programmazione
    • Mostra profilo
    • TuttoComputer
Re: Timer dispettoso.
« Risposta #6 il: 01 Agosto 2010, 20:48:10 »
Con una shell potresti risolvere il problema anche perchè, se il componente non è ancora finito, potrebbe essere quello il problema .
con WAIT senza il timer dovrebbe funzionare, hai provato ?  :D

Visita le comunità di Gambas, programma e diventa nostro amico :2birre:

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Timer dispettoso.
« Risposta #7 il: 01 Agosto 2010, 21:26:05 »
hai provato ad utilizzare canali diversi se il suono da riprodurre ha un tempo maggiore del tempo impostato sul timer?

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Timer dispettoso.
« Risposta #8 il: 01 Agosto 2010, 23:29:10 »
Boh, non capisco... a me sembra funzionare nel senso che se imposto il timer con delay a 1000, 500 o 250 per esempio io avverto la differenza senza disturbi come quelli da te menzionati. Non dipenderà mica dal server sonoro in uso? Che distro utilizzi?
Visita il mio sito personale: http://www.leonardomiliani.com

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Timer dispettoso.
« Risposta #9 il: 02 Agosto 2010, 00:00:50 »
Con una shell potresti risolvere il problema anche perchè, se il componente non è ancora finito, potrebbe essere quello il problema .
con WAIT senza il timer dovrebbe funzionare, hai provato ?  :D

Mi pare di capire che il timer vuole essere il più preciso possibile e l'uso della SHELL, come discusso in altri topic, porta dei ritardi non voluti. Suggerire l'uso della SHELL deve essere l'ultima dele soluzioni poichè abbiamo un linguaggio e dobbiamo cercare di sfruttarlo fin quando possibile...se continuaiamo ad usare la shell tanto conviene programmare in bash... :)

Offline Berserker79

  • Grande Gambero
  • ***
  • Post: 201
    • Mostra profilo
Re: Timer dispettoso.
« Risposta #10 il: 02 Agosto 2010, 07:28:06 »
hai provato ad utilizzare canali diversi se il suono da riprodurre ha un tempo maggiore del tempo impostato sul timer?
Non ho provato a cambiare il canale, anche perchè non so come si faccia. Però il suono da riprodurre l'ho ridotto proprio per escludere quanto da te menzionato.

Boh, non capisco... a me sembra funzionare nel senso che se imposto il timer con delay a 1000, 500 o 250 per esempio io avverto la differenza senza disturbi come quelli da te menzionati. Non dipenderà mica dal server sonoro in uso? Che distro utilizzi?

Uso ubuntu 10.04 64 bit. Anche io avverto la variazione di frequenza, ma fra la riproduzione di un suono e quello successivo, non è sempre costante il lasso di tempo trascorso.
Dato che lo scopo del programma è quello di riprodurre il suono alla frequenza desiderata costantemente nel tempo per permettere a chi studia musica di esercitarsi, questa irregolarità rende di fatto inutile il programma.
Posso provare ad emulare il programma da terminale per verificare se il problema è del timer di gambas o del componente sound. Se avete dei suggerimente in tal senso sono ben accetti. Ciao.

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Timer dispettoso.
« Risposta #11 il: 02 Agosto 2010, 10:50:05 »
Se non stai usando il beeper interno, ma la scheda audio, è molto probabile che il driver abbia dei problemi del tipo da te segnalato.

Se ne hai la possibilità, prova su un altro pc, anche se una prova l'ha già fatta Leo con successo, il che indica che con molta probabilità il problema sia proprio causato dai driver...

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: Timer dispettoso.
« Risposta #12 il: 02 Agosto 2010, 13:38:37 »
io ho provato sul mio pc e sento anch'io delle irregolarità. Senza mettere in discussione le capacità musicali di Leo a volte non tutti sono in grado di percepire delle piccole irregolarità di frequenza (intesa come durata tra beep e beep). Forse non è il problema di Leo, forse sul suo sistema il prog fa veramente il suo dovere. Io suggerirei di provare con il tuo orecchio su più pc e magari di registrare e misurare su un audio editor la distanza tra i beep.
Matteo DoubleMM Mion

Offline Will32

  • Maestro Gambero
  • ****
  • Post: 273
  • Evviva Linux e la Programmazione
    • Mostra profilo
    • TuttoComputer
Re: Timer dispettoso.
« Risposta #13 il: 02 Agosto 2010, 15:49:34 »
Puo anche essere un problema del gestore audio ???  ???

Visita le comunità di Gambas, programma e diventa nostro amico :2birre:

Offline Berserker79

  • Grande Gambero
  • ***
  • Post: 201
    • Mostra profilo
Re: Timer dispettoso.
« Risposta #14 il: 02 Agosto 2010, 18:57:41 »
Dal mio pc su cui ho scritto il programma, ho creato un pacchetto di installazione e l'ho installato su di un altro pc.
Ma anche li stesso problema.
Vorrei capire se il problema sta nel timer o nella classe Sound che al momento di riprodurre il suono perde tempo a trovare un canale libero.
Comunque se nel metodo play utilizzo il parametro loop, il suono viene emesso perfettamente, quindi "basterebbe" creare un file audio della durata giusta per ogni frequenza e impostare il parametro loop a -1 per una riproduzione infinita.
Soluzione poco elegante ma sicuramente funzionante.