Hello Michel,
Pour définir l'adresse mémoire de ton fichier wave, tu dois utiliser un
pointeur vers un label, en utilisant le symbole "?" devant le nom de ton
label.
Le label sera alors défini dans une zone de données en utilisant
DataSection.
Exemple :
CatchSound (0, ?MonSon)
End
DataSection
MonSon:; Ceci est le label.
IncludeBinary "CheminRelatifOuAbsoluVersTonFichierWave"
EndDataSection
Lorsque tu utilises CatchSound, l'avantage avec les fichiers wave, c'est
que tu ne dois pas spécifier la taille de ton fichier en paramètre,
comme c'est le cas avec les autres formats audio.
Cela est d'ailleurs très bien documenté :
https://www.purebasic.com/documentation/sound/catchsound.html
Bien amicalement,
Abdel.
Le 18/04/2018 à 18:51, Michel Farfallini a écrit :
Donc, si j'ai bien compris, CatchSound intègre carrément le son au
programme sans que celui-ci ait besoin d’aller lire un fichier externe ?
Si c'est bien le cas, il me reste une question : apparemment, avec
CatchSound, il faut donner une adresse mémoire dans les paramètres
pour que le programme aille y retrouver le son ainsi intégré or, cela,
je ne sais pas faire, tout au moins j'ignore quel genre de chiffre il
faut mentionner.
Bien cordialement,
Michel Farfallini
Le 18/04/2018 à 12:06, LavaChri a écrit :
concernant le CatchSound/loadSound, je te décris les deux choix qui
justifient leur utilisation, sans vraiment rentrer dans le détails.
1) Un fichier exécutable et plusieurs fichiers audio.
Dans ton programme tu vas utiliser LoadSound() pour pouvoir jouer les
sons enindiquant le nom des fichiers.
Si tu veux modifier un son, tu n'auras qu'a remplacer un fichier
existant.
2) Un seul fichier exécutable
Les fichiers audios sont intégrés au fichier exécutable dans une zone
nommé DataSection
Pour lire les sons tu vas utiliser CatchSound() en indiquant leur
position pour les trouver.
Pour modifier un son tu devras recompiler le fichier exécutable.
Pour la gestion d'interface graphique, le pureBasic utilise le mot
Gadgetpour désigner les éléments.
Pour la saisie de texte , tu devras utiliser le TextGadget et tu n'as
pas à gérer les touches, c'est une zone de saisie.
Cette façon de faire et similaire à la plupart des autres langages.
concernant le python, tu n'as apparemment utilisé que le mode
console, qui est qu'une possibilité d'écriture de code de ce langage.
Tu peux tout a fait, et c'est d'ailleurs le mode le plus répandu,
écrire des milliers de lignes de code dans un fichier et lancer son
exécution.
C'est ce que fait notre ami Quantin, en écrivant un éditeur de code
justement en langage python.
Le 18/04/2018 à 10:42, Michel Farfallini a écrit :
Bonjour,
Merci pour cette réponse très complète et intéressante.
Pour la lecture de fichiers de son, je suis parvenu à le faire avec
des fichiers .ogg en utilisant LoadSoudnet PlaySound. Bizarrement,
avec les fichiers .wav, ça reste muet ; je me demande s'il n'y a pas
une question d'échantillonnage du wave puisque j'ai vu qu'il y a
plusieurs valeurs possibles en wave. J'ai donc contourné le problème
en transformant mes fichiers .wav en fichiers .ogg avec Audacity. Je
n'ai toujours pas bien compris ce que catchSound peut ajouter à cela
et comment utiliser cette fonction.
En ce qui concerne le choix entre PureBasic et Python, je me suis
posé la question aussi. J'ai été découragé avec Python par le fait
que la console Python de NVDA ne fonctionne pas très bien, tout au
moins ici : pas moyen, par exemple, d'utiliser l'instruction Input
de quelque manière que ce soit. De plus, je trouve que l'exécution
des lignes de programme dès qu'elles sont écrites présente certes
des avantages mais aussi beaucoup d'inconvénients dès qu'il s'agit
d'écrire un programme un peu long ; cela constitue une sorte de
rupture dans l'écriture qui me gêne, à tout prendre, je préfère
avoir à corriger les bugs en bloc, au bout d'une longue séquence de
code.
Pour le moment, je me contente de réécrire, pour qu'ils puissent
continuer à tourner sur les versions les plus récentes de Windows,
de petits programmes comme un annuaire, un dispositif de
consultation de dictionnaire de Scrabble, un agenda, que j'avais
écrits en QuickBasic et dont je me sers toujours. Pour l'annuaire et
le dispositif de consultation d’O D S c'est fait ; pour l'agenda,
mon problème est de trouver le moyen de créer facilement un petit
éditeur de texte car celui que j'avais fait en QuickBasic est certes
transposable mais avec un gros effort car j'avais dû écrire
énormément de lignes pour prévoir les déplacements du curseur, les
effets des touches Backspace et Sup, etc. Je viens aussi de faire un
petit programme de pendule pour le jeu d'échecs mais, là encore, je
voudrais y adjointe un petit éditeur pour la notation des coups de
la partie jouée. Quelqu'un a essayé de m'expliquer comment créer un
éditeur en utilisant le mode fenêtre mais je m'y perds un peu.
Si je m'orientais vers Python, j'aurais, je le sais, la possibilité
de faire des modules pour NVDA, donc quelque chose pouvant être
utile à d'autres et cela me plairait ; toutefois, outre que je ne
suis pas à l'aise avec la console de NVDA, comme je l'ai dit, je
redoute d'entrer dans des procédures un peu compliquées pour moi.
Pour information, combien coûte une licence PureBasic ?
Bien cordialement,
Michel Farfallini
Le 18/04/2018 à 10:01, LavaChri a écrit :
Salut,
la version de démonstration de PureBasic comporte quelques limitation.
De mémoire, un maximum de 1000 ligne de code par programme et le
blocage des appels de fonctions API.
Et justement l'instruction Beep est un appel API, c'est à dire que
c'est un simple appel d'un fonction fournie par Windows.
Je ne connais pas d'instruction PB pouvant générer un son en
définissant une fréquence.
Il est probable que tu trouves des instructions API pour faire cela
mais il te faudra une license pour pouvoir les utiliser avec PB.
Dans PB, pour jouer des sons tu à la bibliothèque Sound.
Le principe est d'utiliser le fichier d'un son numérisé et de le
jouer.
En utilisant l'instruction LoadSound() tu vas pouvoir charger le
son depuis un fichier
avec l'instruction CatchSound() tu vas pouvoir charger le son
depuis ton programme.
Cela sera utile si tu veux intégrer tes sons dans une section Data
dans le fichier EXE de ton programme.
Je crois que tu devrais dabord te familiariser avec LoadSound.
Nativement seul les fichier Wav peuvent être utilisés, mais tu peux
ajouter l'instruction UseOGGSoundDecoder pour lire les fichier OGG
Dans l'aide de l'instruction LoadSound tu trouveras un petit code
pour mettre en pratique ce que je viens de t'expliquer.
Pour utiliser les synthèse vocales SAPI4 ou SAPI5, il te faudra une
licence de PureBasic. mais c'est un peu pénible à faire.
Pour faire parler JAWS ou NVDA, il te faudra aussi une licence PB
et j'ai des code pour cela
PS: je ne connais pas tes ambitions en programmation mais avant que
tu investisses dans une licence de PureBasic, je pense qu'il serait
bon que tu réfléchisse au point suivants:
- Le PB est un langage simple, très rapide, très polyvalent,
générant des interface graphique plutôt accéssible et possédant une
documentation ergonomique.
Ainsi, il est facile de générer un fichier EXE mais tes
connaissances ne seront pas vraiment transposable.
Mais NVDA à décidé d'utiliser le python pour une partie de son
développement...
Alors, même si cela peut paraître un peu plus complexe d'utiliser
ce langage, il me semble raisonnable de les confronter avant de ce
décider.
Le 17/04/2018 à 12:19, Michel Farfallini a écrit :
Bonjour,
Cela me dépasse complètement : Je suis allé voir le forum sur
lequel pointe le lien donné dans le message mais je n'y comprends
rien.
Reprenons :
un bip, effectivement, il semble qu'il faille la version complète
pour le générer car lorsque je frappe beep, même suivi de
parenthèses, j'ai un message m’indiquant que cette fonction
n'existe pas ou qu’elle n'est pas supportée dans la version de
démonstration ;
quant à CatchSound, je ne parviens pas à comprendre comment
employer cette fonction, même avec l'aide de Purebasic. Ce n'est
pas parlant pour moi ; c'est une architecture que mon esprit
n'assimile pas. Quelqu'un pourrait-il m'expliquer précisément ?
Pour l'instant, la méthode détournée que j'ai trouvée et qui
fonctionne, c'est de créer de petit fichiers au format OGG avec
Audacity et de les faire "interpréter" par mes programmes mais
cela ne correspond pas toujours à ce que je souhaite : s'il s'agit
de délivrer un message vocal déterminé, par exemple, cela convient
puisque j'enregistre le message, le met au format OGG et le fais
lire par le programme ; mais s'il s'agit de générer un son, là , ça
ne va pas. En QuickBasic il y avait une fonction Sound qu'on
pouvait paramétrer en indiquant une fréquence et une durée ou
alors une fonction Play qui permettait de jouer des notes données.
N'y aurait-il pas ici un équivalent ?
Merci de votre aide.
Michel Farfallini
Le 13/04/2018 à 18:22, Abdel a écrit :
Coucou Michel,
Pour revenir un instant au Purebasic, y a-t-il un moyen simple
de faire entendre un bip ? En Basic et anciens dérivés, il
suffisait d'écrire beep dans le programme or, cette instruction
est inconnue en Purebasic.
Si tu veux utiliser des fichiers audio, il y a la fonction
catchsound (), voir la doc avec F1.
Autrement, si ton souhait est uniquement d'émettre un beep et que
tu es sous Windows, tu peux utiliser les fonctions API, comme la
fonction Beep_ (fréquence, durée).
Mais pour cela, je pense que tu dois disposer d'une version
complète de PureBasic.
À confirmer...
Voici un sujet qui évoque cette question :
http://forums.purebasic.com/french/viewtopic.php?f=1&t=11003&view=previous
Bien amicalement,
Abdel.
Progliste :
Pour se d�sinscrire de la liste :
mailto:progliste-requ...@ml.free.fr?subject=unsubscribe
Pour voir les archives de la liste :
http://www.mail-archive.com/progliste@ml.free.fr/
Je vous rappelle que les pi�ces jointe sont activ�s leur taille
est limit� � 2 MO
Pour acc�der aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en
priv�, je vous r�pondrez en priv�.
Progliste : Pour se d�sinscrire de la liste :
mailto:progliste-requ...@ml.free.fr?subject=unsubscribe Pour voir
les archives de la liste :
http://www.mail-archive.com/progliste@ml.free.fr/ Je vous rappelle
que les pi�ces jointe sont activ�s leur taille est limit� � 2 MO
Pour acc�der aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr Ou en
utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en
priv�, je vous r�pondrez en priv�.
--
LavaChri
Progliste :
Pour se d�sinscrire de la liste :
mailto:progliste-requ...@ml.free.fr?subject=unsubscribe
Pour voir les archives de la liste :
http://www.mail-archive.com/progliste@ml.free.fr/
Je vous rappelle que les pi�ces jointe sont activ�s leur taille est
limit� � 2 MO
Pour acc�der aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en
priv�, je vous r�pondrez en priv�.
Progliste : Pour se d�sinscrire de la liste :
mailto:progliste-requ...@ml.free.fr?subject=unsubscribe Pour voir les
archives de la liste :
http://www.mail-archive.com/progliste@ml.free.fr/ Je vous rappelle que
les pi�ces jointe sont activ�s leur taille est limit� � 2 MO Pour
acc�der aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr Ou en
utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en
priv�, je vous r�pondrez en priv�.
Progliste :
Pour se d�sinscrire de la liste :
mailto:progliste-requ...@ml.free.fr?subject=unsubscribe
Pour voir les archives de la liste :
http://www.mail-archive.com/progliste@ml.free.fr/
Je vous rappelle que les pièces jointe sont activés leur taille est limité à 2 MO
Pour acc�der aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en priv�, je
vous r�pondrez en priv�.