DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Звіт до лабораторної роботи № 4 «Робота з мікрофоном»

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

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

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

Рік:
2018
Тип роботи:
Лабораторна робота
Предмет:
Методи i засоби комп'ютерних інформаційних технологій
Група:
КН-11
Коротко про документ

Про що ця робота

У цій лабораторній роботі розроблено програму для взаємодії з мікрофоном та візуалізації звукових коливань на базі бібліотеки NAudio у середовищі C#. Наведено лістинг програмного коду для запису аудіосигналу та побудови графіків у реальному часі.

У роботі розглядаються

  • Програмування на C#
  • Обробка аудіоданих
  • Робота з мікрофоном
  • Візуалізація звукових коливань
  • Бібліотека NAudio
  • Багатопотоковість у Windows Forms

Зміст і розділи

  1. Хід роботи
  2. Код програми
  3. Результат роботи програми
  4. Висновок
Для кого:Студенти технічних спеціальностей, які вивчають комп'ютерні інформаційні технології та програмування під .NET.
Викладачі:Не вказано

Ключові поняття

мікрофонNAudioвізуалізація звукуWaveInчастота дискретизаціїпотікграфікC#Windows Forms

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

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

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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