Coucou Michel,
Et maintenant, te voici un exemple d'utilisation de la fonction
CatchSound avec un fichier OGG.
Comme tu pourras le constater, la taille du fichier OGG est créée en
soustrayant la fin au début à partir de pointeurs vers des labels
définis dans la zone de données DataSection.
InitSound()
UseOGGSoundDecoder()
CatchSound(0, ?MonSon, ?Fin-?Debut)
PlaySound(0)
End
DataSection
Debut:
MonSon: IncludeBinary "CheminRelatifOuAbsoluVersTonFichierOGG"
Fin:
EndDataSection
Bien amicalement,
Abdel.
Le 18/04/2018 à 21:13, Abdel a écrit :
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:[email protected]?subject=unsubscribe
Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/
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:[email protected]?subject=unsubscribe Pour voir
les archives de la liste :
http://www.mail-archive.com/[email protected]/ 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:[email protected]?subject=unsubscribe
Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/
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:[email protected]?subject=unsubscribe Pour voir les
archives de la liste :
http://www.mail-archive.com/[email protected]/ 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:[email protected]?subject=unsubscribe
Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/
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:[email protected]?subject=unsubscribe
Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/
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�.