В принципе, качество звука меня устраивает. Я ожидал худшего от встроенного кодека. На крайний случай у меня еще есть внешняя USB-звуковая карточка Creative SB Play. Встроенный кодек действительно на максимальной громкости не очень чисто звучит, поэтому при загрузке я устанавливаю 90% громкость. В крайнем случае воткну USB-свисток и буду выводить звук через него.
Конечно можно. С некоторой долей вероятности там стоит отдельная микросхема, сканирующая клавиатурную матрицу, которая посылает данные о нажатых клавишах в UART. Можно прицепить к ней Bluetooth-модуль. В моем случае мне хочется не просто MIDI-клавиатуру, а чтоб играло :) Поэтому целый пк…
Пока еще окончательно не собрано, но уже большая часть функционала работает, синтезатор играет. Чтобы все было красиво, нужно докупить несколько разъемов, шлейф для соединения 50-пинового разъема ARM-компьютера с остальной частью синтезатора, сделать ответную плату, куда будет подключаться шлейф, также решить вопрос с питанием всего этого хозяйства. Плюс, я планирую задействовать и сделать программируемыми элементы управления (кнопки), имеющиеся на лицевой панели. Пока никуда не подключен и не работает разъем педали и Pitch Bend. Демо конечно же будет выложено в последующих статьях (пока планируется еще две статьи).
Почему вы отказались от использования уже готовых синтезаторов для Linux?
Я вроде и не отказывался — собираюсь использовать LinuxSampler и FluidSynth. Правда это больше сэмплеры (если вы это имели в виду). Есть еще синтезаторы вроде amsynth, но я боюсь, у выбранной аппаратной платформы, как вы верно подметили, не хватит ресурсов для полноценного синтеза, хотя попробовать никто не мешает.
Ну и позвольте покритиковать ваш выбор платы.
Наверное, причина такого выбора (не нетбука) в том, что я просто не продумывал такой вариант изначально. Ну и есть определенные вопросы, например, сходу не понятно, как к выдранной из нетбука материнской плате прикрутить LCD-дисплей с тачем. Плюс, я как-то не задавался целью получить на выходе звук с параметрами, превышающими 16 бит 48 кГц — по-моему, более чем достаточно. Кстати, качество встроенного звука оказалось заметно выше, чем аналоговый выход Raspberry Pi.
В большинстве (кроме самых дешевых) синтезаторов клавиши реагируют на скорость нажатия. Реализовано это так, что каждая клавиша имеет под собой на близком расстоянии 2 переключателя. Когда вы нажимаете клавишу, сначала замыкается первый, а потом второй. По разнице времени между этими событиями процессор синтезатора вычисляет скорость (и силу) нажатия, и определяет громкость, с которой нужно воспроизводить ноту.
Есть игра Synthesia — по аналогии с GuitarHero только для ф-но.
На синтезаторе играть легче, чем на цифровом или аналоговом пианино с полноразмерными взвешенными клавишами. Но, как мне кажется, именно учиться играть (полноценно, с правильной постановкой руки и т.д.) нужно, конечно, на полноразмерном. Для этой цели очень хорошо подходит «аналоговое» пианино, или цифровое пианино с полноценным молоточковым механизмом, например Roland RD-700NX (у меня раньше был Roland RD-700SX). Если же речь идет об игре на клавишах в группе, или вам нужен более мобильный инструмент, который легко можно таскать с собой (молоточковый механизм весит немало), или просто инструмент для хобби, то лучше взять синтезатор или MIDI-клавиатуру. Оптимальное количество клавиш — от 61 и выше. Если бюджет не ограничен, то можно посмотреть самые известные модели от каждой фирмы: Yamaha Motif XF/MX, Roland Jupiter-80/50, Korg M3/Kronos/Krome. Но даже в самых дорогих синтезаторах 88-клавишная взвешенная клавиатура далека по физическому восприятию от реальной рояльной клавиатуры, поэтому для обучения и игры классических произведений лучше взять что-то типа серии Roland RD-700/RD-300. Из MIDI клавиатур мне доводилось пользоваться Novation SL 61 MkII — ощущения положительные.
Уважаемый sensboston, я очень рад за ваши приложения. Вы, вероятно, удивитесь, но целью этого любительского проекта не является зарабатывание денег, и я также занимаюсь им не потому, что не в состоянии заработать на новый синтезатор — к вашему сведению, у меня есть несколько синтезаторов более высокого класса — один из них — Roland Jupiter-80. Я занимаюсь этим, потому что мне это интересно, и мне нравится идея, что в результате у меня получится инструмент, который я могу подстроить под себя как угодно, загрузить в него абсолютно любые звуки и алгоритмы синтеза и т. д. Кроме того, в процессе реализации я приобрел больше опыта в написании драйверов для Linux внесении изменений в код ядра и улучшил свое понимание его архитектуры, что в целом считаю для себя полезным. Уверен, найдутся люди, которые также извлекут для себя некоторую пользу от того, что я публикую результаты своего «исследования», со всеми граблями решениями.
Да, QtQuick требует поддержки OpenGL ES, и сначала я хотел использовать именно его (до того, как выяснилось, что драйверы OpenGL есть только под Android). Выпиливать ничего, к счастью не пришлось — он просто не собирается если при конфигурировании Qt отключить OpenGL ES.
Конечно, не факт, но думаю, что одно из самых малогабаритных. Мое предложение не претендует на звание самого лучшего — я просто упомянул о существовании такой микросхемы для тех, кому это может быть интересно. Потому что сейчас весь eBay завален именно модулями на NRF24L01+, а о других продуктах Nordic Semiconductor не так много шума.
P. S. Я тоже сначала хотел изготовить плату-кирпичик, на которой будет уже сразу микроконтроллер, совместимый с Arduino, запаянный NRF24L01+ и PCB или чип-антенна, но потом решил сперва попробовать эту микросхему, когда узнал, что на ее основе тоже есть похожие модули.
Круто, но к вопросу о достижении максимальной миниатюрности, у китайцев есть еще например платки на базе микросхемы nRF24LE1, которая, в отличие от nRF24L01+ уже имеет встроенный микроконтроллер (Enhanced 8051 CPU and 16kB Flash). Заказал себе таких несколько.
Я как-то еще задолго до появления данной статьи делал аналогичное на Raspberry Pi — тогда качество звука через встроенный аналоговый аудиовыход мне показалось полной… и я решил, что если RPi и годится для вывода звука, то только через HDMI. Возможно, у Odroid дела с этим лучше — у меня он тоже есть, надо попробовать
Решил сделать немного более «жизненный» тест, нежели просто чтение с блочного устройства — разархивирование tar.bz2 архива boost-1.49.0.tar.bz2 (46 MB в архиве, 424 MB распакованный):
Host:
real 0m25.265s
user 0m24.850s
sys 0m5.522s
VM:
real 0m38.442s
user 0m26.062s
sys 0m8.039s
Более высокая производительность, вероятно, может быть получена путем увеличения количества доступных виртуальной машине ядер и ОЗУ (сейчас в ней 1 ядро и 128 МБ ОЗУ, в то время как на основной системе 12 ядер и 16 ГБ ОЗУ). Оптимизацией производительности решения я пока не занимался, так как имеющейся достаточно для обслуживания запущенных сервисов.
Я вроде и не отказывался — собираюсь использовать LinuxSampler и FluidSynth. Правда это больше сэмплеры (если вы это имели в виду). Есть еще синтезаторы вроде amsynth, но я боюсь, у выбранной аппаратной платформы, как вы верно подметили, не хватит ресурсов для полноценного синтеза, хотя попробовать никто не мешает.
Наверное, причина такого выбора (не нетбука) в том, что я просто не продумывал такой вариант изначально. Ну и есть определенные вопросы, например, сходу не понятно, как к выдранной из нетбука материнской плате прикрутить LCD-дисплей с тачем. Плюс, я как-то не задавался целью получить на выходе звук с параметрами, превышающими 16 бит 48 кГц — по-моему, более чем достаточно. Кстати, качество встроенного звука оказалось заметно выше, чем аналоговый выход Raspberry Pi.
Есть игра Synthesia — по аналогии с GuitarHero только для ф-но.
P. S. Я тоже сначала хотел изготовить плату-кирпичик, на которой будет уже сразу микроконтроллер, совместимый с Arduino, запаянный NRF24L01+ и PCB или чип-антенна, но потом решил сперва попробовать эту микросхему, когда узнал, что на ее основе тоже есть похожие модули.
item.taobao.com/item.htm?id=13746037317
Вот еще полезные дополнения:
item.taobao.com/item.htm?id=25829656909
item.taobao.com/item.htm?id=18376576364
Host:
VM:
Более высокая производительность, вероятно, может быть получена путем увеличения количества доступных виртуальной машине ядер и ОЗУ (сейчас в ней 1 ядро и 128 МБ ОЗУ, в то время как на основной системе 12 ядер и 16 ГБ ОЗУ). Оптимизацией производительности решения я пока не занимался, так как имеющейся достаточно для обслуживания запущенных сервисов.
/dev/xvda1: Timing buffered disk reads: 198 MB in 3.03 seconds = 65.45 MB/sec
/dev/xvda2: Timing buffered disk reads: 200 MB in 3.02 seconds = 66.21 MB/sec
Чтение напрямую с LVM раздела из host-системы выглядит аналогично:
/dev/xenguests/vm-template-gentoo: Timing buffered disk reads: 186 MB in 3.00 seconds = 61.95 MB/sec
Следует иметь в виду, что мои LVM разделы созданы поверх mdadm Software RAID-массива.