Измерение расстояния. C++
|
|
такая задача: Написать программу для вычисления расстояния между колонками и микрофоном(на с++). Т.е. говоришь в микрофон и нам выводит расстояние. Можете подсказать какие библиотеки здесь задействовать? и реально это вообще написать, найти, скачать?
|
|
|
ну с какого расстояния вы будете говорить - 1 м, 2 м. а скорость звука какая? и чем вы будете мерять разницу появления звука в колонках и в микрофоне? странная задачка какая-то. или вы не все тут изложили или я чего-то не понимаю..
|
|
|
с любого расстояния пробовать говорить, скорость звука как я знаю с физики 3*10^6 м/с,а мерить не знаю чем...
|
|
|
ну получается что надо мерять разницу времени между первым возмущением микрофона и первым возмущением (поступлением сигнала на колонки). но как? что это у вас за задание такое хитрое. по какой специальности вы учитесь? и где, если не тайна? и предмет какой? неужто программирование?
|
|
|
на разных форумах по разному пишут как вымерить))) задание курсовое специальность компьютерные системы и сети криворожский технический университет системное программирование С++ нам дали чисто для общего развития, препод выдумал темы с головы, сказал ищите в инэте, ибо сами не напишите=)
|
|
|
ну здесь чаще бывают те кто занимается чистым программированием (не под железо), поэтому даже не знаю возникнет ли у кого какая мудрая мысль...
|
|
|
если системное программирование - то скорей всего программирование на низком уровне - в связке с С++ можно использовать asm. ну по идеи на языке низкого уровня можно программировать порты, в том числе и аудио вход/выход. можно покопать с этой стороны, поискать какие команды срабатывают при выводе звука из выхода, а вот при приёме наверно будет сложнее - скорей всего для входа есть одна команда которая тупо открывает вход и начинает запись, а так что б порт открывался при определенной громкости такое наверно врятли есть. как вариант можно пойти по не такому сложному пути. пишется программа которая одновременно начинает воспроизведение звука с колонок и запись звука с аудиовхода. в этом случае время когда звук пошел с колонок - будет просто временем когда началось воспроизведение(грубо конечно достаточно но всё же). а для принятия звука написать процедурку которая например на графике будет показывать текущую громкость на аудивходе. и если громкость начнет превышать какойто порог, то считать звук принятым. в инете найти исходники которые могут представлять звук на аудивходе в виде динамических графиков - не проблема. просто эмпирически найти порог при котором звук считается принятым, и когда граифк громкость достигает этого значение снимать отметку времени о принятии на микрофоне. алгоритм думаю такой должен быть: 1. открытие аудивхода микрофона (для ожидания принятия) 2. воспроизведения звука - не надо никаких апишных функций даже, если будешь писать в билдере - вообще не проблемно. 3. снятие времени про начало воспроизвдения - можно 2 и3 пункт делать одновременно двумя потоками - так будет точнее, но можно и поочереди, задердка не должна быть большая. 4. проверка на значение громкости на микрофоне - если порог достигнут - снимать второе время.
If you can't make it GOOD make it LOOK GOOD. B.Gates
|
|
|
Quote (DoVe) если громкость начнет превышать какойто порог честно сказать задумался и не уверен что звук полностью аддитивен (процесс волновой), а если в противофазе? а рекурсия может возникнуть?
|
|
|
я имею ввиду сравнения порога например как в стандартной утилитки для записи в Виндовс или любом аудиоредакторе - когда мы говорим в микрофон на графике отображается или ввиде столбца гистограммы, или волнового графика уровень звука. как я понимаю это уже преобразованный сигнал, посмотрел несколько статей на эту тему - такое преобразование делается с помощью преобразования Фурье, и на выходе мы можем получить вот такой график, который будет реагировать на звук полученный микрофоном - чем сильнее звук - тем соответсвенно больше значение на графике в данный момент. вот и имелось ввиду выставить порог для этих значений, и когда они его привысят считать что звук получен
If you can't make it GOOD make it LOOK GOOD. B.Gates
|
|
|