Au sujet de la bibliothèque "Sound"

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Re: Au sujet de la bibliothèque "Sound"

Message par Ulix »

@Dobro, çà me fait plaisir de te lire

Dobro a écrit :

viewtopic.php?f=6&t=12880&hilit=reconnaissance+vocale


Je connais ce post, cette solution n'est valable que pour du Windows. (Mais elle est bien vu !)

Pour ma part, je préfères une solution en natif, qui soit multi-plateforme :lol:

Une véritable avancée de la lib "Sound" !

A+
Ulix
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Au sujet de la bibliothèque "Sound"

Message par graph100 »

@Ulix : ce que tu as listé est en effets nécessaire je pense.

Je pense que par Outputs tu désignes un output de capture sonore.
Dans ce cas, je rajouterais une possibilité de travailler sur le son capturé et ensuite de le diffuser, mais en streaming.

Exemple : Une console de génération de son, pouvoir travailler avec un feed-back instantané : envoyer le son par chunk d'une certaine taille à la lecture.
Je ne suis pas arrivé à obtenir des résultats fiables et stables avec les externes que j'ai utilisé.

(J'essaie de fabriquer directement le son qui va être lu juste ensuite.)
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Re: Au sujet de la bibliothèque "Sound"

Message par Ulix »

@Graph100
Je pense que par Outputs tu désignes un output de capture sonore.
Oui ! tout a fait !
Et je n'ai pas pensé a une sortie en streaming. :oops:
C'est bien vu :wink:

Il y a donc vraiment de quoi avancé cette lib ! ?

A+
Ulix
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: Au sujet de la bibliothèque "Sound"

Message par blendman »

Eh bien, vous voyez qu'on vous écoute et que Fred prend en compte vos remarques :)

ça a été ajouté dans la 5.10, en février 2013, soit environ 4 mois après vos suggestions :
Ajouté : GetSoundPosition(), SetSoundPosition(), SoundLength(), PauseSound(), ResumeSound(), SoundStatus(), GetSoundFrequency()
Ajouté : #PB_All pour SoundVolume()
Je suis sûr que Fred va continuer à ajouter des trucs dans la bibliothèque sound, car c'est vrai que je ne n'avais pas pensé à la reconnaissance vocale, à l'IA, etc... pour les sons, mais ce serait hyper pratique.

Concernant la liste d'Ulix :
Devices : Micro, line, streaming
Outputs : Fichier, mémoire
Options ; Echantillonnage, Fréquence, Durée
GetSound(Devices, Outputs, Options)
J'ajouterai les choses suivantes (ce ne sont que quelques idées ;)), un peu l'équivalent de la lib drawing :

Code : Tout sélectionner


StartMixSound(SoundOutput(#NewSound)); l'output peut aussi être en mémoire, ou un filename$
; opération de mixage ou d'enregistrement, avec un ou plusieurs sons)
MixSound(#sound1[, Start, End, Speed, Ton, Volume, Pan, FX, options]) 
- Start : la position où on commence à jouer le son (position comme celle de get/setSoundPosition())
- End : la position, dans le son, où on arrête d'enregistrer sur le fichier #NewSound
- Speed : la vitesse du son (en BPM)
- Ton : la tonalité du son (on pourrait la changer)
- Volume : le volume
- Pan : le pan
- Fx : soyons fou, quelques Fx (réverb, delay, flanger, phaser.. ^^)
- Options : des options genre #pb_sound_quality ou je ne sais quoi.
;  MixSound() pourrait s'appeler WriteSound()ou DrawSound(), mais ce serait un équivalent sonore de drawimage())
; pourquoi un MixingMode() (comme le drawingmode)
StopMixSound()

SaveSound(#sound, filename$,format[,options]) : pouvoir sauvegarder un son.
- filenam$ le nom du fichier
- format : ogg, wave, mp3
- options : les options de qualité de sortie (Fréquence, Compression ogg, mp3, 16 bit, 44100, etc..)

Get/SetInputSound() : retourne les entrées disponibles, permet de sélectionner l'entrée qu'on veut pour enregistrer le son, équivalent de ton device.
Par exemple, on pourrait vouloir capturer depuis un Micro, line, depuis l'ordinateur directement (un son joué d'une vidéo) ou autre...

Get/SetOutputSound() : permet de connaitre et choisir la sortie qu'on veut pour jouer le son. Différent de ton output. En fonction des sorties disponibles.

RecordSound(#sound[, Input, flag]) : pour enregistrer un son, via un input (device) : line, micro, streaming, autre..

CopySound(#sound1,#sound2) : copie un son 1 en nouveau son 2 (comme copyimage())

GrabSound(#sound, #sound2, start, end) : copie une partie d'un son vers un autre son, comme grabimage().

TransformSound(#sound, type[,options]) : Equivalent du resizeImage(). ça pourrait s'appeler ResizeSound(), ou SetSound()
Permet de transformer un son. 
- type : #Pb_SoundType_Tonality (changer la tonalité d'un son (un la devient un Do, etc..) sans changer la vitesse du son) ou #Pb_SoundType_Speed (changer la vitesse d'un son (son bpm) sans changer sa tonalité.
- options : en fonction du type choisi. la nouvelle tonalité pour #Pb_SoundType_Tonality, et la nouvelle vitesse (BPM) pour #Pb_SoundType_Speed.

FxSound(#sound, Fx,[options1,options2,options3...]) : soyons fou ^^ , permet d'ajouter un fx à un son (reverb, delay, phaser, flanger...). 
- FX : le type de FX choisi : #PB_SoundFx_Reverb,  #PB_SoundFx_Delay,  #PB_SoundFx_Flanger,  #PB_SoundFx_Phaser
- Options en fonctions du FX 
reverb  longueur, volume.. 
delay : longueur, volume,vitesse...


MixSound(sound1,sound2,mix) : pour mixer rapidement 2 sons ensemble, sauf si le StartMixSound()/StopMixSound() est codé :)
Voilà pour quelques idées concernant cette lib ^^.
Ce ne sont que quelques idées, je ne sais pas ce que vous en pensez. Ca permettrait de traiter du son, en entrée, en interne (comme les images) et en sortie (save, mix...).
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Au sujet de la bibliothèque "Sound"

Message par Ar-S »

Si des fonctions peuvent être ajouter, la possibilité de faire un fadein fadeout en ms sur un fichier son est une base.

Fadein : démarrer un morceau à 0 en volume jusqu'à 100 sur une durée donnée
FadeOut ; Baisser le volume d'un morceau jusqu'à 0 sur une durée donnée
Genre

Code : Tout sélectionner

SoundFade(#son, PosDepart, PosFin, #OutPut_Sound, #Sound_FadeIn)
SoundFade(#son, PosDepart, PosFin, #OutPut_Sound, #Sound_FadeOut)
Je parle pas de baisser le son en direct mais bien de modifier un fichier en mémoire ou physiquement.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Re: Au sujet de la bibliothèque "Sound"

Message par Ulix »

Bonjour a tous !

Magnifique !
Quel explosion de commande, toutes aussi intéressante les unes que les autres !
(Pas sûr que Fred appréci, il est un peu frileux quand il doit rajouter des commandes (vite une petite laine :wink: )

Et moi qui voulait juste une petite commande, toute simple, du genre (pour rappel) :
Devices : Micro, line, streaming
Outputs : Fichier, mémoire
Options : Echantillonnage, Fréquence, Durée
GetSound(Devices, Outputs, Options)

Je suis surpris de voir comme cela fait défaut a bien d'autre, (et c'est tant mieux) !
Je suis aussi surpris par les bonnes idées que l'on n'a pour améliorer cette lib.

Les indispensables (a mon point de vu, c'est le minimum) :

Get/SetInputSound() : Retourne/Fixe les entrées disponibles
Get/SetOutputSound() : Retourne/Fixe la sortie
RecordSound(#sound[, Input, flag]) : Capture un son
SaveSound(#sound, filename$,format[,options]) : Sauvegarde un son

En plus les noms de commandes sont bien trouvés !
Hélas, ces commandes ne sont pas encore disponibles !
C'est celles qui font le plus défaut !!! Comme je disais pour travailler sur des données (fichier ou mémoire),
encore faut-il acquérir ces mêmes données, et là, la capture audio fait cruellement défaut. :twisted:
Fred dit nous si c'est prévu ! (Peut-être y travaille-tu ? Rassure nous ! :oops: )


J'ai bien aimé cette comparaison avec la lib image, c'est bien vu !

CopySound(#sound1,#sound2) : copie un son (comme copyimage()
GrabSound(#sound, #sound2, start, end) : copie une partie d'un son... comme grabimage()
ResizeSound(#sound, type[,options]) : équivalent du resizeImage()

Mais de mon point de vu, c'est déjà du luxe (attention je ne dis pas qu'elles sont inutile,
bien au contraire!), mais j'aimerai avoir le minimum pour commencer.

J'énumère les dernières (j'espère ne pas en avoir oublier) :

StartMixSound(SoundOutput(#NewSound));
MixSound(#sound1[, Start, End, Speed, Ton, Volume, Pan, FX, options])
FxSound(#sound, Fx,[options1,options2,options3...])
SoundFade(#son, PosDepart, PosFin, #OutPut_Sound, #Sound_FadeIn)

Je suis moins emballé pas ces dernières, peut être parce que j'en vois moins l'utilité.

J'ai effectivement vu les ajouts dans la lib sound, c'est peut-être le début, mais j'attends
ce que je considère comme indispensable : la capture d'un son, et bien sûr en natif !!!!
Bref : une véritable avancée de la lib "Sound" !

A+
Ulix
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Au sujet de la bibliothèque "Sound"

Message par Backup »

......
Dernière modification par Backup le lun. 18/août/2014 16:36, modifié 1 fois.
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Au sujet de la bibliothèque "Sound"

Message par Ar-S »

Ulix a écrit :Bonjour a tous !

J'énumère les dernières (j'espère ne pas en avoir oublier) :

StartMixSound(SoundOutput(#NewSound));
MixSound(#sound1[, Start, End, Speed, Ton, Volume, Pan, FX, options])
FxSound(#sound, Fx,[options1,options2,options3...])
SoundFade(#son, PosDepart, PosFin, #OutPut_Sound, #Sound_FadeIn)

Je suis moins emballé pas ces dernières, peut être parce que j'en vois moins l'utilité.
Tout simplement pour faire du montage sonore. J'en fait depuis pas mal d'années (en utilisant soundforge) mais ce genre de fonction pourrait permettre de créer des outils similaire plus "light". Ton comme des logiciels de mixages. (genre virtual DJ).
Tout ça pour dire que la lib sound s'améliore mais pourra (et sera sans doute à l'avenir) pleine de possibilités.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Au sujet de la bibliothèque "Sound"

Message par Backup »

Ar-S a écrit : Tout simplement pour faire du montage sonore. J'en fait depuis pas mal d'années (en utilisant soundforge) mais ce genre de fonction pourrait permettre de créer des outils similaire plus "light". Ton comme des logiciels de mixages. (genre virtual DJ).
Tout ça pour dire que la lib sound s'améliore mais pourra (et sera sans doute à l'avenir) pleine de possibilités.
je le redis , tout cela a deja été fait ... donc les fonctions existent deja

rappel toi avec Zapman nous avions fait un editeur style SoundForge (perso j'avais codé un Effet)

http://www.purebasic.fr/french/viewtopi ... und+editor
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Au sujet de la bibliothèque "Sound"

Message par Ar-S »

Dobro a écrit :
Ar-S a écrit : Tout simplement pour faire du montage sonore. J'en fait depuis pas mal d'années (en utilisant soundforge) mais ce genre de fonction pourrait permettre de créer des outils similaire plus "light". Ton comme des logiciels de mixages. (genre virtual DJ).
Tout ça pour dire que la lib sound s'améliore mais pourra (et sera sans doute à l'avenir) pleine de possibilités.
je le redis , tout cela a deja été fait ... donc les fonctions existent deja

rappel toi avec Zapman nous avions fait un editeur style SoundForge (perso j'avais codé un Effet)

http://www.purebasic.fr/french/viewtopi ... und+editor
Je ne me rappelais pas de ce topic merci, mais il n'empêche que des commandes natives sont toujours les bienvenues.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: Au sujet de la bibliothèque "Sound"

Message par blendman »

@Dobro :excellent ton code pour enregistrer et sauvegarder le son en wave !!
En natif, avec des possibilités de sauvegarde (wav, mp3, ogg), et quelques autres bricoles, ce serait excellent, mais là, c'est déjà top.

J'avais vu soundeditor, je l'ai testé et ça a l'air pas mal.
Est-il possible de gérer (en temps réel) :
- le changement de tonalité (sans changer sa vitesse (bpm))
- le changement du bpm (vitesse) du son (sans changer la tonalité)

Si oui, on a la possibilité de concevoir un sampler virtuel (comme acid) ce qui serait top :).
StartMixSound(SoundOutput(#NewSound));
MixSound(#sound1[, Start, End, Speed, Ton, Volume, Pan, FX, options])
FxSound(#sound, Fx,[options1,options2,options3...])
Je suis moins emballé pas ces dernières, peut être parce que j'en vois moins l'utilité.
comme Ar-s l'a souligné pour faire de l'édition en temps réel, ou encore du mixage.
En gros, pour réaliser des logiciels comme : cubase, audacity (enregistrement multi-piste, mixage-effet),soundforge (edition) ou acid, fruity loop (sampling, enregistrement, mixage de piste), ce genre de fonctions sont essentielles.
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Re: Au sujet de la bibliothèque "Sound"

Message par Ulix »

(Re)bonjour a tous !

@Dobro : Merci pour le code, hélas je suis sous Linux !
Mais j'ai apprécier ton point de vu !


Dobro a écrit :

pour ma part , ce que j'ai du mal a comprendre, c'est Pourquoi Fred , n'utilise pas le Travail deja présent sur les Forum
....
il existe un vivier de codes , qui ont fini en librairie utilisateur ou dans l'oubli ..., alors qu'ils auraient pu etre intégré a Purebasic ...
...
c'est un choix ... mais au lieu de favoriser le debutant, qui utiliserai des fonctions toute faite
ça favorise le "pro" qui doit chercher ou se creer une librairie de toute piece ...

je ne suis pas sur que cela aille dans le bon sens .... mais bon

Tout a fait d'accord avec toi !!!

Et le meilleur moyen de favorisé un débutant, c'est de lui fournir un maximum de commande
de base, (et non une usine de code, pas toujours facile a appréhendé, et pas forcement multiplate-forme !)

L'idée d'intégré a PB du code pour compensé le manque d'une commande ou d'une fonction en attendant
que Fred réalise une commande en natif, est effectivement une voie possible !
Pourquoi Fred ne le fait-il pas ?

Je réédite ma question principale pour Fred !
La capture audio est-elle prévu ?
Fred dit nous si c'est prévu ! :oops:

A+
Ulix
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Au sujet de la bibliothèque "Sound"

Message par graph100 »

Ulix a écrit :Pourquoi Fred ne le fait-il pas ?
Il me semble que le sujet revient régulièrement sur le tapis, surtout en temps de nouvelle version !
Et aussi que Fred a déjà donné son point de vu (impossible de me rappeler le sujet).

Mais dans mes souvenirs, Il n'a aucunement fait pour choix de rendre PB "minimaliste comme de l'asm", et c'est justement un problème qui est discuté dans le topic sur l'ARM...
Quand à intégrer des codes venant du forum dans PB, la raison principale doit être la masse de travail pour prendre le code, et l'adapter pour le rendre stable, fiable, multiplateforme.
PureBasic est utilisé professionnellement, il ne peux pas courir le risque de ne pas être fiable.

Des codes ils y en a des milliers, c'est la raison d'être du forum.
Si vous voulez un truc en particulier, codez le. Les librairies utilisateurs sont justement là pour cela !

Si PB permet de réaliser en 4 commandes pré-programmée un soft qui se vend 200€, je vois pas ce que Fred y gagne, autant faire le soft direct :roll:

Maintenant c'est clair qu'il manque quelques commande de manipulation des données de son. Mais basique !
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
jerexgrz
Messages : 279
Inscription : dim. 05/juin/2005 20:27

Re: Au sujet de la bibliothèque "Sound"

Message par jerexgrz »

la gestion du son se fait automatiquement pour gérer du 7.1, 5.1 ou 2.1 ?
Je pensais à gérer séparement les haut-parleurs, par exemple, si le tir provient de la gauche, on va se servir de l'enceinte gauche et inversement. Avec également la possibilité de mixer les sons, c'est à dire, d'envoyer le son sur l'enceinte gauche à 100% et en fonction du deplacement du tir, le son diminue pour augmenter sur l'enceinte arrière gauche par exemple.
Répondre