Crunchez vos adresses URL
|
Rejoignez notre discord
|
Hébergez vos photos
Affichage des résultats 1 à 4 sur 4
  1. #1
    Coin,

    Suite à ma demande dans un topic, j'essaie de realiser des scripts extremement basiques pour me familiariser avec la bestiole.

    L'idée matinale est de faire jouer 2 sons a la suite a PS. ne vous moquez pas devant tant de noobitude

    J'ai trouvé ceci:
    Code:
    $a = new-object –type system.media.soundplayer$a.soundlocation = "C:\Users\AmiralSlip\Downloads\son.wav“
    $a.play()
    Ca fonctionne pour un son.

    Mais je voudrais jouer 2 sons a la suite.

    j'ai essayé avec une virgule a la fin du 1er son,
    Code:
    $a.soundlocation = "C:\Users\AmiralSlip\Downloads\son.wav","C:\Users\AmiralSlip\Downloads\son2.wav“
    Mais ca ne lit que le son final. Idem quand je recopie la ligne du son2 apres la ligne 2.

    Une idée?
    penser a mettre une signature moins grosse

  2. #2
    Sans connaitre Powershell plus que toi, j'essaierai cela :

    $a = new-object –type system.media.soundplayer$a.soundlocation = "C:\Users\AmiralSlip\Downloads\son.wav“
    $a.play()
    $b = new-object –type system.media.soundplayer$a.soundlocation = "C:\Users\AmiralSlip\Downloads\son2.wav“
    $b.play()

    Après, je pense qu'il doit être possible de modifier soundlocation de $a pour utiliser le son2 et de relancer $a.play()

  3. #3
    Je ne connais pas plus Powershell, mais la proposition me semble plausible.

    Exercice pour aller plus loin (boucles): faire jouer tous les sons (disons, "fichiers .wav") d'un répertoire. Normalement, un shell est capable de faire ça

    (Après, une fois l'exercice réussi, il faut faire une pause parce qu'on a normalement les oreilles éclatées)

    Ceci étant dit, j'ai quand même l'impression qu'un shell, pour apprendre à programmer, c'est pas l'idéal.

  4. #4
    Le code correct est le suivant

    Code:
     $audioPlayer = New-Object -type System.Media.SoundPlayer
     $audioPlayer.SoundLocation = 'C:\mixkit-cartoon-door-melodic-bell-110.wav'
     $audioPlayer.PlaySync()
     $audioPlayer.SoundLocation = 'C:\mixkit-home-standard-ding-dong-109.wav'
     $audioPlayer.PlaySync()
    Plusieurs remarques:

    1) Généralement on appelle plutot ça du 'scripting' que de la programmation effectivement, mais c'est pas important la nuance est mince. Python peut être vu comme du scripting, mais certains diront programmaton. Bref pour faire très simple on va dire que "script" = programme court, "programmation" = programme long

    2) Nomme tes variables, au lieu d'utiliser "a" utilise un nom qui a du sens, ça te servira sur le long terme, bonne habitude à prendre

    3) Je sais pas si c'est une typo mais ta 2ème instruction est sur la même ligne que la première, collée. Mets chaque instruction sur une ligne différente pour avoir une bonne lisibilité du code.

    4) C'est compliqué à expliqué pour un débutant mais, quand tu appelles la méthode Play, le code lance un thread qui va jouer le son, et passe directement à l'instruction suivante.
    Donc si tu n'utilises pas "PlaySync", le code va joueur le premier son et va immédiatement essayer de joueur le 2ème son, ce qui va sûrement échouer.

    PlaySync est une méthode dite "Bloquante" elle va bloquer jusqu'à la fin du son, puis jouer le deuxième. On appelle ça du multithreading et du code asynchrone, un peu compliqué pour débuter.

    5) Regarde la documentation, tu aurais vu que ce que tu essayais de faire avec les paramètres (passer 2 paramètres ave une virgule) n'existe tout simplement pas dans ce cas (pour cette propriété/méthode):

    https://learn.microsoft.com/en-us/do...owsdesktop-6.0

    J'ai trouvé la méthode PlaySync dans la doc:

    https://learn.microsoft.com/en-us/do...owsdesktop-6.0

    - - - Mise à jour - - -

    6) Je vois que tu n'utilises pas de code completion, si tu écris ton script directement dans une fenetre powershell, tu verras qu'en appuyant sur Tab, le code se complète automatiquement, avec la bonne casse (majuscule, minuscule) pour les méthodes.

    Ca te permettra d'explorer les méthodes dispo savoir la doc un peu, c'est genre une doc intégrée.

    Le mieux c'est d'utiliser un IDE (environnement de dev), genre PyCharm avec le pluging Powershell. Ou visual studio code avec un plugin powershell.

    Ce sont 2 options gratos et ça te facilitera grandement la tache, ça pourra aussi vérifier ton code et t'afficher quand t'as fait une erreur, une typo, etc.

    - - - Mise à jour - - -

    Donc par example j'ai pas tapé "System.Media.SoundPlayer"

    J'ai tapé: "Sy[tab].M[tab].Sou[tab]" et ça m'a tout complété automatiquement
    Dernière modification par Anonyme20240202 ; 07/11/2022 à 14h37.

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •