Synchrone/asynchrone

Modeste geedee

XLDnaute Barbatruc
Bonsour,
Pour une fois que je pose une question...
Simple ???
Comment émettre un son périodique (période inférieure à la seconde) genre tic-tac
Façon métronome période modifiable largo à prestissimo
40 à 200 bpm...(1 tic/s à 3+tic/s)

😭😭😭 Difficultés à contourner :
- WAIT suspend le process le temps demandé .

- ONTIME ne semble pas prendre en compte le scheduled time en milliseconde

- Api BEEP est synchrone , le process est suspendu la durée du son, perturbation du déroulement de la macro

Api GetTickCount
dans une boucle While Wend
impossible de capturer la période voulue en milliSeconde

Api SndPlaySound le paramètre sync/async ne semble pas être évalué correctement

Tentatives rédhibitoires :
En feuille de calcul le rafraîchissement d'écran perturbe toutes restitutions

Plus d'infos possible, je poste depuis mon smartphone...
voir version lite

1698774404068.png
 

Pièces jointes

  • Metronome lite.zip
    521.7 KB · Affichages: 5
Dernière édition:

Katido

XLDnaute Occasionnel
Bonjour,

Je réponds un peu tard, mais MIEUX VAUT TARD...

1) Les tempos avec WAIT ou ONTIME, ça ne marche pas en dessous de la seconde (ou alors très mal)

2) Pour la tempo, mieux vaut faire une boucle sur la fonction Timer. C'est pas trop mauvais et je pense que c'est suffisant dans ton cas.

3) Pour le son, reboucler un .Wav ou autre n'est peut être pas trés précis. Je n'ai pas essayé.

4) Je te joins un petit bout de code avec l'API Beep() et une boucle sur Timer. C'est précis à environ 1% sur la cadence (et mieux avec une petite correction pifométrique), mais le son est plutôt pourlingue parce qu'il faut une durée courte (j'ai mis 200 ms) et ça ne ressemble pas à un métronome.

C'est une piste à creuser et à améliorer
 

Pièces jointes

  • Metronome FC.xlsm
    21.3 KB · Affichages: 2

Dranreb

XLDnaute Barbatruc
Bonsoir.
Un Timer système devrait convenir.
J'ai un module de classe Rythmeur qui permet d'en utiliser un dans un module objet tel qu'un UserForm.
Pour une mesure précise du temps, il y a les :
VB:
Private Declare PtrSafe Function QueryPerformanceFrequency Lib "kernel32" (X As Currency) As Boolean
Private Declare PtrSafe Function QueryPerformanceCounter Lib "kernel32" (X As Currency) As Boolean
 
Dernière édition:

Katido

XLDnaute Occasionnel
La durée du Tap.Wav est correcte (légèrement en dessous de 200 ms), donc ça peut coller pour les tempos très rapides (4 par seconde)

Un truc bizarre :
Le résultat est correct si on reboucle toutes les 200 ms ou 300 ms, à part le 1er Tic qui est très atténué
Au dela de 350 ms, tous les Tics sont atténués (il faut mettre le HP +a fond

J'ai essayé bien sûr en synchrone, mais aussi en asynchrone et c'est pareil

Le Tap.Wav ne marche donc bien que s'il est rebouclé rapidement ?!?!
 

Katido

XLDnaute Occasionnel
C'est mieux avec un autre fichier .Wav : "Balle contre mur # 1" du site "lasonotheque.org"
Techniquement c'est mieux, mais c'est pas un métronome.
 

Katido

XLDnaute Occasionnel
Je ne sais pas si tu as le même problème, mais SANS EXCEL, juste avec le lecteur multimédia, je n'entends presque rien en lançant ton fichier Tac, sauf quand je clique plusieurs fois rapidement (même comportement que sous Excel). Est-ce mon PC qui est malade ?
 

Dranreb

XLDnaute Barbatruc
J'ai aussi des anomalies, mais différentes: à l'inverse ce serait plutôt à intervalles rapprochés qu'il est mal joué …
Serait-ce lié à son exceptionnelle courte durée (1/10 seconde, 2206 échantillons) ? …
 

Modeste geedee

XLDnaute Barbatruc
J'ai aussi des anomalies, mais différentes: à l'inverse ce serait plutôt à intervalles rapprochés qu'il est mal joué …
Serait-ce lié à son exceptionnelle courte durée (1/10 seconde, 2206 échantillons) ? …
Bonsour,
@dranreb,@Katido
Merci pour vos commentaires et propositions...
Que je n'ai pas encore eu l'opportunité de mettre en oeuvre, pas de macro sur mon smartphone.😢
Bernard_XLD m'a aiguillé vers une seconde instance EXCEL dans le but de dissocier la macro principale de la synchro des sons...😏
Expérimentations en cours sans finalisation...🤔
@+
 

Statistiques des forums

Discussions
315 080
Messages
2 116 024
Membres
112 637
dernier inscrit
pseudoinconnu