Новые сообщения · Правила  
Страница 1 из 11
Модератор форума: Berestovskiy 
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » С, C++ » Измерение расстояния. C++
Измерение расстояния. C++
такая задача:
Написать программу для вычисления расстояния между колонками и микрофоном(на с++). Т.е. говоришь в микрофон и нам выводит расстояние.
Можете подсказать какие библиотеки здесь задействовать? и реально это вообще написать, найти, скачать?
1 | Автор: FroLe | 2010-11-28, 14:56   |  Репутация: [ + 0 ]
ну с какого расстояния вы будете говорить - 1 м, 2 м. а скорость звука какая? и чем вы будете мерять разницу появления звука в колонках и в микрофоне? странная задачка какая-то. или вы не все тут изложили или я чего-то не понимаю..
2 | Автор: admin | 2010-11-28, 20:10   |  Репутация: [ + 21 ]
с любого расстояния пробовать говорить, скорость звука как я знаю с физики 3*10^6 м/с,а мерить не знаю чем...
3 | Автор: FroLe | 2010-11-28, 21:48   |  Репутация: [ + 0 ]
ну получается что надо мерять разницу времени между первым возмущением микрофона и первым возмущением (поступлением сигнала на колонки). но как? что это у вас за задание такое хитрое. по какой специальности вы учитесь? и где, если не тайна? и предмет какой? неужто программирование?
4 | Автор: admin | 2010-11-29, 13:50   |  Репутация: [ + 21 ]
на разных форумах по разному пишут как вымерить)))
задание курсовое
специальность компьютерные системы и сети
криворожский технический университет
системное программирование

С++ нам дали чисто для общего развития, препод выдумал темы с головы, сказал ищите в инэте, ибо сами не напишите=)

5 | Автор: FroLe | 2010-11-29, 18:10   |  Репутация: [ + 0 ]
5 | Автор: FroLe | 2010-11-29, 18:10   |  Репутация: [ + 0 ]
ну здесь чаще бывают те кто занимается чистым программированием (не под железо), поэтому даже не знаю возникнет ли у кого какая мудрая мысль...
6 | Автор: admin | 2010-11-29, 19:46   |  Репутация: [ + 21 ]
если системное программирование - то скорей всего программирование на низком уровне - в связке с С++ можно использовать asm. ну по идеи на языке низкого уровня можно программировать порты, в том числе и аудио вход/выход. можно покопать с этой стороны, поискать какие команды срабатывают при выводе звука из выхода, а вот при приёме наверно будет сложнее - скорей всего для входа есть одна команда которая тупо открывает вход и начинает запись, а так что б порт открывался при определенной громкости такое наверно врятли есть. как вариант можно пойти по не такому сложному пути. пишется программа которая одновременно начинает воспроизведение звука с колонок и запись звука с аудиовхода. в этом случае время когда звук пошел с колонок - будет просто временем когда началось воспроизведение(грубо конечно достаточно но всё же). а для принятия звука написать процедурку которая например на графике будет показывать текущую громкость на аудивходе. и если громкость начнет превышать какойто порог, то считать звук принятым. в инете найти исходники которые могут представлять звук на аудивходе в виде динамических графиков - не проблема. просто эмпирически найти порог при котором звук считается принятым, и когда граифк громкость достигает этого значение снимать отметку времени о принятии на микрофоне. алгоритм думаю такой должен быть:
1. открытие аудивхода микрофона (для ожидания принятия)
2. воспроизведения звука - не надо никаких апишных функций даже, если будешь писать в билдере - вообще не проблемно.
3. снятие времени про начало воспроизвдения - можно 2 и3 пункт делать одновременно двумя потоками - так будет точнее, но можно и поочереди, задердка не должна быть большая.
4. проверка на значение громкости на микрофоне - если порог достигнут - снимать второе время.


If you can't make it GOOD make it LOOK GOOD. B.Gates
7 | Автор: DoVe | 2010-11-29, 19:57   |  Репутация: [ + 48 ]
Quote (DoVe)
если громкость начнет превышать какойто порог

честно сказать задумался и не уверен что звук полностью аддитивен (процесс волновой), а если в противофазе? а рекурсия может возникнуть?
8 | Автор: admin | 2010-11-29, 20:15   |  Репутация: [ + 21 ]
я имею ввиду сравнения порога например как в стандартной утилитки для записи в Виндовс или любом аудиоредакторе - когда мы говорим в микрофон на графике отображается или ввиде столбца гистограммы, или волнового графика уровень звука. как я понимаю это уже преобразованный сигнал, посмотрел несколько статей на эту тему - такое преобразование делается с помощью преобразования Фурье, и на выходе мы можем получить вот такой график, который будет реагировать на звук полученный микрофоном - чем сильнее звук - тем соответсвенно больше значение на графике в данный момент. вот и имелось ввиду выставить порог для этих значений, и когда они его привысят считать что звук получен

If you can't make it GOOD make it LOOK GOOD. B.Gates
9 | Автор: DoVe | 2010-11-29, 21:28   |  Репутация: [ + 48 ]
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » С, C++ » Измерение расстояния. C++
Страница 1 из 11
Поиск: