Created
April 6, 2020 13:21
-
-
Save MartinBspheroid/b490771af8d1479af65e9f07436aac1c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.ComponentModel; | |
using System.Data; | |
using System.Drawing; | |
using System.Linq; | |
using System.Runtime.InteropServices; | |
using System.Text; | |
using System.Threading.Tasks; | |
using System.Windows.Forms; | |
using mb; | |
//private static extern int waveOutSetVolume(IntPtr hwo, uint dwVolume); | |
namespace SoundTestApp | |
{ | |
public partial class Form1 : Form | |
{ | |
public Form1() | |
{ | |
InitializeComponent(); | |
mb.TaskScheduler.Instance.ScheduleTask(14, 21, 24, () => | |
{ | |
SetVolume(0); | |
}); | |
mb.TaskScheduler.Instance.ScheduleTask(14, 23, 24, () => { SetVolume(10); }); | |
} | |
private void button1_Click(object sender, EventArgs e) | |
{ | |
Play(); | |
} | |
private void Play() | |
{ | |
string soundFile = @"D:\testFile.wav"; | |
var sound = new System.Media.SoundPlayer(soundFile); | |
sound.PlayLooping(); | |
} | |
private void button2_Click(object sender, EventArgs e) | |
{ | |
Console.WriteLine("Click!"); | |
SetVolume(0); | |
} | |
private void Form1_Load(object sender, EventArgs e) | |
{ | |
} | |
[DllImport("winmm.dll")] private static extern int waveOutGetVolume(IntPtr hwo, out uint dwVolume); | |
[DllImport("winmm.dll")] private static extern int waveOutSetVolume(IntPtr hwo, uint dwVolume); | |
/// <summary> | |
/// Returns volume from 0 to 10 | |
/// </summary> | |
/// <returns>Volume from 0 to 10</returns> | |
public static int GetVolume() | |
{ | |
uint CurrVol = 0; | |
waveOutGetVolume(IntPtr.Zero, out CurrVol); | |
ushort CalcVol = (ushort)(CurrVol & 0x0000ffff); | |
int volume = CalcVol / (ushort.MaxValue / 10); | |
return volume; | |
} | |
/// <summary> | |
/// Sets volume from 0 to 10 | |
/// </summary> | |
/// <param name="volume">Volume from 0 to 10</param> | |
public static void SetVolume(int volume) | |
{ | |
int NewVolume = ((ushort.MaxValue / 10) * volume); | |
uint NewVolumeAllChannels = (((uint)NewVolume & 0x0000ffff) | ((uint)NewVolume << 16)); | |
waveOutSetVolume(IntPtr.Zero, NewVolumeAllChannels); | |
} | |
private void button3_Click(object sender, EventArgs e) | |
{ | |
SetVolume(10); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment