Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИНАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Інститут ІКНІКафедра АСУ
ЗВІТ
До лабораторної роботи № 4На тему: «Робота з мікрофоном»З дисципліни: «Методи і засоби комп’ютерних інформаційних технологій»
Львів – 2018
Хід роботи
Код програми:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using NAudio.Wave;
using NAudio;
using System.IO;
using NAudio.FileFormats;
using NAudio.CoreAudioApi;
namespace naudio_mic_realtime_visualisation
{
public partial class Form1 : Form
{
int n = 4000; // number of x-axis pints
//Stopwatch time = new Stopwatch();
WaveIn wi;
WaveFileWriter writer;
Queue<double> myQ;
public Form1()
{
InitializeComponent();
myQ = new Queue<double>(Enumerable.Repeat(0.0, n).ToList()); // fill myQ w/ zeros
chart1.ChartAreas[0].AxisY.Minimum = -15000;
chart1.ChartAreas[0].AxisY.Maximum = 15000;
}
private void Form1_Load(object sender, EventArgs e)
{
//-------
}
void wi_DataAvailable(object sender, WaveInEventArgs e)
{
for (int i = 0; i < e.BytesRecorded; i += 2)
{
myQ.Enqueue(BitConverter.ToInt16(e.Buffer, i));
myQ.Dequeue();
}
}
private void timer1_Tick(object sender, EventArgs e)
{
try
{
chart1.Series["Series1"].Points.DataBindY(myQ);
}
catch
{
Console.WriteLine("No bytes recorded");
}
}
//Отримання даних із вхідного буфера
void waveIn_DataAvailable(object sender, WaveInEventArgs e)
{
if (this.InvokeRequired)
{
this.BeginInvoke(new EventHandler<WaveInEventArgs>(waveIn_DataAvailable), sender, e);
}
else
{
//запис даних із буфера у файл
writer.WriteData(e.Buffer, 0, e.BytesRecorded);
}
}
//кінець запису
private void waveIn_RecordingStopped(object sender, EventArgs e)
{
if (this.InvokeRequired)
{
this.BeginInvoke(new EventHandler(waveIn_RecordingStopped), sender, e);
}
else
{
wi.Dispose();
wi = null;
writer.Close();
writer = null;
}
}
void StopRecording()
{
MessageBox.Show("StopRecording");
wi.StopRecording();
}
//-----------------------------------
private void button1_Click(object sender, EventArgs e) // start button
{
string str = textBox1.Text;
string Y = textBox4.Text;
int y = System.Convert.ToInt32(Y);
string filename = textBox2.Text;
chart1.ChartAreas[0].AxisY.Minimum = -y;
chart1.ChartAreas[0].AxisY.Maximum = y;
wi = new WaveIn();
wi.DeviceNumber = System.Convert.ToInt32(str); // choose a device
//прикріплення до події DataAvailable обробника, який виникає при наявності даних для запису
wi.DataAvailable += waveIn_DataAvailable;
//прикріплення обробника завершення запису
wi.RecordingStopped += new EventHandler<NAudio.Wave.StoppedEventArgs>(waveIn_RecordingStopped);
writer = new WaveFileWriter(filename, wi.WaveFormat);
wi.StartRecording();
wi.WaveFormat = new WaveFormat(4, 16, 1); // (44100, 16, 1);
wi.DataAvailable += new EventHandler<WaveInEventArgs>(wi_DataAvailable);
timer1.Enabled = true;
//time.Start();
}
private void button2_Click(object sender, EventArgs e) // stop button
{
if (wi != null)
{
StopRecording();
}
}
private void label4_Click(object sender, EventArgs e)
{
}
private void textBox4_TextChanged(object sender, EventArgs e)
{
}
}
}
Результат роботи програми:
/
Висновок
Виконуючи лабораторну роботу було розроблено програму для взаємодії із мікрофоном та для візуалізації звукових коливань.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!