Page 1 sur 1

[Tutoriel] Créer un Custom Boot Sound

Posté : dim. 22 mars 2026 09:51
par KORSiRO
Salut à tous !

Voici un petit tuto pour celles et ceux qui souhaitent changer le son de démarrage de leur PC par un son personnalisé !



Commencez par récupérer ou créer votre son en .wav (de 5 à 10 secondes c'est l'idéal)

1. Créer un dossier "BootSound" à la racine de votre disque C:

2. Dans ce dossier, créer 2 fichiers (avec un éditeur de texte, j'utilise notepad++) :

- play_theme.ps1
- run_hidden.vbs

play_theme.ps1 :

Code : Tout sélectionner

$ErrorActionPreference = "Stop"

$player = New-Object Media.SoundPlayer "C:\BootSound\stranger_theme.wav"
$player.Load()

$deadline = (Get-Date).AddSeconds(30)
do {
    $svc = Get-Service -Name "AudioSrv" -ErrorAction SilentlyContinue
    Start-Sleep -Milliseconds 50
} until (($svc -and $svc.Status -eq "Running") -or (Get-Date) -gt $deadline)

Start-Sleep -Milliseconds 250

Add-Type -TypeDefinition @"
using System;
using System.Runtime.InteropServices;

namespace CoreAudioUSB2 {

  [ComImport]
  [Guid("5CDF2C82-841E-4546-9722-0CF74078229A")]
  [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  interface IAudioEndpointVolume {
    int RegisterControlChangeNotify(IntPtr pNotify);
    int UnregisterControlChangeNotify(IntPtr pNotify);
    int GetChannelCount(out uint pnChannelCount);
    int SetMasterVolumeLevel(float fLevelDB, ref Guid pguidEventContext);
    int SetMasterVolumeLevelScalar(float fLevel, ref Guid pguidEventContext);
    int GetMasterVolumeLevel(out float pfLevelDB);
    int GetMasterVolumeLevelScalar(out float pfLevel);
    int SetChannelVolumeLevel(uint nChannel, float fLevelDB, ref Guid pguidEventContext);
    int SetChannelVolumeLevelScalar(uint nChannel, float fLevel, ref Guid pguidEventContext);
    int GetChannelVolumeLevel(uint nChannel, out float pfLevelDB);
    int GetChannelVolumeLevelScalar(uint nChannel, out float pfLevel);
    int SetMute([MarshalAs(UnmanagedType.Bool)] bool bMute, ref Guid pguidEventContext);
    int GetMute(out bool pbMute);
    int GetVolumeStepInfo(out uint pnStep, out uint pnStepCount);
    int VolumeStepUp(ref Guid pguidEventContext);
    int VolumeStepDown(ref Guid pguidEventContext);
    int QueryHardwareSupport(out uint pdwHardwareSupportMask);
    int GetVolumeRange(out float pflVolumeMindB, out float pflVolumeMaxdB, out float pflVolumeIncrementdB);
  }

  [ComImport]
  [Guid("A95664D2-9614-4F35-A746-DE8DB63617E6")]
  [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  interface IMMDeviceEnumerator {
    int NotImpl1();
    int GetDefaultAudioEndpoint(int dataFlow, int role, out IMMDevice dev);
  }

  [ComImport]
  [Guid("D666063F-1587-4E43-81F1-B948E807363F")]
  [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
  interface IMMDevice {
    int Activate(ref Guid iid, int clsctx, IntPtr act, [MarshalAs(UnmanagedType.Interface)] out object obj);
  }

  public static class VolumeCtl {
    static IAudioEndpointVolume GetVol(int role) {
      var t = Type.GetTypeFromCLSID(new Guid("BCDE0395-E52F-467C-8E3D-C4579291692E"));
      var e = (IMMDeviceEnumerator)Activator.CreateInstance(t);
      IMMDevice d; e.GetDefaultAudioEndpoint(0, role, out d); // eRender
      object o;
      Guid iid = typeof(IAudioEndpointVolume).GUID;
      d.Activate(ref iid, 23, IntPtr.Zero, out o); // CLSCTX_ALL=23
      return (IAudioEndpointVolume)o;
    }

    public static float Get(int role) {
      float v;
      GetVol(role).GetMasterVolumeLevelScalar(out v);
      return v;
    }

    public static void Set(int role, float v) {
      if (v < 0f) v = 0f;
      if (v > 1f) v = 1f;
      Guid g = Guid.Empty;
      GetVol(role).SetMasterVolumeLevelScalar(v, ref g);
    }

    public static void SetAll(float v) { Set(0,v); Set(1,v); Set(2,v); }
  }
}
"@

$old0 = [CoreAudioUSB2.VolumeCtl]::Get(0)
$old1 = [CoreAudioUSB2.VolumeCtl]::Get(1)
$old2 = [CoreAudioUSB2.VolumeCtl]::Get(2)

$target = 0.10   
[CoreAudioUSB2.VolumeCtl]::SetAll($target)
Start-Sleep -Milliseconds 200

$player.PlaySync()

[CoreAudioUSB2.VolumeCtl]::Set(0, $old0)
[CoreAudioUSB2.VolumeCtl]::Set(1, $old1)
[CoreAudioUSB2.VolumeCtl]::Set(2, $old2)
En fonction du nom de votre fichier .wav il faut modifier une ligne de code :

Code : Tout sélectionner

$player = New-Object Media.SoundPlayer "C:\BootSound\stranger_theme.wav"

Il faut donc changer le nom du fichier .wav ici

Le code est fait pour qu'au boot le son soit lancé à 10% du volume général.
Ensuite le volume général retrouve sa valeur précédente (celle avant l'extinction du PC)
Pour changer le % du volume lors de la lecture du son il faut modifier cette ligne :

Code : Tout sélectionner

$target = 0.10

(0.10 = 10%)


run_hidden.vbs :

Code : Tout sélectionner

CreateObject("WScript.Shell").Run "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -ExecutionPolicy Bypass -File ""C:\BootSound\play_theme.ps1""", 0
sur celui-ci il n'y a rien à modifier

3. Lancer le planificateur de tâches

Créer une tâche :

Onglet Général > Nom > donner un nom à la tâche
Onglet Général > "Utiliser le compte d'utilisateur suivant ....." sélectionner l'utilisateur actuel (ton compte)
Onglet Général > Cocher "Exécuter avec les autorisations maximales"

Image

Onglet Déclencheurs > Nouveau > Lancer la tâche à l'ouverture de session

Image

Onglet Actions > Nouveau > Action : Démarrer un programme
Onglet Actions > Programme/script > wscript.exe
Onglet Actions > Ajouter des arguments : "C:\BootSound\run_hidden.vbs"
Onglet Actions > Commencer dans : C:\BootSound

Image

Onglet Conditions > Décoche tout

Image

Onglet Paramètres > Cocher "Autoriser l'exécution de la tâche à la demande"
Onglet Paramètres > Cocher "Si la tâche en cours ne se termine pas, forcez son arrêt"
et décochez tout le reste.

Image

Ne pas oublier d'aller dans les sons Windows et de décocher "Jouer le son de démarrage de Windows" pour éviter que Windows joue en même temps le son du boot d'origine

Image

Voilà il ne vous reste plus qu'a essayer :)

Re: [Tutoriel] Créer un Custom Boot Sound

Posté : dim. 22 mars 2026 10:12
par PONPON
wahoouuu , super tuto !
avec un tuto aussi précis on peut pas ce tromper :clap:
on voie qu'il y a de belle connaissance en personnalisation d'una sur ce forum et surtout un grand partage :116:

un grand merci a toi KORSIRO ;)

Re: [Tutoriel] Créer un Custom Boot Sound

Posté : dim. 22 mars 2026 10:54
par LuLu38
Super Tuto

Je vais tester ça pour le fun

Merci
:D

Re: [Tutoriel] Créer un Custom Boot Sound

Posté : dim. 22 mars 2026 10:57
par KORSiRO
PONPON a écrit : dim. 22 mars 2026 10:12 wahoouuu , super tuto !
avec un tuto aussi précis on peut pas ce tromper :clap:
on voie qu'il y a de belle connaissance en personnalisation d'una sur ce forum et surtout un grand partage :116:

un grand merci a toi KORSIRO ;)
LuLu38 a écrit : dim. 22 mars 2026 10:54 Super Tuto

Je vais tester ça pour le fun

Merci
:D
Merci ! C’est avec plaisir :)
Le partage c’est la clé !

Re: [Tutoriel] Créer un Custom Boot Sound

Posté : dim. 22 mars 2026 11:19
par disc0
Merci pour ton partage KORSiRO et le partage de tes connaissances dans ce domaine ;)

Re: [Tutoriel] Créer un Custom Boot Sound

Posté : dim. 22 mars 2026 12:04
par KORSiRO
disc0 a écrit : dim. 22 mars 2026 11:19 Merci pour ton partage KORSiRO et le partage de tes connaissances dans ce domaine ;)
Avec plaisir ! je m'inscris sur des forums de partage d'infos, tutos etc pour faire de même à mon niveau dès que je le peux ;)