IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Jouer une note de musique


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 242
    Par défaut Jouer une note de musique
    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

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 545
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 545

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 242
    Par défaut
    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 ?

  4. #4
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 532
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 532
    Par défaut
    Citation Envoyé par HENRYC Voir le message
    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.

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 545
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 545
    Par défaut
    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)

  6. #6
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 242
    Par défaut
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    using Microsoft.DirectX
    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.

    Merci

  7. #7
    Membre Expert
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 661
    Par défaut
    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.

  8. #8
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 532
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 532
    Par défaut
    Citation Envoyé par HENRYC Voir le message
    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.
    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;
    	}
    Fichiers attachés Fichiers attachés

  9. #9
    Membre émérite
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 896
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 896
    Par défaut
    Citation Envoyé par HENRYC Voir le message
    Toutefois le résultat n'est pas terrible, terrible ...
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Lazarus] Jouer une note de musique et l'enregistrer
    Par msuire dans le forum Lazarus
    Réponses: 19
    Dernier message: 31/12/2021, 08h05
  2. Jouer une note de musique en HTML ou JavaScript
    Par §Gama§ dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 17/09/2014, 22h30
  3. Jouer une note isolée en MIDI
    Par anadoncamille dans le forum Multimédia
    Réponses: 21
    Dernier message: 26/06/2011, 10h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo