Как создать звук нужной частоты?

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Как создать звук нужной частоты?

Сообщение Don Leno » 20.12.2018 (Чт) 20:07

Необходимо воспроизвести звук произвольно выбранной частоты. Пошарив по нету нашел ссылки с похожими вопросами, но ответы если и есть то на других языках программирования, коими я не владею.. Но суть что реализации такой на Барсике не нашел.
Все это конечно хотелось бы реализовать в wav формате. Так что кто нить может кинуть простенький пример создания wav-ки со звуком по заданой частоте?
Так же хотелось понять по какой формуле создаются wav данные для создания звука с нужной частотой.

Вот нашел на вбстритс, но исходник Майкла выдает страницу 404
http://bbs.vbstreets.ru/viewtopic.php?f=1&t=3489&p=20175&hilit=%D0%B7%D0%B2%D1%83%D0%BA+%D0%BD%D1%83%D0%B6%D0%BD%D0%BE%D0%B9+%D1%87%D0%B0%D1%81%D1%82%D0%BE%D1%82%D1%8B#p20175
А вот с винград на другом языке https://ru.vingrad.com/Kak-vyvesti-zvuk-zadannoy-chastoty-id50b2531d6ccc19606f0129ca

The trick
Постоялец
Постоялец
 
Сообщения: 781
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Как создать звук нужной частоты?

Сообщение The trick » 20.12.2018 (Чт) 21:14

UA6527P

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Как создать звук нужной частоты?

Сообщение Mikle » 20.12.2018 (Чт) 21:24

Простейший пример во вложении.
А для wav файла - погугли формат заголовка PCM WAV, после заголовка сохраняй содержимое массива Ar().
У вас нет доступа для просмотра вложений в этом сообщении.

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Как создать звук нужной частоты?

Сообщение Don Leno » 23.12.2018 (Вс) 9:41

Mikle, а есть без tlb. Так чтобы все апи были в проекте по директсаунд. Мне бы просто понять как все устроено, да и не привык я к тлб, вернее никогда не пользовался. А так как будто урезали код) Буду оч признателен!!!
С wav форматом знаком.. уже гуглил.
Trick, тебе спс конечно. Но твои профессиональные программы более необходимы для музыкантов)) А мне нужен простенький пример с воспроизводимой частотой в реальном времени и возможностью ее смены на ходу, а также сохранением в вав. Может быть изучив основы по звуку я и дойду до твоих примеров. Но пока для осознания твоего кода - знаний у меня маловато, да и цели у меня пока иные.

P.S. А вот вопрос: на винграде используют PlaySound с параметром Memory - нельзя ли также написать на VB или это не правильно или лучше использовать DirectSound? Кстати нашел где Mikle переписал код на VB! Там же на винграде: https://ru.vingrad.com/Kak-vyvesti-zvuk-zadannoy-chastoty-na-kolonki-id50bb3a536ccc19b0370268ae

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Как создать звук нужной частоты?

Сообщение Mikle » 23.12.2018 (Вс) 9:59

tlb можно выкинуть и подключить привычную тебе dx8vb.dll, изменится пара строк, но тогда программа будет работать только в XP.
не привык я к тлб, вернее никогда не пользовался

Пользовался, внутри dx8vb.dll тоже зашита llb, так что ты поменяешь "шило на мыло".
И tlb там только для работы с DirectSound, для записи в wav файл этого не требуется.
Вот это:
Код: Выделить всё
  For i = 0 To 44099
    Ar(i) = Sin(2 * Pi * Freq * i / 44100) * 32767
  Next i

Это и есть вся генерация PCM WAV данных для генерации секундного семпла нужной частоты в формате 16 бит, 44 кГц, моно. Если задавать целочисленные Freq, то и сэмпл получается бесшовным, то есть начало стыкуется с концом без щелчка.

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Как создать звук нужной частоты?

Сообщение Don Leno » 23.12.2018 (Вс) 10:05

Mikle спс то что нужно! А то я эту формулу все никак найти не мог! То есть на Win7 я не могу пользовать DS? Я имею ввиду нельзя ли через Declare вызвать все апи DS?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Как создать звук нужной частоты?

Сообщение Mikle » 23.12.2018 (Вс) 10:43

Don Leno писал(а):То есть на Win7 я не могу пользовать DS? Я имею ввиду нельзя ли через Declare вызвать все апи DS?

Через Declare не выйдет, для Win Vista и новее как раз и нужна tlb, которую написал The trick. Я не пойму, что ты её боишься - просто заходишь в референсы и подключаешь эту tlb точно так же, как dx8vb.dll, но только для скомпилированного EXE тебе tlb уже не требуется, в чём основная прелесть, твоя программа работает везде, и не нужно ничего таскать с собой, а, тем более, регистрировать.

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Как создать звук нужной частоты?

Сообщение Don Leno » 23.12.2018 (Вс) 20:05

Спс поищу по тлб почитаю. Просто с этим никогда не сталкивался. Я и не знал что ее не надо таскать с собой.

Ссори за оффтоп, Mikle а вот в теме по параллакс эффекту ты в проекты вставляешь модуль modAPI с сабами QTimeInit и QTime. Для чего они и как ими пользоваться на отдельном простеньком примере не объяснишь? Я предполагаю это что-то вроде GetTickCount или нет?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Как создать звук нужной частоты?

Сообщение Mikle » 23.12.2018 (Вс) 20:36

Don Leno писал(а):Я предполагаю это что-то вроде GetTickCount или нет?

Да, в начале работы программы однократно запускаешь QTimeInit, далее в любой момент узнаёшь сколько прошло времени с помощью QTime так же, как с помощью GetTickCount, только многократно точнее.

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Как создать звук нужной частоты?

Сообщение Don Leno » 23.12.2018 (Вс) 20:44

Благодарю за пояснение Mikle. Теперь могу смело пользоваться!


Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList