Skip to content

Instantly share code, notes, and snippets.

@Cromm
Last active December 17, 2015 01:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Cromm/5531193 to your computer and use it in GitHub Desktop.
Save Cromm/5531193 to your computer and use it in GitHub Desktop.
In progress: A walkthrough as a batch file with certain automated commands to optimise a Windows 8 PC as a dedicated audio playback PC. The aim is to have the best sounding Windows 8 streamer and to achieve it with as little effort as possible...please leave comments and suggestions below.
@ECHO off
Echo *********************************
Echo use IDE setting in BIOS, not AHCI
ECho If you have already installed windows then use this procedure to change
Echo http://support.microsoft.com/kb/2751461
Echo *********************************
Echo
ECHO AFTER RUNNING THIS SCRIPT AND FOLLOWING THE INSTRUCTIONS, DON'T EXPECT YOUR PC TO BE USEFUL FOR ANYTHING
ECHO OTHER THAN OUTPUTTING AUDIO VIA A USB SOCKET TO A DAC.
ECHO
Pause
ECHO Change processor priority to background tasks
ECHO control panel - system - advanced system settings - advanced - optimised for background processes
pause
ECHO control panel - system - advanced system settings - adjust for best performance
pause
ECHO control panel - system - advanced system settings - advanced - disable paging file
pause
ECHO Under remote remove tick in Remote Assistance box and allow remote connections in remote desktop
pause
ECHO Go to device manager
ECHO If you are using USB-out connection to dac, go to device manager and disable the high definition audio controller.
ECHO Go to 'view by connection' and disable everything that you don't need
Pause
ECHO de-activate UAC
pause
ECHO Turn off system protection: control panel - system - System protection
pause
ECHO Optimise system for speed
pause
ECHO Disable power saving on network drivers, in device manager
ECHO Disable power saving on all USB hubs, in device manager
pause
ECHO Changed power setting to high performance and then changed: 1) USB selective suspent to disabled 2) turn off display after 1 minute
pause
ECHO Remove all ticks from Windows action centre
pause
ECHO Switch off Windows Defender
pause
ECHO Switch off Windows firewall
pause
ECHO Windows will continually remind you that your computer is at risk. To stop these reminders, go to “Change the way Security Center alerts me” - “Don’t notify me and don’t display the icon.”
pause
ECHO Disable Flash from Internet Explorer addons
pause
ECHO netplwiz from command prompt to remove need to login
pause
ECHO Open NAS on network and select save credentials (remember to enter \username so that it gets saved correctly). Not sure this works!!
pause
ECHO Remove all Windows programs and features except .net
pause
ECHO Reduce Data Execution Prevention - Turn on DEP for essential Windows programs and services only.
pause
ECHO Click on Windows Update on the left-hand pane - Change Settings - Never Check for Updates… - OK - close the update window.
pause
ECHO Right click on your HD icon and in general tab untick the 'allow files on this drive to have contents indexed...'. You may need to skip some files that you don't have access to
ECHO Apparently, once you've rebooted, come back here and tick the box and then once the process has finished, untick it again and again wait. ONly then will the files be unindexed - not sure why: see here: http://www.phasure.com/index.php?topic=548.msg3934#msg3934
pause
ECHO Useful for finding stuff in win8: create new folder on your desktop and rename it GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}
ECHO this will give you ability to do anything!
pause
ECHO open computer management - performance - data collection sets - system - Event Trace Session and disable everything you can.
pause
ECHO Attempt to assign fixed IRQs to soundcard/USB etc in the bios
ECHO if you can set these in the bios then that's better (use the /pcilock switch in boot.ini to prevent windows overriding bios-set IRQs)
ECHO BEFORE you go any further, check your IRQs using msinfo32.exe.
ECHO use device manager to identify which USB port your DAC is connected to (for example) and then try prioritising that.
ECHO Check the following values:
ECHO system timer (normally IRQ 0)
ECHO motherboard's hd graphics (normally something like IRQ4294967294)
ECHO keyboard (normally IRQ1) - I don't have one now
ECHO mouse (normally IRQ 12) - I don't have one now
ECHO numerical processor (normally IRQ 13)
ECHO cmos/rtc (normally IRQ 8) - Needs to be high priority
ECHO hd audio (normally IRQ 22) - This can be disabled in Device manager if you are using JPLAY
ECHO
ECHO Additionally, if you are using this script on an audio only JPLAY machine - ie signal travels between network and USB
ECHO sockets, check what the IRQs are for the two ports or cards. Try prioritising these IRQs too.
ECHo I've had great results with system timer priority 1 then USB out as 2 and network in as 3.
ECHO If different to the above exit this batch file and edit settings in the registry changes below
ECHO excellent primer on this here: http://helpdeskgeek.com/windows-vista-tips/manage-irq-settings-windows-vista-7/
echo.
echo ONe thing to try - de-prioritise all other IRQs below these as by default priority is not being set for the others...so anything could happen.
pause
ECHO Making registry changes...
REM creating a registry file
ECHO Windows Registry Editor Version 5.00 > XXHEVistaDead1.reg
ECHO ;[START] XXHE Vista Services >> XXHEVistaDead1.reg
ECHO.>> XXHEVistaDead1.reg
ECHO [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Dfrg\BootOptimizeFunction] >> XXHEVistaDead1.reg
ECHO "Enable"="N" >> XXHEVistaDead1.reg
ECHO.>> XXHEVistaDead1.reg
REM disable prefetch
ECHO [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters] >> XXHEVistaDead1.reg
ECHO "EnablePrefetcher"=dword:00000000 >> XXHEVistaDead1.reg
ECHO.>> XXHEVistaDead1.reg
REM disable paging executive
ECHO [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management] >> XXHEVistaDead1.reg
ECHO "DisablePagingExecutive"=dword:00000001 >> XXHEVistaDead1.reg
ECHO.>> XXHEVistaDead1.reg
REM disable hibernate
ECHO [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power] >> XXHEVistaDead1.reg
ECHO "HibernateEnabled"=dword:00000000 >> XXHEVistaDead1.reg
ECHO.>> XXHEVistaDead1.reg
ECHO ;Application Information >> XXHEVistaDead1.reg
ECHO [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Appinfo] >> XXHEVistaDead1.reg
ECHO "Start"=dword:00000003 >> XXHEVistaDead1.reg
ECHO.>> XXHEVistaDead1.reg
ECHO [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Reliability] >> XXHEVistaDead1.reg
ECHO "TimeStampInterval"=dword:00000000 >> XXHEVistaDead1.reg
ECHO.>> XXHEVistaDead1.reg
REM NTFS 8.3 disable (default is 2 in windows 8)
ECHO [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem] >> XXHEVistaDead1.reg
ECHO "NtfsDisable8dot3NameCreation"=dword:00000001 >> XXHEVistaDead1.reg
ECHO.>> XXHEVistaDead1.reg
ECHO [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender] >> XXHEVistaDead1.reg
ECHO "DisableAntiSpyware"=dword:00000001 >> XXHEVistaDead1.reg
ECHO.>> XXHEVistaDead1.reg
REM Remove the NTFS last access time. See: http://www.tomstricks.com/how-to-disable-the-ntfs-last-access-time-stamp-in-windows-vista-or-in-xp/
ECHO [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem] >> XXHEVistaDead1.reg
ECHO "NtfsDisableLastAccessUpdate"=dword:00000001 >> XXHEVistaDead1.reg
ECHO.>> XXHEVistaDead1.reg
REM added this: http://jplay.eu/computer-audio/playback-tweak-cpu-scheduler/#more-614
ECHO [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\PriorityControl] >> XXHEVistaDead1.reg
ECHO "Win32PrioritySeparation"=dword:00000014 >> XXHEVistaDead1.reg
ECHO "IRQ4294967290Priority"=dword:00000099 >> XXHEVistaDead1.reg
ECHO "IRQ13Priority"=dword:00000099 >> XXHEVistaDead1.reg
ECHO "IRQ0Priority"=dword:00000099 >> XXHEVistaDead1.reg
ECHO "IRQ8Priority"=dword:00000000 >> XXHEVistaDead1.reg
ECHO "IRQ22Priority"=dword:00000010 >> XXHEVistaDead1.reg
ECHO "IRQ1Priority"=dword:00000099 >> XXHEVistaDead1.reg
ECHO "IRQ12Priority"=dword:00000099 >> XXHEVistaDead1.reg
ECHO.>> XXHEVistaDead1.reg
REM executing the registry file
XXHEVistaDead1.reg
REM deleting the registry file
del XXHEVistaDead1.reg
ECHO.
ECHO.
pause
ECHO Disabling Application Compatibility Engine
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\AppCompat" /v DisableEngine /t REG_DWORD /d 1 /f
ECHO Stopping services...
REM Network Location Awareness
sc config NlaSvc start= disabled
REM Network List Service
sc config netprofm start= disabled
REM Print Spooler
sc config Spooler start= disabled
REM Themes
sc config Themes start= disabled
REM Security Center
sc config wscsvc start= disabled
REM Windows Defender
sc config WinDefend start= disabled
REM Diagnostic Service Host
sc config WdiServiceHost start= disabled
REM Certificate Propagation
sc config CertPropSvc start= disabled
REM Background Intelligent Transfer Service
sc config BITS start= disabled
REM Computer Browser
sc config Browser start= disabled
REM Windows Firewall
sc config MpsSvc start= disabled
REM Base Filtering Engine
sc config BFE start= disabled
REM Diagnostic Policy Service
sc config DPS start= disabled
REM Distributed Link Tracking Client
sc config TrkWks start= disabled
REM IP Helper
sc config iphlpsvc start= disabled
REM Program Compatibility Assistant Service
sc config PcaSvc start= disabled
REM Server
sc config LanmanServer start= disabled
REM Windows Connection Manager
sc config Wcmsvc start= disabled
REM Windows Management Instrumentation (manual) **This is needed to audio lense to function**
sc config Winmgmt start= disabled
REM Time Broker
sc config TimeBroker start= disabled
REM Windows Image Acquisition (WIA)
sc config stisvc start= disabled
REM Shell Hardware Detectio
sc config ShellHWDetection start= disabled
REM Superfetch (auto)
sc config SysMain start= disabled
REM Storage Service (manual)
sc config StorSvc start= disabled
REM Diagnostic Policy Service (auto)
sc config DPS start= disabled
REM Windows update (auto delayed)
sc config wuauserv start= disabled
REM Windows Management Instrumentation - need to investigate further before disabling
rem sc config winmgmt start= disabled
REM Windows Font Cache service (auto delayed)
sc config FontCache start= disabled
REM DHCP client (auto)
sc config Dhcp start= disabled
REM Cryptographic Services (auto)
sc config CryptSvc start= disabled
REM Device Association Service (auto triggered)
sc config DeviceAssociationService start= disabled
REM DNS client (auto)
sc config Dnscache start= disabled
REM Multimedia Class Scheduler (auto)
sc config MMCSS start= disabled
REM Remote Procedure Call (RPC) Locator (manual)
sc config RpcLocator start= disabled
REM Security Accounts Manager (auto)
sc config SamSs start= disabled
REM System Events Broker (manual) **unable to change status - further investigation needed**
sc config SystemEventsBroker start= disabled
REM Task Scheduler (auto) **unable to change status - further investigation needed**
sc config Schedule start= disabled
REM Touch Keyboard and Handwriting Panel Service (manual)
sc config TabletInputService start= disabled
REM VIA Karaoke digital mixer Service (auto) **This is only here because I unstalled VIA audio drivers**
sc config VIAKaraokeService start= disabled
REM Windows Audio (auto)
sc config Audiosrv start= disabled
REM Windows Audio Endpoint Builder (auto)
sc config AudioEndpointBuilder start= disabled
REM Windows Event Log (auto)
sc config EventLog start= disabled
REM WinHTTP Web Proxy Auto-Discovery Service (manual)
sc config WinHttpAutoProxySvc start= disabled
ECHO End of service disabling
Pause
ECHO.
ECHO Starting to disable drivers
REM ***DISABLING CERTAIN DRIVERS***
REM secure sockets protocol driver (default state unknown)
sc config rassstp start= disabled
ECHO.
pause
ECHO currently timebroker service and windows defender don't appear to allow the settings to be changed to disabled
pause
ECHO.
ECHO Turning of all windows features (see control panel > programs and features > features)
ECHO If you have any software on your audio pc (like audiolense) then check to see whether you need to leave .net active (if so, comment the first 3 out)
ECHO
Pause
echo
echo Disabling all Windows 8 Features except for search
echo
Dism /online /Disable-Feature /FeatureName:NetFx3 /NoRestart
Dism /online /Disable-Feature /FeatureName:NetFx4Extended-ASPNET45 /NoRestart
Dism /online /Disable-Feature /FeatureName:NetFx4-AdvSrvs /NoRestart
Dism /online /Disable-Feature /FeatureName:Xps-Foundation-Xps-Viewer /NoRestart
Dism /online /Disable-Feature /FeatureName:MSRDC-Infrastructure /NoRestart
Dism /online /Disable-Feature /FeatureName:Printing-XPSServices-Features /NoRestart
Dism /online /Disable-Feature /FeatureName:Microsoft-Windows-MobilePC-LocationProvider-INF /NoRestart
Dism /online /Disable-Feature /FeatureName:WindowsMediaPlayer /NoRestart
Dism /online /Disable-Feature /FeatureName:MediaPlayback /NoRestart
Dism /online /Disable-Feature /FeatureName:WCF-TCP-PortSharing45 /NoRestart
Dism /online /Disable-Feature /FeatureName:WCF-Services45 /NoRestart
Dism /online /Disable-Feature /FeatureName:Internet-Explorer-Optional-amd64 /NoRestart
Dism /online /Disable-Feature /FeatureName:FaxServicesClientPackage /NoRestart
Dism /online /Disable-Feature /FeatureName:Printing-Foundation-InternetPrinting-Client /NoRestart
Dism /online /Disable-Feature /FeatureName:Printing-Foundation-Features /NoRestart
Dism /online /Disable-Feature /FeatureName:Windows-Defender-Default-Definitions /NoRestart
Dism /online /Disable-Feature /FeatureName:Printing-Foundation-Features /NoRestart
Dism /online /Disable-Feature /FeatureName:WAS-WindowsActivationService /NoRestart
Dism /online /Disable-Feature /FeatureName:MicrosoftWindowsPowerShellV2Root /NoRestart
Dism /online /Disable-Feature /FeatureName:MicrosoftWindowsPowerShellV2 /NoRestart
Dism /online /Disable-Feature /FeatureName:WCF-TCP-PortSharing45 /NoRestart
echo.
pause
ECHO turning off logs under "On to the Log files !"...
wevtutil.exe sl Microsoft-Windows-Diagnosis-DPS/Operational /e:false
wevtutil.exe sl Microsoft-Windows-Diagnostics-Performance/Operational /e:false
wevtutil.exe sl Microsoft-Windows-GroupPolicy/Operational /e:false
wevtutil.exe sl Microsoft-Windows-ReadyBoost/Operational /e:false
wevtutil.exe sl Microsoft-Windows-ReliabilityAnalysisComponent/Operational /e:false
wevtutil.exe sl Microsoft-Windows-TaskScheduler/Operational /e:false
ECHO.
Pause
ECHO.
ECHO For my system I prefer useplatformclock to be set to true
REM look at hpet and timer stuff here: http://jplay.eu/forum/computer-audio/dynamictick-is-it-still-an-issue-in-windows-8/
bcdedit /set useplatformclock true
Pause
ECHO.
ECHO DONE!
ECHO.
ECHO Check task scheduler to see if there's anything I need to setup or edit there
pause
ECHO.
Echo check latency timings in both jriver and the USB driver control panel. Jriver I've left as default, USB are set to min
ECHO A few bios changes to note down when you're rebooting:
ECHO.
ECHO 1) Enable HPET (High precision event timer in bios - it was in power management section in mine.
ECHO 2) Enable turboboost
ECHO 3) Disable any virtualisation settings
ECHO 4) Disable Intel Speedstep (eg C1E and E1ST)
Echo 5) Disable all C-state controls
Echo 6) Enable hardware prefetcher
ECHO 7) Disable WOL
ECHO 8) Set your memory timing settings for as low frequency and high timings as possible (in practice, lower the RAM frequency and reduce the timing numbers to as low as you can get - complicated topic and requires experimentation. I got mine to 5-5-5-9)
ECHO 9) disable audio in bios if using external usb
Echo 10) do NOT disable USB 2.0 support, you will lose keyboard etc. (I can disable legacy usb support ok though)
Echo 11) disable all monitoring eh temp, fan rpm, CPU thermal monitoring etc (if you dare!)
Echo 12) CPU Enhanced Halt (C1E) - Disable
Echo 13) reduce internal graphics clock to minimum - mine was 400
Echo 14) Limit the number of cores enabled to one - I gues jplay does something similar but def better bass doing it here too.
Echo 15) Set turbo boost setting enabled and with everything at max
Echo 14) hyper threading enabled
Echo 15) check out the various settings to do with optimising power to cpu. I tried to increase the settings but it wouldn't boot. Once i'd reduced Vcore I could then notch these up to higher settings
Echo 16) maximise the CPU ratio
ECHO
ECHO THE END
ECHO ABOUT TO REBOOT! (ctrl-c to not reboot)
pause
shutdown -f -r -t 0
@Computer-Audio-Design
Copy link

Hi Cromm,

Just some questions.

  • use IDE setting in BIOS, not AHCI - Why is this?
  • GodMode.{ED7BA470-8E54-465E-825C-99712043E01C} - What does this folder allow you to do?
  • check latency timings in both jriver and the USB driver - how do you do that?
  • NtfsDisable8dot3NameCreation - What is this?
  • changing IRQ for hd audio - I just disable hd audio, but I am using JPLAY so maybe that's why I do not need it?

Looks great! I never heard of the "wevtutil.exe" command. Very useful!

@Cromm
Copy link
Author

Cromm commented May 12, 2013

Hi, As I understand it IDE removes some of the features like hotswap/smart etc which have to take up some processing time. I tried it and it didn't sound any worse...so I left it. I did a little further investigation and this guy seems to have come to the same conclusion - although on XP: http://translate.google.com/translate?depth=1&hl=en&ie=UTF8&prev=_t&rurl=translate.google.com&sl=ru&tl=en&u=http://cmp2-mihaylov.narod.ru/Optimisations_/

God mode is brilliant - you can control so much from one place...it's like creating a giant version of the control panel. This is especially useful in Windows 8 which makes everything worth doing...except checking the weather...so difficult to do. Just create a folder and rename it to that strange string...strange but true.

I use the waveio usb board. It comes with drivers. If you open up the driver control panel and go to buffer settings, I've found that by setting everything to minimum and the smallest asio buffer size I get the best sound. Clearly your drivers might be different but worth a shot.

I can't remember where I found the ntfs stuff. it would either be computer audiophile, xxe highend site or perhaps an overclocking site - IIRC it has something to do with optimising disk access times (but don't quote me)....again, nothing major.

Yep, you're right, my bad. Months ago I found I needed it but that was before JPLAY so it can now be disabled.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment