Added volume control

This commit is contained in:
2015-11-04 21:33:14 +01:00
parent c4d71e60b0
commit 69c1d8bd3a
3 changed files with 230 additions and 16 deletions
+6
View File
@@ -31,6 +31,7 @@ namespace MusicPlayer
public int Position { get { return Math.Min((int)((playpos / (double)Length) * 1000), 1000); } }
private long Length { get; set; }
private long playpos = 0;
public float Volume { get; set; }
public int CurrentTime { get; set; }
@@ -51,6 +52,7 @@ namespace MusicPlayer
public AudioHandler(Main main)
{
this.main = main;
Volume = 1.0f;
CreateThreads();
}
@@ -139,6 +141,7 @@ namespace MusicPlayer
using (WaveOut waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback()))
{
waveOut.Init(blockAlignedStream);
waveOut.Volume = Volume;
waveOut.Play();
if (CurrentSong == null || CurrentSong.Seconds == 0)
@@ -151,6 +154,8 @@ namespace MusicPlayer
{
System.Threading.Thread.Sleep(10);
waveOut.Volume = Volume;
if (AState == AudioState.PLAYING && waveOut.PlaybackState == PlaybackState.Paused)
{
blockAlignedStream.Position = position;
@@ -187,6 +192,7 @@ namespace MusicPlayer
}
}
playpos = blockAlignedStream.Position;
CurrentTime = (int)(playpos / waveOut.OutputWaveFormat.AverageBytesPerSecond);
+178 -16
View File
@@ -112,6 +112,21 @@ namespace MusicPlayer
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
this.NotifyMenuStripNextButton = new System.Windows.Forms.ToolStripMenuItem();
this.NotifyMenuStripPreviousButton = new System.Windows.Forms.ToolStripMenuItem();
this.VolumeControl = new System.Windows.Forms.NumericUpDown();
this.VolumeLabel = new System.Windows.Forms.Label();
this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
this.VolumeMenuStripButton = new System.Windows.Forms.ToolStripMenuItem();
this.Volume100Button = new System.Windows.Forms.ToolStripMenuItem();
this.Volume75Button = new System.Windows.Forms.ToolStripMenuItem();
this.Volume50Button = new System.Windows.Forms.ToolStripMenuItem();
this.Volume25Button = new System.Windows.Forms.ToolStripMenuItem();
this.Volume0Button = new System.Windows.Forms.ToolStripMenuItem();
this.VolumeCustomButton = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator();
this.VolumeCustomTextBox = new System.Windows.Forms.ToolStripTextBox();
this.VolumeCustomSetButton = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator();
this.VolumeCurrentLabel = new System.Windows.Forms.ToolStripMenuItem();
((System.ComponentModel.ISupportInitialize)(this.SongsTableView)).BeginInit();
this.MainPanel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.SplitContainer)).BeginInit();
@@ -123,6 +138,7 @@ namespace MusicPlayer
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.PositionTrackBar)).BeginInit();
this.NotifyMenuStrip.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.VolumeControl)).BeginInit();
this.SuspendLayout();
//
// SongsTableView
@@ -325,6 +341,7 @@ namespace MusicPlayer
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripSeparator1,
this.exitToolStripMenuItem});
this.fileToolStripMenuItem.ForeColor = System.Drawing.SystemColors.ControlText;
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
this.fileToolStripMenuItem.Text = "File";
@@ -332,12 +349,12 @@ namespace MusicPlayer
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(89, 6);
this.toolStripSeparator1.Size = new System.Drawing.Size(149, 6);
//
// exitToolStripMenuItem
//
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
this.exitToolStripMenuItem.Size = new System.Drawing.Size(92, 22);
this.exitToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.exitToolStripMenuItem.Text = "Exit";
this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
//
@@ -355,26 +372,26 @@ namespace MusicPlayer
// overviewToolStripMenuItem
//
this.overviewToolStripMenuItem.Name = "overviewToolStripMenuItem";
this.overviewToolStripMenuItem.Size = new System.Drawing.Size(123, 22);
this.overviewToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.overviewToolStripMenuItem.Text = "Overview";
this.overviewToolStripMenuItem.Click += new System.EventHandler(this.overviewToolStripMenuItem_Click);
//
// playlistsToolStripMenuItem
//
this.playlistsToolStripMenuItem.Name = "playlistsToolStripMenuItem";
this.playlistsToolStripMenuItem.Size = new System.Drawing.Size(123, 22);
this.playlistsToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.playlistsToolStripMenuItem.Text = "Playlists";
this.playlistsToolStripMenuItem.Click += new System.EventHandler(this.playlistsToolStripMenuItem_Click);
//
// toolStripSeparator4
//
this.toolStripSeparator4.Name = "toolStripSeparator4";
this.toolStripSeparator4.Size = new System.Drawing.Size(120, 6);
this.toolStripSeparator4.Size = new System.Drawing.Size(149, 6);
//
// ViewQueueButton
//
this.ViewQueueButton.Name = "ViewQueueButton";
this.ViewQueueButton.Size = new System.Drawing.Size(123, 22);
this.ViewQueueButton.Size = new System.Drawing.Size(152, 22);
this.ViewQueueButton.Text = "Queue";
this.ViewQueueButton.Click += new System.EventHandler(this.ViewCurrentPlaylistButton_Click);
//
@@ -687,7 +704,7 @@ namespace MusicPlayer
// CurrentSongLabel
//
this.CurrentSongLabel.AutoSize = true;
this.CurrentSongLabel.Location = new System.Drawing.Point(338, 59);
this.CurrentSongLabel.Location = new System.Drawing.Point(332, 59);
this.CurrentSongLabel.Name = "CurrentSongLabel";
this.CurrentSongLabel.Size = new System.Drawing.Size(111, 13);
this.CurrentSongLabel.TabIndex = 11;
@@ -796,11 +813,13 @@ namespace MusicPlayer
this.NotifyMenuStripPlayButton,
this.NotifyMenuStripPauseButton,
this.NotifyMenuStripStopButton,
this.toolStripSeparator8,
this.VolumeMenuStripButton,
this.toolStripSeparator3,
this.NotifyMenuStripNextButton,
this.NotifyMenuStripPreviousButton});
this.NotifyMenuStrip.Name = "NotifyMenuStrip";
this.NotifyMenuStrip.Size = new System.Drawing.Size(120, 148);
this.NotifyMenuStrip.Size = new System.Drawing.Size(153, 198);
//
// NotifyMenuStripPlayingLabel
//
@@ -808,7 +827,7 @@ namespace MusicPlayer
this.NotifyMenuStripPlayingSongLabel});
this.NotifyMenuStripPlayingLabel.Enabled = false;
this.NotifyMenuStripPlayingLabel.Name = "NotifyMenuStripPlayingLabel";
this.NotifyMenuStripPlayingLabel.Size = new System.Drawing.Size(119, 22);
this.NotifyMenuStripPlayingLabel.Size = new System.Drawing.Size(152, 22);
this.NotifyMenuStripPlayingLabel.Text = "Stopped";
//
// NotifyMenuStripPlayingSongLabel
@@ -822,12 +841,12 @@ namespace MusicPlayer
// toolStripSeparator2
//
this.toolStripSeparator2.Name = "toolStripSeparator2";
this.toolStripSeparator2.Size = new System.Drawing.Size(116, 6);
this.toolStripSeparator2.Size = new System.Drawing.Size(149, 6);
//
// NotifyMenuStripPlayButton
//
this.NotifyMenuStripPlayButton.Name = "NotifyMenuStripPlayButton";
this.NotifyMenuStripPlayButton.Size = new System.Drawing.Size(119, 22);
this.NotifyMenuStripPlayButton.Size = new System.Drawing.Size(152, 22);
this.NotifyMenuStripPlayButton.Text = "Play";
this.NotifyMenuStripPlayButton.Click += new System.EventHandler(this.NotifyMenuStripPlayButton_Click);
//
@@ -835,7 +854,7 @@ namespace MusicPlayer
//
this.NotifyMenuStripPauseButton.Enabled = false;
this.NotifyMenuStripPauseButton.Name = "NotifyMenuStripPauseButton";
this.NotifyMenuStripPauseButton.Size = new System.Drawing.Size(119, 22);
this.NotifyMenuStripPauseButton.Size = new System.Drawing.Size(152, 22);
this.NotifyMenuStripPauseButton.Text = "Pause";
this.NotifyMenuStripPauseButton.Click += new System.EventHandler(this.NotifyMenuStripPauseButton_Click);
//
@@ -843,34 +862,161 @@ namespace MusicPlayer
//
this.NotifyMenuStripStopButton.Enabled = false;
this.NotifyMenuStripStopButton.Name = "NotifyMenuStripStopButton";
this.NotifyMenuStripStopButton.Size = new System.Drawing.Size(119, 22);
this.NotifyMenuStripStopButton.Size = new System.Drawing.Size(152, 22);
this.NotifyMenuStripStopButton.Text = "Stop";
this.NotifyMenuStripStopButton.Click += new System.EventHandler(this.NotifyMenuStripStopButton_Click);
//
// toolStripSeparator3
//
this.toolStripSeparator3.Name = "toolStripSeparator3";
this.toolStripSeparator3.Size = new System.Drawing.Size(116, 6);
this.toolStripSeparator3.Size = new System.Drawing.Size(149, 6);
//
// NotifyMenuStripNextButton
//
this.NotifyMenuStripNextButton.Name = "NotifyMenuStripNextButton";
this.NotifyMenuStripNextButton.Size = new System.Drawing.Size(119, 22);
this.NotifyMenuStripNextButton.Size = new System.Drawing.Size(152, 22);
this.NotifyMenuStripNextButton.Text = "Next";
this.NotifyMenuStripNextButton.Click += new System.EventHandler(this.NotifyMenuStripNextButton_Click);
//
// NotifyMenuStripPreviousButton
//
this.NotifyMenuStripPreviousButton.Name = "NotifyMenuStripPreviousButton";
this.NotifyMenuStripPreviousButton.Size = new System.Drawing.Size(119, 22);
this.NotifyMenuStripPreviousButton.Size = new System.Drawing.Size(152, 22);
this.NotifyMenuStripPreviousButton.Text = "Previous";
this.NotifyMenuStripPreviousButton.Click += new System.EventHandler(this.NotifyMenuStripPreviousButton_Click);
//
// VolumeControl
//
this.VolumeControl.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.VolumeControl.BackColor = System.Drawing.SystemColors.GrayText;
this.VolumeControl.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.VolumeControl.Increment = new decimal(new int[] {
5,
0,
0,
0});
this.VolumeControl.Location = new System.Drawing.Point(736, 4);
this.VolumeControl.Name = "VolumeControl";
this.VolumeControl.Size = new System.Drawing.Size(36, 16);
this.VolumeControl.TabIndex = 7;
this.VolumeControl.Value = new decimal(new int[] {
100,
0,
0,
0});
this.VolumeControl.ValueChanged += new System.EventHandler(this.VolumeControl_ValueChanged);
//
// VolumeLabel
//
this.VolumeLabel.AutoSize = true;
this.VolumeLabel.BackColor = System.Drawing.SystemColors.GrayText;
this.VolumeLabel.Location = new System.Drawing.Point(682, 4);
this.VolumeLabel.Name = "VolumeLabel";
this.VolumeLabel.Size = new System.Drawing.Size(48, 13);
this.VolumeLabel.TabIndex = 8;
this.VolumeLabel.Text = "Volume: ";
//
// toolStripSeparator8
//
this.toolStripSeparator8.Name = "toolStripSeparator8";
this.toolStripSeparator8.Size = new System.Drawing.Size(149, 6);
//
// VolumeMenuStripButton
//
this.VolumeMenuStripButton.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.VolumeCurrentLabel,
this.toolStripSeparator10,
this.Volume100Button,
this.Volume75Button,
this.Volume50Button,
this.Volume25Button,
this.Volume0Button,
this.toolStripSeparator9,
this.VolumeCustomButton});
this.VolumeMenuStripButton.Name = "VolumeMenuStripButton";
this.VolumeMenuStripButton.Size = new System.Drawing.Size(152, 22);
this.VolumeMenuStripButton.Text = "Volume";
//
// Volume100Button
//
this.Volume100Button.Name = "Volume100Button";
this.Volume100Button.Size = new System.Drawing.Size(154, 22);
this.Volume100Button.Text = "100%";
this.Volume100Button.Click += new System.EventHandler(this.Volume100Button_Click);
//
// Volume75Button
//
this.Volume75Button.Name = "Volume75Button";
this.Volume75Button.Size = new System.Drawing.Size(154, 22);
this.Volume75Button.Text = "75%";
this.Volume75Button.Click += new System.EventHandler(this.Volume75Button_Click);
//
// Volume50Button
//
this.Volume50Button.Name = "Volume50Button";
this.Volume50Button.Size = new System.Drawing.Size(154, 22);
this.Volume50Button.Text = "50%";
this.Volume50Button.Click += new System.EventHandler(this.Volume50Button_Click);
//
// Volume25Button
//
this.Volume25Button.Name = "Volume25Button";
this.Volume25Button.Size = new System.Drawing.Size(154, 22);
this.Volume25Button.Text = "25%";
this.Volume25Button.Click += new System.EventHandler(this.Volume25Button_Click);
//
// Volume0Button
//
this.Volume0Button.Name = "Volume0Button";
this.Volume0Button.Size = new System.Drawing.Size(154, 22);
this.Volume0Button.Text = "Mute";
this.Volume0Button.Click += new System.EventHandler(this.Volume0Button_Click);
//
// VolumeCustomButton
//
this.VolumeCustomButton.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.VolumeCustomTextBox,
this.VolumeCustomSetButton});
this.VolumeCustomButton.Name = "VolumeCustomButton";
this.VolumeCustomButton.Size = new System.Drawing.Size(154, 22);
this.VolumeCustomButton.Text = "Custom";
//
// toolStripSeparator9
//
this.toolStripSeparator9.Name = "toolStripSeparator9";
this.toolStripSeparator9.Size = new System.Drawing.Size(151, 6);
//
// VolumeCustomTextBox
//
this.VolumeCustomTextBox.Name = "VolumeCustomTextBox";
this.VolumeCustomTextBox.Size = new System.Drawing.Size(100, 23);
//
// VolumeCustomSetButton
//
this.VolumeCustomSetButton.Name = "VolumeCustomSetButton";
this.VolumeCustomSetButton.Size = new System.Drawing.Size(160, 22);
this.VolumeCustomSetButton.Text = "Set";
this.VolumeCustomSetButton.Click += new System.EventHandler(this.VolumeCustomSetButton_Click);
//
// toolStripSeparator10
//
this.toolStripSeparator10.Name = "toolStripSeparator10";
this.toolStripSeparator10.Size = new System.Drawing.Size(151, 6);
//
// VolumeCurrentLabel
//
this.VolumeCurrentLabel.Enabled = false;
this.VolumeCurrentLabel.Name = "VolumeCurrentLabel";
this.VolumeCurrentLabel.Size = new System.Drawing.Size(154, 22);
this.VolumeCurrentLabel.Text = "Currently 100%";
//
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(784, 461);
this.Controls.Add(this.VolumeLabel);
this.Controls.Add(this.VolumeControl);
this.Controls.Add(this.ControlsPanel);
this.Controls.Add(this.MainPanel);
this.Controls.Add(this.MenuStrip);
@@ -895,6 +1041,7 @@ namespace MusicPlayer
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.PositionTrackBar)).EndInit();
this.NotifyMenuStrip.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.VolumeControl)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
@@ -981,6 +1128,21 @@ namespace MusicPlayer
private System.Windows.Forms.ToolStripMenuItem resetToolStripMenuItem;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Label AddToQueueLabel;
private System.Windows.Forms.NumericUpDown VolumeControl;
private System.Windows.Forms.Label VolumeLabel;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator8;
private System.Windows.Forms.ToolStripMenuItem VolumeMenuStripButton;
private System.Windows.Forms.ToolStripMenuItem Volume100Button;
private System.Windows.Forms.ToolStripMenuItem Volume75Button;
private System.Windows.Forms.ToolStripMenuItem Volume50Button;
private System.Windows.Forms.ToolStripMenuItem Volume25Button;
private System.Windows.Forms.ToolStripMenuItem Volume0Button;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator9;
private System.Windows.Forms.ToolStripMenuItem VolumeCustomButton;
private System.Windows.Forms.ToolStripTextBox VolumeCustomTextBox;
private System.Windows.Forms.ToolStripMenuItem VolumeCustomSetButton;
private System.Windows.Forms.ToolStripMenuItem VolumeCurrentLabel;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator10;
}
}
+46
View File
@@ -179,6 +179,11 @@ namespace MusicPlayer
NotifyMenuStripStopButton.Enabled = true;
}
if (VolumeCustomTextBox.Text == "")
VolumeCustomSetButton.Enabled = false;
else
VolumeCustomSetButton.Enabled = true;
if (RadioStationTextBox.Text.Length <= 10)
SetRadioStationButton.Enabled = false;
else
@@ -625,5 +630,46 @@ namespace MusicPlayer
{
main.Repopulate();
}
private void VolumeControl_ValueChanged(object sender, EventArgs e)
{
main.audio.Volume = (float)(VolumeControl.Value/100);
VolumeCurrentLabel.Text = "Currently " + VolumeControl.Value + "%";
}
private void Volume100Button_Click(object sender, EventArgs e)
{
VolumeControl.Value = 100;
}
private void Volume75Button_Click(object sender, EventArgs e)
{
VolumeControl.Value = 75;
}
private void Volume50Button_Click(object sender, EventArgs e)
{
VolumeControl.Value = 50;
}
private void Volume25Button_Click(object sender, EventArgs e)
{
VolumeControl.Value = 25;
}
private void Volume0Button_Click(object sender, EventArgs e)
{
VolumeControl.Value = 0;
}
private void VolumeCustomSetButton_Click(object sender, EventArgs e)
{
int volume;
bool volumeOK = int.TryParse(VolumeCustomTextBox.Text, out volume);
if(volumeOK)
VolumeControl.Value = Math.Max(Math.Min(volume, 100), 0);
VolumeCustomTextBox.Text = "";
}
}
}