Да и число пар в {} должно соответствовать размерности массива. Можно указать с запасом и сначала программно заполнить частично (в конце поставив 0), можно разместить массив во флэш если нужен большой и неизменный, можно задать массив массивов нот и обращаться notes[1][pos] (где 1 - номер последовательности), зависит от задачи.
_________________ "Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл / "Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Тут я три раза скопировал один и тот-же массив, чисто для примера. Затем сделать так:
Код:
int y; y = analogRead(pot2) / 256; if (notes[pos].pitch == 0) pos = y;
Тогда получается можно вторым потенциометром (просто я его уже припаял на всякий случай ) выбирать позицию в массиве и она будет проигрываться до следующей позиции 0,0? Сейчас попробую.
Добавлено after 21 minute 38 seconds:
SeregaT писал(а):
Сейчас попробую.
Попробовал. Работает, но не так как хотел Эффект интересный получился. Я к ранее записанному ритму добваил ещё 30 пар в массив, где просто должно было воспроизводиться по одной ноте, но разных, чтобы слышать, что позиция переключается. Но по одной ноте не играет, а просто ритмический рисунок меняется в нескольких вариантах. Причём иногда интересно меняется. Получилось в чём-то даже интереснее, чем я хотел. Только я не пойму что и в какой последовательности там теперь играется. Код вот такой: Спойлер
Код:
#define pot A0 // Потенциометр на вход A0 #define pot2 A1 // Потенциометр на вход A1 // структура нот struct Notes { byte pitch; //нота ? int delay; //базовый темп ? };
Я имел в виду вот так, но результат может и похожий - должно на ходу переключаться между "мелодиями", но число нот должно быть одинаково или хотя бы нолями добить. А в какой последовательности надо ? Спойлер
Код:
#define pot A0 // Потенциометр на вход A0 #define pot2 A1 // Потенциометр на вход A1 // структура нот struct Notes { byte pitch; //нота ? int delay; //базовый темп ? };
void noteOn(int cmd, int pitch, int velocity) { Serial1.write(cmd); Serial1.write(pitch); Serial1.write(velocity); }
_________________ "Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл / "Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Я имел в виду вот так, но результат может и похожий
Не, результат не похожий, другой
Morroc писал(а):
А в какой последовательности надо ?
Вот именно в такой, как сейчас Сейчас можно сказать что получился готовый код. Осталось только добавить кнопки Play и Stop, составить нормальные ритмические рисунки, подобрать хорошие сэмплы и в общем-то получится как раз один из желаемых вариантов (второй вариант - матрица с тумблерами, но пока не знаю, стоит ли её делать, всё таки она сильно ограничивает ритмы и удорожает конструкцию, там только одних тумблеров надо 32 - 64 штуки) Блин, надо учить C... Пока так сходу не могу сообразить что к чему, как это у Вас получается
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Я просто четко разделил последовательности, добавив еще одно измерение (номер последовательности) в массив - так понятнее и проще.
Лучше экран, немного кнопок и через них как раз массив этот редактировать, но может кому то и тумблеры больше нравятся - на тумблерах проще будет программа (наверное). Еще надо куда то записывать это все (насчет тумблеров не знаю - на них одних ведь тоже наверное не все влезет ?) в EEPROM может места не хватить, в оперативную память меги влезет где то 4 x 250-300 нот если оставить как сейчас.
а не... больше влезет
_________________ "Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл / "Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Лучше экран, немного кнопок и через них как раз массив этот редактировать,
Оно в общем-то да, но не совсем.
Morroc писал(а):
но может кому то и тумблеры больше нравятся
Это стандартная система секвенсоров подобного типа. Там по разному делают. Например кнопки (с фиксацией и без фиксации) или сенсоры. Для ударных в основном пэды делают. Или вон как в теме пример приводил, там вместо кнопок были отверстия, в которые помещались шарики от подшипников, замыкая собой контакты. Вот я думал вместо этих шариков тумблеры поставить. Но поэкспериментировал с восьмишаговым секвенсором, не очень хорошо получается. Это всего половина такта. Или один такт, если совсем примитивные ритмические рисунки. 4х16 тумблеров уже хотябы на один такт и 4 барабана.
Может быть можно сделать что-то типа такого: 1 - выдаётся нота, 2 - не выдаётся. Все 4 строки проигрываются одновременно
Т.е. заложены 4 последовательности, а на них наложена маска играем/не играем ноту ? Ага, можно.
Вот тут отправляется от 0 до 4х нот и делается пауза (пауза и окончание последовательности определяется по самой первой из них). Там везде 0 в маске - надо поставить 1 на нужных нотах.
_________________ "Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл / "Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Вот этот последний код я не смог опробовать (было поздно, теперь смогу только завтра попробовать). А в предыдущем варианте получается что нельзя сделать пропуски между нотами. А если и можно, то там надо конкретно рассчитывать, какая пауза нужна (в миллисекундах), какую паузу прописать (с учётом что она будет умножаться на показания аналогового входа и делиться делителем) и т.д. То есть очень неудобно прописывать ритмы, где ноты не идут одна за другой. Получается что нужно примерно так: Массив в виде матрицы например 4х8. 4 барабана на 8 шагов. Барабаны - горизонтальные строки, шаги - вертикальные столбцы. Каждый шаг опрашивается через время задаваемое потенциометром (все 4 строки одновременно). Например если в какой-то строке стоит единица, звучит барабан, соответствующий этой строке. Если стоит ноль, ничего не звучит, но тогда должна быть пауза такой-же длительности, как если бы там была звучащая нота. Например в первой строке барабан Kick, во второй Snare, в третьей HiHat, в четвёртой Clap. Типа в первом шаге звучит Kick, во втором Snare, в третьем одновременно Kick и HiHat, в четвёртом снова Snare, в пятом Kick и Clap, в шестом Snare, в седьмом Kick и HiHat, в восьмом не звучит ничего. Опрашивается первый столбец (в это время звучат строки, где стоят единицы), проходит к примеру 250 миллисекунд (зависит от положения потенциометра), опрашивается второй столбец, снова звучат строки с единицами и т.д. Время задаётся строго между опросами столбцов, а не после окончания звучания ноты. Вот тут я и хотел воткнуть тумблеры, которые включали или выключали "единицы" в строках. Как я понял, в Вашем коде именно так и происходит, просто надо в каждом шаге указывать одну и ту-же ноту (в первой строке все ноты единица, во второй двойка, в третьей тройка, в четвёртой четвёрка)?
Добавлено after 2 hours 12 minutes 1 second: В общем я придумал, как буду делать. Поставлю вот такие переключатели, восемь штук, четыре в высоту и по два в длину (16 шагов). Подключу их в виде матрицы 4х16. Там код довольно простой получается. На 4 вывода назначаются 4 ноты, эти 4 вывода подключаются к матрице со стороны, где тоже 4 вывода. Остальные 16 выводов матрицы подключаются к мультиплексору. Выход мультиплексора подключается на GND (или наоборот на +5 вольт). Ещё 4 вывода ардуино будут задействованы для переключения каналов мультиплексора (там по даташиту 4 вывода для адресации в виде комбинации высоких и низких уровней). Алгоритм будет такой: Подаётся адрес первого канала, сдедовательно первый столбец матрицы замыкается на GND (или на +5 вольт). Звучат ноты, тумблеры которых замкнуты. Потом задержка, регулируемая потенциометром, затем подаётся следующий адрес, замыкается следующий столбец матрицы, там тоже звучат ноты вкдюченных тумблеров, опять задержка и следующий адрес и т.д. Задействуются 4 вывода ардуино с назначенными нотами, ещё 4 вывода под адресацию каналов, 1 вывод под потенциометр и пара выводов под кнопки пуск-стоп. Всего будут задействованы 11 выводов. Ещё под светодиоды останется, может их тоже воткну, но скорее всего не буду. Тумблеры эти дешёвые, можно сделать не четыре, а пять или шесть каналов, это плюс ещё 1 - 2 вывода. Всё просто Если ещё немного поизвращаться, можно добавить ещё 4 потенциометра, по одному на канал, которыми выбирать номер ноты для каждого канала (от 1 до 127). Тогда можно будет использовать для музыкальных секвенций, но это мне не требуется, ограничусь ударными с жёстко фиксированным номером ноты у каждого канала.
В последнем варианте пауза будет независимо от наличия нот (т.е. можно сделать .enabled = 0 во всех 4х, но прописать нужную паузу в 1ю последовательность). Можно сделать отдельно взаимодействие с тумблерами чтобы они вкл/выкл .enabled в нотах - проще отлаживать будет, но можете попробовать внедрить опрос непосредственно в этот код. У меги вроде ног должно хватить и без мультиплексоров, разве что сэкономить на будущее.
_________________ "Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл / "Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
У меги вроде ног должно хватить и без мультиплексоров
Не, не хватит. Я ардуино использую, там вот так:
Цитата:
- Портов ввода-вывода общего назначения: 20; - Портов с поддержкой ШИМ: 7; - Портов, подключённых к АЦП: 12;
Только 20 выводов. Это чисто на подключение тумблеров уйдёт. А ещё кнопки нужны, потенциометр... А мультиплексоры у меня уже есть. С мультиплексором проще будет. Во всяком случае мне уже сейчас понятно, как там программу писать.
Morroc писал(а):
Можно сделать отдельно взаимодействие с тумблерами чтобы они вкл/выкл .enabled в нотах - проще отлаживать будет
Не, это не нужно.
Morroc писал(а):
можете попробовать внедрить опрос непосредственно в этот код.
Не, код напишу другой. Я решил отказаться от использования массивов. Я просто сразу не подумал, что можно использовать подобные микропереключатели, которые сразу пачками в одной сборке идут. Только потом сообразил, что ведь и такие можно использовать, типа дёшево и компактно. Конечно на ходу не так удобно переключать, как обычные тумблеры, но для меня сгодится. Мне то что, ритм составил, включил нужные тумблеры и погнали. То есть для меня в самый раз. И не придётся гробину городить на 64 тумблера, которые к тому-же обойдутся в полторы - две тысячи рублей. А как код писать в этом случае, вроде понятно всё. Это с массивами я не работал, тем более с такиии заморочками по поводу регулируемой паузы (причём паузы вне цикла Loop, я тут вообще ничего придумать не мог, как её регулировать). А тут всё просто, кнопку нажал - нота звучит. Только кнопки нажимать будет мультиплексор. Надо только про антидребезг не забыть, может он и не нужен, но на всякий случай Да и в этом случае с опросом потенциометра можно не париться, пусть после каждого шага опрашивается. Всё равно ноты в коде прописываться не будут, они будут чисто тумблерами включаться, поэтому код не будет громозким. А то я вчера попробовал несколько ритмических рисунков составить, ну пару штук составил, за раз больше не придумывается, под конкретную мелодию составлять гораздо удобнее, а это лучше всего делать без программирования, чтобы не переписывать код и не перезаписывать контроллер по сто раз, чтобы ввести новый ритм. Заодно сделаю выход для синхронизации с Volca Bass (или даже лучше вход, так как у Volca Bass темп на дисплее отображается, это удобнее). Там перед каждым шагом идёт сигнал 5 вольт и при внешней синхронизации пауза должна зависеть не от положения потенциометра, а от скорости подачи синхроимпульсов.
А выводов в ардуине меге много - "с поддержкой ШИМ" или с АЦП можно использовать как обычные цифровые, это у них просто дополнительные фичи или то будет обычная ардуина, не мега ?
_________________ "Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл / "Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Не, у меня не мега Ардуина Leonardo у меня. Когда всё будет готово, скорее всего для готового девайса куплю аруино Nano (точнее её клон). Припаяю тумблеры с мультиплексором на макетке и туда-же ардуино нано через разъёмы воткну.
Простите, влезу: у МК на опрос клавы 4 х 8 достаточно задействовать 4 и 8 портов, то есть 12. Выходные порты - 4 (данные кода нажатой /нажатых клавиш). И не надо тумблеры - МК запоминает каждую нажатую клавишу, пока она нажата.
Тумблеры будут не 4х8, а 4х16. И тумблеры нужны. Потому что так конкретно видно, какой тумблер включен. А для кнопок придётся ещё на каждую светодиод ставить, чтобы было видно задействованные кнопки.
Ну или модные кнопочки со встроенным на которые я ссылку давал, но дорогие заразы. Зато симпатичнее и нагляднее на мой взгляд. Есть еще недорогие сенсорные панельки на 16 кнопок с i2c или spi интерфейсом, в принципе поверх можно оргстекло матовое положить и подшаманить светодиоды под него. (да да, меня лаунчпад все никак не отпустит)
_________________ "Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл / "Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
А ещё есть в продаже ДЕШЕВЫЕ компьютерные клавы с USB портом и виртуальные проги с барабанами. Всё одно Сереге в компутер втыкать! Просто нарисуй маркером на компклаве: вот это - большой барабан, а вот эта кнопка = тарелка.... Почему отдельная клава? Ну не будет же Серега на любимом компьютере разрисовывать кнопки? В на отдельной клаве можно, да и припаять любимые тумблеры в неё нет проблем. Цена клавы в Ашане - от 250 рублей за штуку. По такой и постучать не жалко. Из воспоминаний: была у меня когда то Ямаха - 51 : имела кнопки (отдельные) ударных инструментов. И можно было записать в его секвенсор свой рисунок ритмового сопровождения. Была и Кася 671, тоже имела отдельные кнопки для ударника, была и Ямаха (не помню номер модели, более поздняя) = аналогично. Да их много моделей имели такую фичу. Ну и в последние годы и Китай наступает, копируя бывшие Японские модели. Но некие презрительно так: "Фи....! Китай....." А я в ответ: "Фи.... Бестолковый совковый недоинженер...." (что сам нихуя не умеет, а других презирает). А я уважаю Китайских инженеров! Они с руками и с головою!
Ну или модные кнопочки со встроенным на которые я ссылку давал, но дорогие заразы.
Дело даже не в кнопках, а в количестве портов. Это ещё 64 светодиода, нужно городить динамическую индикацию, опять-же программа усложняется.
Городить, но там буквально несколько строчек.
_________________ "Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл / "Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
А ещё есть в продаже ДЕШЕВЫЕ компьютерные клавы с USB портом и виртуальные проги с барабанами. Всё одно Сереге в компутер втыкать! Просто нарисуй маркером на компклаве: вот это - большой барабан, а вот эта кнопка = тарелка....
Умно В клаве есть секвенсор? А втыкать мне не в компьютер, а в сэмплер.
Цитата:
была у меня когда то Ямаха - 51 : имела кнопки (отдельные) ударных инструментов. И можно было записать в его секвенсор свой рисунок ритмового сопровождения. Была и Кася 671, тоже имела отдельные кнопки для ударника, была и Ямаха (не помню номер модели, более поздняя) = аналогично. Да их много моделей имели такую фичу. Ну и в последние годы и Китай наступает, копируя бывшие Японские модели.
И вновь дяде Толе выпала прекрасная возможность понтануться своими "японскими" синтезаторами Я на своём самопально-неяпонском сэмплере могу забабахать такое, чего твоим синтезаторам и не снилось
Цитата:
А я уважаю Китайских инженеров! Они с руками и с головою!
Много ли они головой пользуются, копируя японские модели?
Не только японские. На cqham есть тема про автономный SDR трансивер Тюльпан (ну т.е. без компа с цифровой обработкой) - китайцы уже на али продают аналог по 60 тыс руб
_________________ "Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл / "Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения