FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Du coup, j'ai un autre défi Emptypar Pedro Hier à 15:50

» Un autre pense-bête...
Du coup, j'ai un autre défi Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Du coup, j'ai un autre défi Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Du coup, j'ai un autre défi Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Du coup, j'ai un autre défi Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Du coup, j'ai un autre défi Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Du coup, j'ai un autre défi Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Du coup, j'ai un autre défi Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Du coup, j'ai un autre défi Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Du coup, j'ai un autre défi Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Du coup, j'ai un autre défi Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Du coup, j'ai un autre défi Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Du coup, j'ai un autre défi Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Du coup, j'ai un autre défi Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Du coup, j'ai un autre défi Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -55%
Friteuse sans huile – PHILIPS – Airfryer ...
Voir le deal
49.99 €

 

 Du coup, j'ai un autre défi

Aller en bas 
3 participants
AuteurMessage
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Du coup, j'ai un autre défi Empty
MessageSujet: Du coup, j'ai un autre défi   Du coup, j'ai un autre défi EmptyVen 23 Juin 2023 - 15:14

Décidément, vous me direz...!
Voilà, j'ai un autre truc pas facile, que je cherche à faire :
scratch
Quand on fonctionne en midi_play
on peut modifier le volume avec midi_volume,
mais quand on fonctionne en play avec un sound et des mp3,
peut-on modifier le volume
à partir du tableau panoramic avec un track_bar ?
Faut-il passer par une formule DOS ou par un dll ?
scratch scratch scratch
Est-ce quelqu'un a une réponse à ce problème (ardu ?) ???
Shocked study affraid
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Du coup, j'ai un autre défi Empty
MessageSujet: Re: Du coup, j'ai un autre défi   Du coup, j'ai un autre défi EmptyDim 25 Juin 2023 - 17:28

Bonjour à tous !

@JJN4
Citation :
peut-on modifier le volume
à partir du tableau panoramic avec un track_bar ?

Je n’ai pas réussi depuis Panoramic. Pour faire court, il n’est pas possible d’envoyer la valeur 0xFFFFFFFF comme paramètre dans un DLL_CALL, ni un NULL. Autrement on aurait pu employer la DLL Windows winmm…

A défaut, je te propose cette solution avec des boutons +Volume, Mute  et -Volume.

Du coup, j'ai un autre défi Jjn4-510

Code:
' touches +Volume, Mute, -Volume
label moinsVolume, Mute, plusVolume

dim res%

button 1
top 1,50
left 1,50
caption 1,"-Volume"
on_click 1,moinsVolume

button 2
top 2,50
left 2,150
caption 2,"Mute"
on_click 2,mute

button 3
top 3,50
left 3,250
caption 3,"+Volume"
on_click 3,plusVolume

dll_on "user32.dll"

end
' ------------------------------------------------------------------------------
moinsVolume:
    res% = dll_call4("keybd_event",hex("AE"),0,0,0)
return
' ------------------------------------------------------------------------------
mute:
    res% = dll_call4("keybd_event",hex("AD"),0,0,0)
return
' ------------------------------------------------------------------------------
plusVolume:
    res% = dll_call4("keybd_event",hex("AF"),0,0,0)
return


Bonne programmation !


Dernière édition par Marc le Lun 26 Juin 2023 - 20:46, édité 1 fois
Revenir en haut Aller en bas
silverman

silverman


Nombre de messages : 970
Age : 52
Localisation : Picardie
Date d'inscription : 18/03/2015

Du coup, j'ai un autre défi Empty
MessageSujet: Re: Du coup, j'ai un autre défi   Du coup, j'ai un autre défi EmptyLun 26 Juin 2023 - 11:05

Bonjour à tous

@Marc
Il est possible d'envoyer la valeur 0xFFFFFFFF à un dll_call, mais elle vaut -1 car panoramic l'interprète comme un 32 bits signé. Mais du point de vu hexadécimal, c'est bien "0xFFFFFFFF" et "11111111111111111111111111111111" en binaire qui est reçu par la dll. Pour envoyer des entiers de plus de 32 bits dans un dll_call, tu peux faire comme ça:
Code:
peek_reverse

' null% = 0 pour les dll windows
dim null%
null%=0

' créer un entier 32 bits (ou plus)
dim int32$
int32$=string$(32,chr$(255)) :' 0xFFFFFFFF

' adresse de l'entier
print peek32(adr(int32$))

