Робота з мікрофоном

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКНІ
Факультет:
КН
Кафедра:
АСУ

Інформація про роботу

Рік:
2024
Тип роботи:
Лабораторна робота
Предмет:
Проблемно-орієнтовані методи та засоби комп’ютерних інформаційних технологій

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» Інститут ІКНІ Кафедра АСУ ЗВІТ До лабораторної роботи № 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) { } } } Результат роботи програми: / Висновок Виконуючи лабораторну роботу було розроблено програму для взаємодії із мікрофоном та для візуалізації звукових коливань.
Антиботан аватар за замовчуванням

08.11.2018 17:11-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!