Не так давно я загорелся идеей написать свою MIDI-клавиатуру. Позже к ней был прикручен гитарный гриф, она научилась распознавать аккорды и воспроизводить мелодии. Собственно об этом и будет этот пост.
Если вам интересно как программно воспроизводить звук через MIDI-синтезаторы, алгоритм распознавания гитарных аккордов, или же вы просто любите играть на гитаре или клавишных инструментах прошу под кат.
Читать полностью »
Метка «Программирование» - 42
Как я MIDI-клавиатуру писал
2012-08-01 в 8:26, admin, рубрики: .net, MIDI, гитара, музыка, Программирование, Синтезатор, метки: .net, c++, MIDI, гитара, музыка, Программирование, СинтезаторЗлоупотребление SQL-запросами
2012-07-31 в 9:26, admin, рубрики: sql, Программирование, разработка, метки: sql, Программирование Возможно это стресс от моего текущего проекта, и то, что я здесь написал всего лишь крик моей души. Но, увы наболело.
Просто я заметил что некоторые разработчики (на мой взгляд, их очень большое количество) любят злоупотреблять SQL-сервером.
Возможно это из-за того что написать сложный sql-запрос все-таки проще чем грамотно спроектировать систему, которая будет организовывать гармоничное взаимодействие между объектами, и будет это делать быстро.
Читать полностью »
Почему компьютерное зрение очень мало используется на практике
2012-07-30 в 13:00, admin, рубрики: Алгоритмы, Компьютерное зрение, машинное зрение, Песочница, Программирование, проектирование, Проектирование и рефакторинг, метки: Алгоритмы, Компьютерное зрение, машинное зрение, Программирование, проектированиеНа самом деле правильнее было бы назвать «машинное зрение», но так я думаю понятнее будет, если кто не знает то это не охранное видеонаблюдение, а распознавание или измерение чего либо c помощью камер. Существует много задач и областей, где компьютерное зрение было бы очень востребовано и могло бы использоваться повсеместно, но на практике оно используется очень редко.
Я реализовал несколько проектов в этой области для решения разных задач, конкретно это вычисление и подсчет площадей, контроль качества продукции, причем разной и в разных отраслях таких как: фигурная порезка и раскрой листов ДСП, ДВП, МДФ, измерение площадей шкурок животных на производства изделий из кожи и др.
Задача вычисления площади может показаться довольно сложной. Если подходить строго математически, то да, например, посчитать площадь квадрата или прямоугольника очень просто умножаем длину на ширину и готово, если треугольника чуть сложнее, а вот других криволинейных фигур может быть очень сложно.
Мой алгоритм подсчета площади настолько прост, что его можно реализовать без всяких библиотек и т.п. буквально в десять строк кода, по сути это простейший детектор движения только с калибровкой камеры. Камера жестко фиксируется над местом, куда подается продукция, делается снимок фона (без продукции), например, белый стол, цвета пикселей загоняются в массив. Далее на стол подается или ложится образец, например какая-то коробка. Далее делается второй снимок с коробкой, цвета второго кадра пишутся в другой массив и затем сравниваются значения цветов, количество отличающихся пикселей суммируется. Затем этот образец измеряется рулеткой, вводится в программу его площадь и вычисляется площадь одного пикселя, т.е. площадь делится на число пикселей. Вот и вся калибровка. Далее достаточно подавать любую продукцию, любого размера и формы, определятся число изменившихся пикселей, и умножается на площадь одного пикселя, найденного при калибровке, надеюсь все понятно. Причем продукция может двигаться, например, на конвейере, площадь будет измеряться правильно, нужно только захват Читать полностью »
Возвращаясь к многозадачности на PHP
2012-07-30 в 9:45, admin, рубрики: php, многозадачность, Песочница, Программирование, метки: PHP, многозадачность, Программирование Написать эту статью меня побудила совершенно удручающая, на мой взгляд, ситуация с решением многозадачности на языке PHP.
Большая часть программистов заявляют что многозадачности в PHP нет, поэтому не надо и пытаться, а менее зашоренные все же пытаются как нибудь извратиться через запуск множества скриптов или, в лучшем случае, придумывают какие то очень частные решения для распараллеливания скачивания, например.
Статья предназначена для демонстрации самой идеи как вообще реализовать многозадачность практически на любом языке программирования.
Так сказать Proof of concept.
Как говорится всё новое это хорошо забытое старое.
Читать полностью »
Ограничение проектирования систем на уровне сознания
2012-07-26 в 18:01, admin, рубрики: Анализ и проектирование систем, Инфосфера - мысли вслух, мышление, Программирование, сознание, метки: мышление, Программирование, сознаниеЯ рад приветствовать вас, дорогие читатели.
Я думаю, что многие из вас, будучи разработчиками информационных систем различного назначения так или иначе сталкивались с понятием оптимизации рабочих процессов, составляющих основную часть той рутины, которую приходится выполнять для достижения поставленных целей.
Скажу сразу — я не задаюсь целью мотивировать или призывать к каким-либо правилам эффективной работы, т.к. все слишком индивидуально, чтобы давать подобные советы, но я постараюсь обратить ваше внимание на некоторые, на мой взгляд, интересные детали, лежащие в основе принципов проектирования, которые заметил и осмыслил на собственном опыте. Отмечу также, что статья будет актуальна не только IT-шникам, но и абсолютно всем категориям читателей.
Читать полностью »
Магия макросов для объединения объявления и реализации
2012-07-26 в 6:35, admin, рубрики: c++, Программирование, метки: Программирование Одна из неприятных проблем — при внесении даже простых изменений приходится править код в нескольких местах. Например, если в класс добавляется поле данных, его нужно добавить в объявление класса, инициализировать в конструкторе(ах), а если переопределены операторы копирования или сравнения — то и в них тоже. Это отнимает время и приводит к ошибкам, если забыть про одно из мест (особенно неприятно забыть инициализировать, такие ошибки могут жить годами, и вызывать неожиданные, трудновоспроизводимые проблемы).
Читать полностью »
IT-компот #15 Подкаст о программировании и технологиях
2012-07-25 в 10:16, admin, рубрики: подкасты, Программирование, метки: подкасты, Программирование
У нас в гостях mobile software engineer компании «Yota» Максим Великанов. Затронули тему кроссплатформенной разработки. Опыт сервиса Yota Play. Какие существуют подходы в разработке подобных приложений и какой путь выбрать. Говорим про релиз Windows 8 и про что, что хорошего и не очень будет в новом Office 2013. Опыт работы на OS X. Ужосы остен глазами нового пользователя и крутизна встроенного сервера в php 5.4.
В выпуске:
- Особенности национальной кроссплатформенной разработки.
- Релиз Windows 8. Ждем 26 октября. Microsoft показала новый Office 2013.
- Встроенный в php 5.4 веб-сервер и личный опыт переезда на OS X.
Слушать в Itunes
слушать на podfm
скачать файл(68.0 Мб)
Читать полностью »
Автоматическая генерация операторов сравнения структур в C++
2012-07-24 в 0:44, admin, рубрики: c++, макросы, Программирование, метки: c++, макросы, ПрограммированиеЯзык C++ для всех пользовательских классов и структур генерирует по умолчанию копирующий конструктор и копирующий оператор присваивания. Тем самым для важного ряда случаев программист освобождается от написания указанных функций вручную. Например, операторы по умолчанию хорошо работают для структур, которые содержат данные. При этом данные могут храниться как в простых типах, так и в сложных контейнерах, таких как std::vector или std::string.
В свете этого удобно было бы иметь и операторы сравнения структур == и != по умолчанию, однако компилятор C++, в соответствии со стандартом, не генерирует их.
Читать полностью »
Хочешь быть программистом — будь им!
2012-07-23 в 7:09, admin, рубрики: Инфосфера - мысли вслух, Программирование, программисты, разработка, фреймворки, метки: Программирование, программисты, фреймворки Данный пост навеян статьей "Я, пользователь!", которая вызвала много споров, и была весьма прохладно встречена сообществом. Обсуждение в комментариях показало, что мысль, которую Автор высказал довольно жестко и агрессивно, была воспринята как призыв вернуться к ветряным мельницам. Однако, на мой взгляд, проблема затронутая автором, гораздо глубже.
Читать полностью »
Ты не программист, ты — пользователь!
2012-07-20 в 13:12, admin, рубрики: Программирование, разработка, метки: Программирование, разработка Предлагаю вам сыграть в одну игру. Давайте на минуту поплюем на фитилек вашего IQ и погрузимся во тьму воображения. Смотрите зорче! Представьте, что случился какой-то перестык во времени и вас отбросило на десятилетия назад. У вас в голове нехилая база знаний: фреймворки, библиотеки,… Вы уже не хрен собачий, а — программист, разработчик, ДИВЕЛОПЕР, вершина пирамиды цивилизации! За ваши знания готовы платить несметные сокровища! Причем все правители мира! Вы настоящее явление, полубог, путь к истинному просветлению! И вот все собрались и ждут от вас откровений, готовы внимать знаниям, учиться и так далее. На вас смотрят тысячи глаз. Весь мир замер вокруг в ожидании чуда, в предвкушении света. А теперь внимание!
Читать полностью »