dim tmp% : tmp% = peek32(adr(int32$)) :' A NE PAS FAIRE! Risque de plantage car la
' valeur de peek32(adr(int32$)) évolue au cours du programme. C'est une
' caractéristique de panoramic

' exemple d'appel:
' dll_callx("blabla",peek32(adr(int32$)),null%)
Je n'ai jamais eu de pb avec cette méthode.
Par défaut, les NULL sont acceptés comme 0 dans les dll windows, ça ne pose pas de pb non plus.
Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Du coup, j'ai un autre défi Empty
MessageSujet: Re: Du coup, j'ai un autre défi   Du coup, j'ai un autre défi EmptyLun 26 Juin 2023 - 14:05

Merci pour vos réponses !
La formule de Marc a l'air de marcher
et je n'ai pas compris les limites de 0xFFFF... et de Null.
D'ailleurs, la formule a l'air de marcher pour tous les niveaux,
y compris 100% et 0% ...???
Alors je ne sais pas quoi faire de l'ajout de Silverman.
scratch  scratch  scratch
Sinon, j'ai une question subsidiaire :
Comment savoir (en panoramic)
quel est le volume (de 0 à 100) du son ???
Peut-être la même dll permet-elle de trouver la réponse ???
scratch study Question
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Du coup, j'ai un autre défi Empty
MessageSujet: Re: Du coup, j'ai un autre défi   Du coup, j'ai un autre défi EmptyLun 26 Juin 2023 - 20:01

Bonjour à tous !

0xFFFFFFFF et NULL : Un grand merci Silverman pour ces bonnes nouvelles !
C’est super ! Donc, j’en reviens à la DLL winmm.

Pour lire la valeur du volume affecté au programme Panoramic :
Code:
' lecture du niveau de volume droite et gauche de l'application Panoramic
dim res%, volume%, voieDroite%, voieGauche%, NULL%

peek_reverse

dll_on "winmm"

' lecture niveau de volume droite et gauche
res% = dll_call2("waveOutGetVolume",NULL%,adr(volume%))

' la variable volume% (32 bits soit 4 octets) représente les niveaux droite et gauche du volume
' les 2 octets de poids fort correspondent à la voie droite [0x0000,0xFFFF]
' les 2 octets de poids faible correspondent à la voie gauche ou signal mono [0x0000,0xFFFF]
  
' voie droite :
voieDroite% = peek16(adr(volume%)+2) :' [0,65535]

' voie gauche :
voieGauche% = peek16(adr(volume%)) :' [0,65535]

print "Niveau voie droite : " + str$(VoieDroite%)
print "Niveau voie gauche ou mono : " + str$(voieGauche%)

end


Pour affecter une valeur de volume au programme Panoramic :
Code:
' régler un niveau de VOLUME pour l'application Panoramic

dim res%, volume$, voieDroite$, voieGauche$, NULL%

dll_on "winmm.dll"

' niveaux droite et gauche à 50%
voieDroite$ = hex$(32767) :' [0,65535]
voieGauche$ = hex$(32767) :' [0,65535]

while len(voieDroite$) < 4
    voieDroite$ = "0" + voieDroite$
end_while

while len(voieGauche$) < 4
    voieGauche$ = "0" + voieGauche$
end_while

volume$ = voieDroite$ + voieGauche$

res% = dll_call2("waveOutSetVolume",NULL%,hex(volume$))

end


Exemple de réglage du volume à l’aide d’un track_bar (nom du fichier mp3 ligne 20 à ajuster):
Code:
' réglage VOLUME

dim res%, volume$, voieDroite$, voieGauche$, NULL%

label reglageVolume

peek_reverse

' potentiomètre de réglage du volume
track_bar 1
top 1,10
width 1,300
min 1,0
max 1,100
position 1,100 :' mettre le curseur au max par défaut
on_change 1,reglageVolume

' lire un mp3 pour tester l'action du réglage
sound 10
file_load 10,"open.mp3"
play 10

dll_on "winmm.dll"

end
' ------------------------------------------------------------------------------
reglageVolume:
    voieDroite$ = hex$(int(position(1) * 655))
    voieGauche$ = hex$(int(position(1) * 655))

    while len(voieDroite$) < 4
        voieDroite$ = "0" + voieDroite$
    end_while

    while len(voieGauche$) < 4
        voieGauche$ = "0" + voieGauche$
    end_while

    volume$ = voieDroite$ + voieGauche$
    res% = dll_call2("waveOutSetVolume",NULL%,hex(volume$))
return


Notes :
- Contrairement à mon premier post avec les boutons + et – volume, ici on n’agit pas sur le réglage général (Master) mais uniquement sur le volume de l’application Panoramic :

Capture d'écran du mixer audio de Windows 10
Du coup, j'ai un autre défi Jjn4-610


- Au lancement du programme Panoramic, la voie son de Panoramic est au maximum (0xFFFFFFFF). Ce maximum est limité par la position du réglage MASTER.


Dernière édition par Marc le Sam 22 Juil 2023 - 18:56, édité 1 fois
Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Du coup, j'ai un autre défi Empty
MessageSujet: Re: Du coup, j'ai un autre défi   Du coup, j'ai un autre défi EmptyMar 27 Juin 2023 - 17:32

Finalement, je préfère la première formule avec des boutons.
Celle-là mache bien.
farao
Pour ce qui est du dernier post,
j'ai intégré les deux premiers essais dans le troisième, avec un track_bar,
mais le résultat n'est pas génial.
Au niveau du track_bar, l'évolution du volume n'est pas linéaire mais en zig-zag
et la mesure du volume donne également un résultat en zig-zag
(qui peut monter ou descendre quand le track_bar va vers la droite, et inversement)
et le zig-zag de la mesure ne correspond pas au zig-zag du niveau d'écoute du volume.
Bon, je suis conscient que c'est un niveau de programmation dur-dur !!!
Et après tout, comme le première formule marche impeccable, elle me convient !
(quant à la mesure du niveau, après tout, c'était un luxe pas vraiment indispensable).
Et merci pour tous ces efforts !!!
flower
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
silverman

silverman


Nombre de messages : 970
Age : 52
Localisation : Picardie
Date d'inscription : 18/03/2015

Du coup, j'ai un autre défi Empty
MessageSujet: Re: Du coup, j'ai un autre défi   Du coup, j'ai un autre défi EmptySam 22 Juil 2023 - 17:45

Bonjour à tous!

Je réagit tardivement, mais le premier code du dernier post de Marc comporte une erreur. La voie de droite est l'octet de poids fort, donc l'adressage devrait ressembler à peek16(adr(volume%)+2) puisque les bits de poids forts sont à gauche. Or ce n'est pas le cas dans ce premier exemple; voieGauche% et voieDroite% sont inversées. Voici un exemple plus parlant je pense:
Code:
'

dim volume$, voieDroite$, voieGauche$
dim volume%

peek_reverse

' niveaux droite et gauche
voieDroite$ = hex$(16384) :' [0,65535]
voieGauche$ = hex$(32767) :' [0,65535]

while len(voieDroite$) < 4
    voieDroite$ = "0" + voieDroite$
end_while

while len(voieGauche$) < 4
    voieGauche$ = "0" + voieGauche$
end_while

volume$ = voieDroite$ + voieGauche$
print "volume$ = ",volume$
print

volume%=hex(volume$)
print "voieDroite$ = ",hex$(peek16(adr(volume%)+2))
print "voieGauche$ = ",hex$(peek16(adr(volume%)))


end
C'est peut être de là que vient l'effet zigzag de ton code
Revenir en haut Aller en bas
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Du coup, j'ai un autre défi Empty
MessageSujet: Re: Du coup, j'ai un autre défi   Du coup, j'ai un autre défi EmptySam 22 Juil 2023 - 18:56

Bonjour à tous !

@Silverman

Ah oui, bien vu ! Effectivement j’ai inversé les voies droite et gauche !
Merci à toi, je rectifie de suite le code concerné.

Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Du coup, j'ai un autre défi Empty
MessageSujet: Re: Du coup, j'ai un autre défi   Du coup, j'ai un autre défi EmptyDim 23 Juil 2023 - 15:33

Ah oui, effectivement,
là ça marche mieux !
Merci, les gars !!!
cheers
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Contenu sponsorisé





Du coup, j'ai un autre défi Empty
MessageSujet: Re: Du coup, j'ai un autre défi   Du coup, j'ai un autre défi Empty

Revenir en haut Aller en bas
 
Du coup, j'ai un autre défi
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Petit défi de programmation.
» coup de flood
» Access Violation: coup de gueule.
» petit coup de main de démarrage
» Défi mp3

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: