Bonjour,
J'ai besoin de faire jouer des notes de musique par mon PC.
Une note de musique correspondant à une fréquence et une durée (pour faire simple et sans choquer Mozart !),
connaissez-vous la classe d'objet qui permet cela en C# ?
Merci
Bonjour,
J'ai besoin de faire jouer des notes de musique par mon PC.
Une note de musique correspondant à une fréquence et une durée (pour faire simple et sans choquer Mozart !),
connaissez-vous la classe d'objet qui permet cela en C# ?
Merci
simplement Console.Beep https://learn.microsoft.com/fr-fr/do...p?view=net-8.0
Merci Umfred
Effectivement j'ignorais qu'en passant par:
Console.Beep au lieu de SystemSounds.Beep,
on pouvait moduler le son.
Toutefois le résultat n'est pas terrible, terrible ...
Il doit bien exister quelque chose qui permette de mieux gérer les sons afin d'améliorer le résultat ?
chercher une bibliothéque externe sinon il y a le SDK de Direct X qui propose DirectSound.
Avec DirectSound évidemment cela propose plus de fonctionnalités vous pouvez accéder à l'échantillonage brut du son et évidemment faire de la modulation, jouer sur la fréquence etc...
attention pour .NET cela va jusqu'à Direct X9.
SystemSounds joue les sons système et SystemSounds.Beep correspond au son associé à l'évènement Beep de windows ("son par défaut" qui se définit dans les paramètres Sons de windows)
Bonjour,
Au cours de mes recherches sur internet, j'ai effectivement vue l'option DirectX.
Il est présent en version 12 sur mon PC.
Mais quand je cherche à l'ajouter à Visual Studio 2019, je vais dans Ajouter un élément, et il n'est pas dans la liste des éléments disponibles.
Il n'est pas non plus déjà installé, puisque je ne peux pas utiliser la directive
De plus, si vos connaissez un tuto bien fait sur DirectX, ça m'intéresse, mes recherches sur le net n'ont pas donné grand chose.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2using Microsoft.DirectX
Merci
Bonjour,
S'il s'agit d'une simple note de musique, je pense qu'il est possible même faire ça à la main. Il suffit de créer un fichier .wav sur le tas et de le lire avec le programme (en utilisant une des nombreuses options).
Ou même s'il s'agit d'un programme de type "piano", autant lire des .wav de chaque note.
La finalité du programme peut faire que la solution soit plus ou moins simple.
je joins un fichier zip du SDK.
J'ai Visual Studio 2012 bref une vieille version mais ça y est ça compile et ça s'exécute
Attention pour éviter les exceptions utiliser [STAThread] comme directive de compilation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 [STAThread] public static int Main(string[] Args) { Application.Run(new MainForm()); return 0; }
Effectivement.
J'ai joué à ça sur deux machines sous Windows 10 et 11, et il m'est apparu que :
- en dessous d'une certaine durée le son n'est pas audible
- au-delà d'une certaine durée en fonction de la fréquence, en fonction du périphérique, le son peut être assourdissant
Notamment, alors qu'un haut-parleur est connecté via un module qui va limiter le volume pour éviter des problèmes d'audition, une oreillette Bluetooth n'est pas nécessairement munie de cette limitation, et cela peut s'avérer dangereux lors de l'utilisation de l'instruction Console.Beep(,). Une combinaison de fréquence/durée qui sur une machine est insuffisante à éveiller le système, peut sur une autre, selon le périphérique, risquer de causer des dommages à l'oreille.
Lors du paramétrage sur une nouvelle machine l'utilisateur serait bien inspiré de commencer par tenir l'oreillette à quelques centimètres de son oreille, afin d'éviter des problèmes, et en fonction de cela effectuer ensuite un test dans des conditions normales.- ces valeurs sont variables d'une machine à l'autre, d'un périphérique à l'autre ; il est donc souhaitable d'architecturer l'application de façon que l'utilisateur puisse facilement jouer sur ces limites, et je ne jurerais pas que les mises à jour ne sont pas susceptibles de les faire évoluer
- la gestion des sons par Console.Beep n'est pas active en permanence, et il peut être nécessaire de commencer par envoyer un son grave, qui sera peu audible de par sa fréquence, avec une durée suffisante pour éveiller le système, avant d'envoyer le son souhaité. L'opération peut être à refaire cinq secondes plus tard. Jouer un son .wav est susceptible aussi d'éveiller la sono, donc un enregistrement .wav muet peut être une solution.
Il s'agissait de fournir une information à l'utilisateur quant au moment auquel est exécutée une action, donc je n'ai pas cherché du côté d'un système plus évolué comme DirectX. On dirait que je serais bien inspiré de trouver un moment pour au moins un rapide survol.
Dans le cas de jouer une note, clairement l'énoncé est différent, donc la motivation est plus forte pour aller vers un système dédié plus évolué, comme semble-t-il DirectX.
Partager