Самодельные электронные ударные

Тема в разделе "Arduino & Shields", создана пользователем Dan, 24 дек 2016.

  1. Dan

    Dan Гик

    velocity должна быть больше нуля, но максимум 127 в зависимости от силы удара
     
  2. Dan

    Dan Гик

    а наводки как-то можно уменьшить, не знаю, дополнительным резистором, к примеру?
     
  3. mcureenab

    mcureenab Гуру

    А, нормально. Еще и лучше, чем Serial. Тогда Serial не нужен. Колонка +5.46 это что?
     
  4. mcureenab

    mcureenab Гуру

    Экранированный провод можно использовать и настолько короткий, насколько это возможно.
     
  5. Dan

    Dan Гик

    честно говоря, сам хз что она означает)я в основном смотрю там на конец строки. и вообще непонятно почему нота сама отключается

    а вместо serial ниче не нужно прописывать?
     
  6. Dan

    Dan Гик

    блин, экранированный провод это не проблема, а вот длина провода это уже беда. как же эти ребята забугорные все делают и все получается)
     
  7. Dan

    Dan Гик

    попробовал я с задержкой, результат от этого не изменился. попробовал после удара отключать ноту, на 1/1000000 стало по-лучше

    Код (C++):
    KICK_VAL = analogRead(KICK);
            if(KICK_VAL > KICK_THRESHOLD)
            {
                velocity = 30;
                MIDI.sendNoteOn(KICK_DRUM,velocity,1);
                delay(1000);
                MIDI.sendNoteOff(KICK_DRUM,0,1);
                Serial.print(KICK_VAL);
            }
     
  8. rkit

    rkit Гуру

    Никто в здравом уме музыкальные инструменты на ардуино не делает.
     
  9. Dan

    Dan Гик

    с чего такие выводы? ардуино по силе данная тема, но у меня знаний нет в этой области, мне посоветоваться то по сути не с кем. я бы может и заказал даж у кого-нить код, лишь бы рабочий был и цена адекватная. понятно, что кроме ардуино еще могут понадобиться дополнительные резисторы, конденсаторы и прочее, но, в целом, все реально. не один видос в ютубе сделан на эту тему
     
  10. rkit

    rkit Гуру

    Нет, не по силе. С чего такие выводы у вас? Не может ардуино создавать звуков, кроме писка. В лучшем случае - управлять другими устройствами, создающими звуки. Но это игрушки.
     
  11. Dan

    Dan Гик

    так мне и не нужно создавать звук, мне нужно, чтобы с помощью ардуино звук передавался через vst-плагин. основная проблема для меня сейчас - это датчик. с него сигнал идет неправильный, отсюда и кривая обработка звука.
    а с чего у меня такие выводы? наберите в ютубе "arduino drumkit" и посмотрите, что люди делают
     
  12. Dan

    Dan Гик

    по ходу никто не сталкивался с подобными вещами вплотную(
     
  13. mcureenab

    mcureenab Гуру

    вызовы Serial не нужны, раз в отладочном интерфейсе все видно. К стати Serial видимо конфликтует с MIDI. У вас MIDI устройство на ножку 1 - TX подключено?

    В интерфейсе что получилось? 1 сек нота должна звучать. Для барабана это наверное слишком долго, если молотить более 60 ударов в минуту.

    Перед использованием объект MIDI нужно инициализировать:

    Код (C++):

    MIDI_CREATE_DEFAULT_INSTANCE();

    void setup()
    {
        MIDI.begin();
    }
     
     
  14. rkit

    rkit Гуру

    Посмотрел ютуб - просто семплы по сигналам. Это не музыкальный инструмент. С тем же успехом можно просто кучу кнопок взять и нажимать, вместо пьезо.
     
  15. Dan

    Dan Гик

    физического разъема MIDI нет вообще, вместо этого и идет программа.

    попробовал с задержкой - звук также выдается без пауз, ударил -> звук, ударил сразу же -> еще один звук

    а в MIDI.begin также скорость передачи нужно задавать как и в случае с Serial?
     
  16. Dan

    Dan Гик

    согласен, суть та же, только у кнопки два положения - вкл/выкл, а у датчика диапазон, поэтому это неплохая альтернатива брендовым электронным ударным.

    но фиг с ними, с сэмплами, у меня и они то нормально не воспроизводятся, вот в чем беда.
     
  17. mcureenab

    mcureenab Гуру

    Код (C++):

    #include <MIDI.h>

    const int KICK = A0;   //объявляем константу бас-бочки как вывод A0 на Ардуино
    const int KICK_THRESHOLD =50;
    const byte KICK_DRUM =36;

    MIDI_CREATE_DEFAULT_INSTANCE();
    void setup()
    {
        pinMode(KICK, INPUT);
        MIDI.begin();
    }

    void loop()
    {
        int KICK_VAL = analogRead(KICK);
        if(KICK_VAL > KICK_THRESHOLD)
        {
            MIDI.sendNoteOn(KICK_DRUM, KICK_VAL, 1);
            delay(500);
            MIDI.sendNoteOn(KICK_DRUM, 0, 1);
        }
    }
    MIDI.begin() сам все настраивает, как нужно для MIDI.
     
  18. Dan

    Dan Гик

    понял, ща попробую
     
  19. mcureenab

    mcureenab Гуру

    Тут еще громкость нужно правильно посчитать. Пока это по сути случайная величина.
     
  20. mcureenab

    mcureenab Гуру