git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorBellai Ádám <USER\adam.bellai>
Tue, 14 Nov 2017 14:16:12 +0000 (14:16 +0000)
committerBellai Ádám <USER\adam.bellai>
Tue, 14 Nov 2017 14:16:12 +0000 (14:16 +0000)
client/AudioRecorder/CustomTrackBar.cs
client/AudioRecorder/MainForm.Designer.cs
client/AudioRecorder/MainForm.cs
client/AudioRecorder/WavRecorder.cs

index 97c101a3f3e3b5cb4089b3f478a9862dd7833298..0a997d85da42200d6e10bb963f2610472bec554e 100644 (file)
@@ -1,40 +1,43 @@
 using System;\r
-using System.Collections.Generic;\r
-using System.ComponentModel;\r
 using System.Drawing;\r
-using System.Data;\r
-using System.Linq;\r
-using System.Text;\r
-using System.Threading.Tasks;\r
 using System.Windows.Forms;\r
 \r
-namespace AudioRecorder\r
-{\r
-    public partial class CustomTrackBar : UserControl\r
-    {\r
+namespace AudioRecorder {\r
+    public partial class CustomTrackBar : UserControl {\r
+        public delegate void SetValueDelegate(int value);\r
+\r
         public MainForm MainForm { get; set; }\r
 \r
-        public CustomTrackBar()\r
-        {\r
+        private SetValueDelegate setValueDelegate;\r
+\r
+        public CustomTrackBar() {\r
             InitializeComponent();\r
         }\r
 \r
-        public void setMinimumMaximumSizesAndVolume(int minimum, int maximum, int value)\r
-        {\r
+        public void setMinimumMaximumSizesAndVolume(int minimum, int maximum, int value) {\r
             trackBar1.Maximum = maximum;\r
             trackBar1.Minimum = minimum;\r
             trackBar1.Value = value;\r
         }\r
 \r
-        public void setTickLabelLocationByPercentage(int percentage)\r
-        {\r
+        public void setTickLabelLocationByPercentage(int percentage) {\r
             //mert a magasága a trackbarnak 200\r
             tickLabel.Location = new Point(tickLabel.Location.X, 200 - (percentage * 2));\r
         }\r
 \r
-        private void trackBar1_ValueChanged(object sender, EventArgs e)\r
-        {\r
+        private void trackBar1_ValueChanged(object sender, EventArgs e) {\r
             MainForm.volumeChanged(sender, e);\r
         }\r
+\r
+        public void SetValue(int value) {\r
+            if (trackBar1.InvokeRequired) {\r
+                setValueDelegate = SetTrackBarValue;\r
+                this.Invoke(setValueDelegate, new Object[] { value });\r
+            } else SetTrackBarValue(value);\r
+        }\r
+\r
+        private void SetTrackBarValue(int value) {\r
+            trackBar1.Value = value;\r
+        }\r
     }\r
 }\r
index ea1c0188bcc17561b27fac315dba0f48ab6fa2e7..784534c0c13f8844530f2894adaf4707aa6084e8 100644 (file)
@@ -34,11 +34,11 @@ namespace AudioRecorder {
             this.groupBox4 = new System.Windows.Forms.GroupBox();\r
             this.pauseButton = new System.Windows.Forms.Button();\r
             this.groupBox2 = new System.Windows.Forms.GroupBox();\r
+            this.verticalProgressBar1 = new AudioRecorder.VerticalProgressBar();\r
             this.customTrackBar1 = new AudioRecorder.CustomTrackBar();\r
             this.fileNameLabel = new System.Windows.Forms.Label();\r
             this.playButton = new System.Windows.Forms.Button();\r
             this.groupBox3 = new System.Windows.Forms.GroupBox();\r
-            this.verticalProgressBar1 = new AudioRecorder.VerticalProgressBar();\r
             this.groupBox1.SuspendLayout();\r
             this.groupBox4.SuspendLayout();\r
             this.groupBox2.SuspendLayout();\r
@@ -147,6 +147,15 @@ namespace AudioRecorder {
             this.groupBox2.TabIndex = 6;\r
             this.groupBox2.TabStop = false;\r
             // \r
+            // verticalProgressBar1\r
+            // \r
+            this.verticalProgressBar1.BackColor = System.Drawing.Color.White;\r
+            this.verticalProgressBar1.ForeColor = System.Drawing.Color.White;\r
+            this.verticalProgressBar1.Location = new System.Drawing.Point(18, 19);\r
+            this.verticalProgressBar1.Name = "verticalProgressBar1";\r
+            this.verticalProgressBar1.Size = new System.Drawing.Size(15, 203);\r
+            this.verticalProgressBar1.TabIndex = 12;\r
+            // \r
             // customTrackBar1\r
             // \r
             this.customTrackBar1.Location = new System.Drawing.Point(39, 15);\r
@@ -189,15 +198,6 @@ namespace AudioRecorder {
             this.groupBox3.TabIndex = 10;\r
             this.groupBox3.TabStop = false;\r
             // \r
-            // verticalProgressBar1\r
-            // \r
-            this.verticalProgressBar1.BackColor = System.Drawing.Color.White;\r
-            this.verticalProgressBar1.ForeColor = System.Drawing.Color.White;\r
-            this.verticalProgressBar1.Location = new System.Drawing.Point(18, 19);\r
-            this.verticalProgressBar1.Name = "verticalProgressBar1";\r
-            this.verticalProgressBar1.Size = new System.Drawing.Size(15, 203);\r
-            this.verticalProgressBar1.TabIndex = 12;\r
-            // \r
             // MainForm\r
             // \r
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\r
index 6a4ad3ef5cdc9d76fdf9542bd188d653ba7ce1f4..25c3423ff87be3084e00d58f6c23e2186a5c2aad 100644 (file)
@@ -6,12 +6,12 @@ using NAudio.CoreAudioApi;
 using System.Windows.Forms;\r
 using System.IO;\r
 using System.Runtime.InteropServices;\r
-namespace AudioRecorder\r
-{\r
+using System.Threading;\r
+\r
+namespace AudioRecorder {\r
     public delegate void RefreshPanelDelegate();\r
 \r
-    public partial class MainForm : Form, IMainForm\r
-    {\r
+    public partial class MainForm : Form, IMainForm {\r
 \r
         [DllImport("user32.dll")]\r
         public static extern int SendMessage(IntPtr hWnd, int wMsg, int wParam, int lParam);\r
@@ -28,40 +28,52 @@ namespace AudioRecorder
         private String currentFileName;\r
         private String currentFilePath;\r
         private bool recording;\r
-        private Timer countDownTimer;\r
+        private System.Windows.Forms.Timer countDownTimer;\r
         private int countDown = 3;\r
-        private Point startingPanelLocation;\r
-        private Point originalPanelLocation;\r
         private MMDevice currentDevice;\r
         private bool pausing;\r
         private float volumeHeight;\r
         private RefreshPanelDelegate refreshPanel;\r
 \r
-        public MainForm()\r
-        {\r
+        public MainForm() {\r
             InitializeComponent();\r
             InitializeControlTexts();\r
             customTrackBar1.MainForm = this;\r
-            try\r
-            {\r
+            try {\r
                 settings = JsonSettings.GetInstance(CONFIG_FILE);\r
                 fileWorker = new FileWorker();\r
-                countDownTimer = new Timer();\r
+                countDownTimer = new System.Windows.Forms.Timer();\r
                 countDownTimer.Interval = 1000;\r
                 countDownTimer.Tick += new EventHandler(timer_Tick);\r
                 selectorForm = new AudioDeviceSelectorForm(this);\r
                 if (selectorForm.isDeviceConnected())\r
                     saveAudioDeviceToConfig();\r
                 timeCodeWorker = new TimeCodeWorker(timecodeLabel);\r
+                CreatenewThreadToListenMasterPeekVolume();\r
             }\r
-            catch (Exception e)\r
-            {\r
+            catch (Exception e) {\r
                 MessageBox.Show(e.Message, StringResources.ERROR_TITLE, MessageBoxButtons.OK, MessageBoxIcon.Error);\r
             }\r
         }\r
 \r
-        private void InitializeControlTexts()\r
-        {\r
+        private void CreatenewThreadToListenMasterPeekVolume() {\r
+            new Thread(() => {\r
+                while (true) {\r
+                    try {\r
+                        int panelHeight = (int)Math.Round(currentDevice.AudioMeterInformation.MasterPeakValue * 100);\r
+                        Debug.WriteLine(String.Format("panelHeight {0}", panelHeight));\r
+                        // int panelHeight = (int)Math.Floor(currentDevice.AudioMeterInformation.MasterPeakValue * 79);\r
+                        setPanelSizeHeight(panelHeight);\r
+                        Thread.Sleep(1);\r
+                    }\r
+                    catch (Exception e) {\r
+                        Console.WriteLine(e.Message);\r
+                    }\r
+                }\r
+            }).Start();\r
+        }\r
+\r
+        private void InitializeControlTexts() {\r
             recordButton.Text = Resources.FELVETEL;\r
             stopButton.Text = Resources.LEALLITAS;\r
             pauseButton.Text = Resources.SZUNET;\r
@@ -69,22 +81,18 @@ namespace AudioRecorder
             playButton.Text = Resources.LEJATSZAS;\r
         }\r
 \r
-        private void setVolumeTrackerEdgesAndValue()\r
-        {\r
-            if (currentDevice != null)\r
-            {\r
+        private void setVolumeTrackerEdgesAndValue() {\r
+            if (currentDevice != null) {\r
                 customTrackBar1.setMinimumMaximumSizesAndVolume((int)currentDevice.AudioEndpointVolume.VolumeRange.MinDecibels,\r
                     (int)currentDevice.AudioEndpointVolume.VolumeRange.MaxDecibels,\r
                     (int)currentDevice.AudioEndpointVolume.MasterVolumeLevel);\r
             }\r
         }\r
 \r
-        private void saveAudioDeviceToConfig()\r
-        {\r
+        private void saveAudioDeviceToConfig() {\r
             if (String.IsNullOrEmpty(settings.getAudioDeviceName()))\r
                 recordButton.Enabled = false;\r
-            else\r
-            {\r
+            else {\r
                 List<String> devices = selectorForm.getDeviceNames();\r
                 int indexOfDeviceName = devices.IndexOf(settings.getAudioDeviceName());\r
                 if (indexOfDeviceName == -1)\r
@@ -94,11 +102,11 @@ namespace AudioRecorder
             }\r
         }\r
 \r
-        public void initWavRecorder(int index, String selectedAudioName)\r
-        {\r
+        public void initWavRecorder(int index, String selectedAudioName) {\r
             int inputDeviceIndex = index;\r
             this.selectedAudioName = selectedAudioName;\r
             currentDevice = selectorForm.getDevices()[index];\r
+            currentDevice.AudioEndpointVolume.OnVolumeNotification += AudioEndpointVolume_OnVolumeNotification;\r
             recorder = new WavRecorder(inputDeviceIndex, currentDevice, this);\r
             recordButton.Enabled = true;\r
             recordButton.BackColor = Color.Lime;\r
@@ -108,39 +116,43 @@ namespace AudioRecorder
             customTrackBar1.setTickLabelLocationByPercentage(settings.getLoudValue());\r
         }\r
 \r
-        public void setPanelSizeHeight(float height)\r
-        {\r
-            volumeHeight = height;\r
-            if (verticalProgressBar1.InvokeRequired) {\r
-                refreshPanel = RefreshVolumePanel;\r
-                this.Invoke(refreshPanel);\r
-            } else {\r
-                RefreshVolumePanel();\r
-            }\r
+        void AudioEndpointVolume_OnVolumeNotification(AudioVolumeNotificationData data) {\r
+            customTrackBar1.SetValue((int)currentDevice.AudioEndpointVolume.MasterVolumeLevel);\r
+        }\r
+\r
+        public void setPanelSizeHeight(float height) {\r
+                volumeHeight = height;\r
+                if (verticalProgressBar1.InvokeRequired) {\r
+                    refreshPanel = RefreshVolumePanel;\r
+                    this.Invoke(refreshPanel);\r
+                } else\r
+                    RefreshVolumePanel();\r
         }\r
 \r
         private void RefreshVolumePanel() {\r
-            if(volumeHeight > settings.getLoudValue())\r
-                SendMessage(verticalProgressBar1.Handle, 1040, 2, 0);\r
-            else\r
-                SendMessage(verticalProgressBar1.Handle, 1040, 1, 0);\r
-            verticalProgressBar1.Value = (int)volumeHeight;\r
+            try {\r
+                if (recording) {\r
+                    if (volumeHeight >= settings.getLoudValue())\r
+                        SendMessage(verticalProgressBar1.Handle, 1040, 2, 0);\r
+                    else\r
+                        SendMessage(verticalProgressBar1.Handle, 1040, 1, 0);\r
+                    verticalProgressBar1.Value = (int)volumeHeight;\r
+                }\r
+            } catch (Exception e) {\r
+                Console.WriteLine(e.Message);\r
+            }\r
         }\r
 \r
-        private void Form1_Load(object sender, EventArgs e)\r
-        {\r
+        private void Form1_Load(object sender, EventArgs e) {\r
 \r
         }\r
 \r
-        private void stop_Click(object sender, EventArgs e)\r
-        {\r
+        private void stop_Click(object sender, EventArgs e) {\r
             stopRecording();\r
         }\r
 \r
-        private void stopRecording()\r
-        {\r
-            try\r
-            {\r
+        private void stopRecording() {\r
+            try {\r
                 recording = false;\r
                 recordButton.Enabled = true;\r
                 stopButton.Enabled = false;\r
@@ -154,47 +166,40 @@ namespace AudioRecorder
                 recordButton.BackColor = Color.Lime;\r
                 copyFileToUncPath();\r
             }\r
-            catch (Exception e)\r
-            {\r
+            catch (Exception e) {\r
                 MessageBox.Show(e.Message, StringResources.ERROR_TITLE, MessageBoxButtons.OK, MessageBoxIcon.Error);\r
             }\r
         }\r
 \r
-        private void copyFileToUncPath()\r
-        {\r
+        private void copyFileToUncPath() {\r
             FileInfo fileInfo = new FileInfo(recorder.getCurentWavFilePath());\r
             String wavFileName = fileInfo.Name;\r
             String wavUncPath = DetermineWorkingDirectory(settings.getUncPath(), fileInfo.Name);\r
             if (!Directory.Exists(wavUncPath))\r
                 Directory.CreateDirectory(wavUncPath);\r
             wavUncPath = Path.Combine(wavUncPath, fileInfo.Name);\r
-                //String.Format("{0}{1}{2}", settings.getUncPath(), Path.DirectorySeparatorChar, wavFileName);\r
+            //String.Format("{0}{1}{2}", settings.getUncPath(), Path.DirectorySeparatorChar, wavFileName);\r
             fileWorker.copy(recorder.getCurentWavFilePath(), wavUncPath);\r
         }\r
 \r
         protected String DetermineWorkingDirectory(string path, string ID) {\r
             string result = path;\r
             string subDir = ID;\r
-            if (ID.Contains("_")) {\r
+            if (ID.Contains("_")) \r
                 subDir = ID.Split('_')[0];\r
-            }\r
-            if (ID.Contains(".")) {\r
+            if (ID.Contains(".")) \r
                 subDir = ID.Split('.')[0];\r
-            }\r
             result = Path.Combine(path, subDir);\r
             return result;\r
         }\r
 \r
-        private void record_Click(object sender, EventArgs e)\r
-        {\r
+        private void record_Click(object sender, EventArgs e) {\r
             FileNameForm nameForm = new FileNameForm(this, settings);\r
             nameForm.ShowDialog();\r
         }\r
 \r
-        private void startRecord()\r
-        {\r
-            try\r
-            {\r
+        private void startRecord() {\r
+            try {\r
                 recording = true;\r
                 recorder.StartRecording(currentFilePath);\r
                 timeCodeWorker.Start();\r
@@ -206,14 +211,12 @@ namespace AudioRecorder
                 stopButton.BackColor = Color.Red;\r
                 recordButton.BackColor = Color.White;\r
             }\r
-            catch (Exception e)\r
-            {\r
+            catch (Exception e) {\r
                 MessageBox.Show(e.Message, StringResources.ERROR_TITLE, MessageBoxButtons.OK, MessageBoxIcon.Error);\r
             }\r
         }\r
 \r
-        public void recordFireEvent(String currentFileName, string id)\r
-        {\r
+        public void recordFireEvent(String currentFileName, string id) {\r
             recordButton.Enabled = false;\r
             String path = String.Format("{0}\\{1}", settings.getWorkingDir(), id);\r
             if (!Directory.Exists(path))\r
@@ -224,8 +227,7 @@ namespace AudioRecorder
             countDownTimer.Start();\r
         }\r
 \r
-        private void SetCurrentFileNameAndPath(string currentFileName, string path)\r
-        {\r
+        private void SetCurrentFileNameAndPath(string currentFileName, string path) {\r
             String filePath = String.Format("{0}\\{1}", path, currentFileName);\r
             int i = 0;\r
             this.currentFileName = currentFileName;\r
@@ -238,12 +240,10 @@ namespace AudioRecorder
 \r
         }\r
 \r
-        void timer_Tick(object sender, EventArgs e)\r
-        {\r
+        void timer_Tick(object sender, EventArgs e) {\r
             recordButton.Text = countDown.ToString();\r
             countDown -= 1;\r
-            if (countDown < 0)\r
-            {\r
+            if (countDown < 0) {\r
                 countDownTimer.Stop();\r
                 recordButton.Text = StringResources.RECORD;\r
                 startRecord();\r
@@ -251,64 +251,51 @@ namespace AudioRecorder
             }\r
         }\r
 \r
-        private void setToolTipToFileNameLabel(String filePath)\r
-        {\r
+        private void setToolTipToFileNameLabel(String filePath) {\r
             ToolTip toolTip = new ToolTip();\r
             String uncPath = String.Format("{0}{1}{2}", settings.getUncPath(), Path.DirectorySeparatorChar, currentFileName);\r
             String tip = String.Format("{0}\n{1}", filePath, uncPath);\r
             toolTip.SetToolTip(fileNameLabel, tip);\r
         }\r
 \r
-        private void selectAudioButton_Click(object sender, EventArgs e)\r
-        {\r
+        private void selectAudioButton_Click(object sender, EventArgs e) {\r
             showAudioDeviceSelectorForm();\r
         }\r
 \r
-        private void showAudioDeviceSelectorForm()\r
-        {\r
+        private void showAudioDeviceSelectorForm() {\r
             selectorForm = new AudioDeviceSelectorForm(this);\r
             if (!selectorForm.isDisposed())\r
                 selectorForm.ShowDialog();\r
         }\r
 \r
-        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)\r
-        {\r
-            if (recording)\r
-            {\r
+        private void MainForm_FormClosing(object sender, FormClosingEventArgs e) {\r
+            if (recording) {\r
                 DialogResult result = MessageBox.Show(StringResources.ARE_YOU_SURE_TO_QUIT_DURING_RECORDING,\r
                     StringResources.EXIT_TITLE, MessageBoxButtons.YesNo);\r
-                if (result == DialogResult.Yes)\r
-                {\r
+                if (result == DialogResult.Yes) {\r
                     stopRecording();\r
                     deleteTemporariFiles();\r
-                }\r
-                else\r
+                } else\r
                     e.Cancel = true;\r
-            }\r
-            else\r
-            {\r
+            } else {\r
                 if (String.IsNullOrEmpty(settings.getAudioDeviceName()))\r
                     settings.addSelectedAudio(selectedAudioName, CONFIG_FILE);\r
                 deleteTemporariFiles();\r
             }\r
         }\r
 \r
-        private void deleteTemporariFiles()\r
-        {\r
-            if (recorder != null)\r
-            {\r
+        private void deleteTemporariFiles() {\r
+            if (recorder != null) {\r
                 List<String> createdFiles = recorder.getCreatedFiles();\r
                 fileWorker.deleteFiles(createdFiles);\r
             }\r
         }\r
 \r
-        public void disableRecordButton()\r
-        {\r
+        public void disableRecordButton() {\r
             recordButton.Enabled = false;\r
         }\r
 \r
-        private void playButton_Click(object sender, EventArgs e)\r
-        {\r
+        private void playButton_Click(object sender, EventArgs e) {\r
             Process process = new Process();\r
             ProcessStartInfo startInfo = new ProcessStartInfo();\r
             startInfo.FileName = new FileInfo(currentFilePath).FullName;\r
@@ -316,8 +303,7 @@ namespace AudioRecorder
             process.Start();\r
         }\r
 \r
-        private void volumeTrackBar_ValueChanged(object sender, EventArgs e)\r
-        {\r
+        private void volumeTrackBar_ValueChanged(object sender, EventArgs e) {\r
             TrackBar trackbar = sender as TrackBar;\r
             if (trackbar == null)\r
                 return;\r
@@ -327,15 +313,13 @@ namespace AudioRecorder
             currentDevice.AudioEndpointVolume.MasterVolumeLevel = value;\r
         }\r
 \r
-        private void pauseButton_Click(object sender, EventArgs e)\r
-        {\r
+        private void pauseButton_Click(object sender, EventArgs e) {\r
             pausing = !pausing;\r
             recorder.pauseRecording(pausing);\r
             timeCodeWorker.Pause(pausing);\r
         }\r
 \r
-        public void volumeChanged(object sender, EventArgs e)\r
-        {\r
+        public void volumeChanged(object sender, EventArgs e) {\r
             TrackBar trackbar = sender as TrackBar;\r
             if (trackbar == null)\r
                 return;\r
index 73b70acfd381800408da5ea9c1b32fbd3be7f585..56c38fd550ba2aed055e528f4fc9f6dfbd4a7cc6 100644 (file)
@@ -58,14 +58,6 @@ namespace AudioRecorder {
             if (!pausing) {\r
                 waveWriter.Write(e.Buffer, 0, e.BytesRecorded);\r
                 waveWriter.Flush();\r
-                try {\r
-                    int panelHeight = (int)Math.Round(device.AudioMeterInformation.MasterPeakValue * 100);//(device.AudioMeterInformation.MasterPeakValue) * 100;\r
-                    Debug.WriteLine(string.Format("panelHeight {0}", panelHeight));\r
-                    mainForm.setPanelSizeHeight(panelHeight);\r
-                }\r
-                catch (Exception ex) {\r
-                    Debug.WriteLine(ex.Message);\r
-                }\r
             }\r
         }\r
 \r