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
» PANORAMIC V 1
Du coup, j'ai un autre défi Emptypar Marc Aujourd'hui à 14:48

» Gestion d'un système client-serveur.
Du coup, j'ai un autre défi Emptypar Klaus Aujourd'hui à 13:18

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Du coup, j'ai un autre défi Emptypar Froggy One Aujourd'hui à 11:16

» @Jack
Du coup, j'ai un autre défi Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
Du coup, j'ai un autre défi Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
Du coup, j'ai un autre défi Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Du coup, j'ai un autre défi Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Du coup, j'ai un autre défi Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Du coup, j'ai un autre défi Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Du coup, j'ai un autre défi Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
Du coup, j'ai un autre défi Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Du coup, j'ai un autre défi Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Du coup, j'ai un autre défi Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
Du coup, j'ai un autre défi Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Du coup, j'ai un autre défi Emptypar leclode Mer 17 Avr 2024 - 11:07

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le deal à ne pas rater :
Funko POP! Jumbo One Piece Kaido Dragon Form : où l’acheter ?
Voir le deal

 

 Du coup, j'ai un autre défi

Aller en bas 
3 participants
AuteurMessage
jjn4

jjn4


Nombre de messages : 2691
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 : 2386
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 : 968
Age : 51
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 : 2691
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 : 2386
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 : 2691
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 : 968
Age : 51
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 : 2386
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 : 2691
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
-
» Un coup de SIN-COS
» Petit défi de programmation.
» petit coup de main de démarrage
» Access Violation: coup de gueule.
» 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: