Работа со звуком в Visual C++
От: ud_sasha  
Дата: 24.07.04 17:02
Оценка:
Когда-то в Borland C++5 была (да и сейчас есть) функция sound(), которая выводила звук определенной частоты на встроенный динамик. Хотелось бы узнать как такое реализовать на Visual C++ 6.0, только звук выводить на звуковую карту. Итак, требуется, к примеру, заставить издавать звуковую карту звук частотой 900 Гц 1 секунду. Спасибо.
Re: Работа со звуком в Visual C++
От: adontz Грузия http://adontz.wordpress.com/
Дата: 24.07.04 18:06
Оценка:
Здравствуйте, ud_sasha, Вы писали:

_>Когда-то в Borland C++5 была (да и сейчас есть) функция sound(), которая выводила звук определенной частоты на встроенный динамик. Хотелось бы узнать как такое реализовать на Visual C++ 6.0, только звук выводить на звуковую карту. Итак, требуется, к примеру, заставить издавать звуковую карту звук частотой 900 Гц 1 секунду. Спасибо.


MessageBeep/waveOutWrite/DirectSound
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: Работа со звуком в Visual C++
От: ud_sasha  
Дата: 24.07.04 20:50
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, ud_sasha, Вы писали:


_>>Когда-то в Borland C++5 была (да и сейчас есть) функция sound(), которая выводила звук определенной частоты на встроенный динамик. Хотелось бы узнать как такое реализовать на Visual C++ 6.0, только звук выводить на звуковую карту. Итак, требуется, к примеру, заставить издавать звуковую карту звук частотой 900 Гц 1 секунду. Спасибо.


A>MessageBeep/waveOutWrite/DirectSound


А по конкретней, пожалуйста. Как сформировать сигнал определенной частоты определенной длительности?
Re[3]: Работа со звуком в Visual C++
От: adontz Грузия http://adontz.wordpress.com/
Дата: 24.07.04 22:10
Оценка: 6 (1)
Здравствуйте, ud_sasha, Вы писали:

_>А по конкретней, пожалуйста. Как сформировать сигнал определенной частоты определенной длительности?


http://www.rsdn.ru/Forum/Message.aspx?mid=289798
Автор: adontz
Дата: 07.06.03

На примере DirectSound создать буфер в котором синусоида можно так. (не компилировал, так что без обид)

const int freq = 44100;
const int seconds = 1.0;
const float pi2 = 2*3.141592653589793;

short wave[freq*seconds];

for (int sample = 0; sample < freq*seconds; sample++)
 {
  wave[sample] = (short)(32767.0*sin(pi2*sample/freq));
 }
A journey of a thousand miles must begin with a single step © Lau Tsu
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.