Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

 

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:

Dranreb

XLDnaute Barbatruc
J'ai essayé des choses dans votre classeur …
 

Pièces jointes

  • RythmModeste gedeee.xlsm
    518.5 KB · Affichages: 4

Katido

XLDnaute Occasionnel
En fait le problème vient plutôt du son à générer, qui doit ressembler à un tic de métronome et durer moins de 200 ms
 

Modeste geedee

XLDnaute Barbatruc
Je pense que le mieux serait de jouer un Wav. Mais avec Beep API ce n'est pas mal non plus.
@katido,@Dranreb
Bonjour et merci pour votre intérêt pour mes élucubrations.
Le tap.wav dans l'archive doit je pense correspondre à ces critères.
Depuis mon smartphone, je n'ai pas encore eu l'opportunité d'ouvrir vos contributions depuis mon PC
@+
 

Dranreb

XLDnaute Barbatruc
J'avais écouté votre tap.wav mais il ne m'avait guère convaincu en tant que tac de métronome.
 

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.
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Un fichier Tac.wav calculé par une macro de mon cru …
 

Pièces jointes

  • Tac.zip
    4 KB · Affichages: 2

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...
@+
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…