драмм машина,на ардуино уно

dionistor
Offline
Зарегистрирован: 18.03.2019

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

Yarik.Yar
Offline
Зарегистрирован: 07.09.2014
ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

а сам автор здесь частенько появляется

dionistor
Offline
Зарегистрирован: 18.03.2019

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

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

dionistor пишет:

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

Т.е. нужен CD-проигрыватель (флешкопроигрыватель, магнитофон)? Или что?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Скорее, толковый негр с барабаном

rkit
Offline
Зарегистрирован: 23.11.2016

Нужно профессиональное оборудование за 1/10 цены, очевидно же.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

такая не подойдёт? Сделана аккуратно, потребляет немного, играет неплохо

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Негра нет. 

vvadim
Offline
Зарегистрирован: 23.05.2012

и руки грязные какие то...

mixail844
Offline
Зарегистрирован: 30.04.2012

DetSimen пишет:

Негра нет. 

ну тогда создать драм машинку совсем просто : 
 
1.создать машину времени 
2. вернуться  на 600 лет назад,
3. купить себе негра
..
5. profit
sadman41
Offline
Зарегистрирован: 19.10.2016

Вот с неграми: https://youtu.be/w0D2nadzBSQ?t=83

rkit
Offline
Зарегистрирован: 23.11.2016

Негров и сейчас продают.

reticular
Offline
Зарегистрирован: 09.06.2016
dionistor
Offline
Зарегистрирован: 18.03.2019

большое спасибо reticular ,то что нужно,и со схемами и кодом все как надо,буду изучать и  собирать,если вопросы будут напишу,я электронщик а не программист поэтому тяжеловато немного а сделать надо,рядом есть программист на работе но его хрен допросишься помочь поэтому приходится по форумам лазить

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018
#include <VS1053_MIDI.h>

/*
 * The code is based on Nathan Seidle's Sparkfun Electronics example code for the Sparkfun 
 * MP3 Player and Music Instrument shields and and VS1053 breakout board. 
 *
 * <a href="<a data-cke-saved-href="http://www.sparkfun.com/Code/MIDI_Example.pde" href="http://www.sparkfun.com/Code/MIDI_Example.pde" rel="nofollow">http://www.sparkfun.com/Code/MIDI_Example.pde</a>" title="<a data-cke-saved-href="http://www.sparkfun.com/Code/MIDI_Example.pde" href="http://www.sparkfun.com/Code/MIDI_Example.pde" rel="nofollow">http://www.sparkfun.com/Code/MIDI_Example.pde</a>" rel="nofollow"><a data-cke-saved-href="http://www.sparkfun.com/Code/MIDI_Example.pde" href="http://www.sparkfun.com/Code/MIDI_Example.pde" rel="nofollow">http://www.sparkfun.com/Code/MIDI_Example.pde</a></a>
 * <a href="<a data-cke-saved-href="http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Dev/Arduino/Shields/VS_Shield_Example.zip" href="http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Dev/Arduino/Shields/VS_Shield_Example.zip" rel="nofollow">http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Dev/Arduino/Shields/VS_Shield_Example.zip</a>" title="<a data-cke-saved-href="http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Dev/Arduino/Shields/VS_Shield_Example.zip" href="http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Dev/Arduino/Shields/VS_Shield_Example.zip" rel="nofollow">http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Dev/Arduino/Shields/VS_Shield_Example.zip</a>" rel="nofollow"><a data-cke-saved-href="http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Dev/Arduino/Shields/VS_Sh..." href="http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Dev/Arduino/Shields/VS_Sh..." rel="nofollow">http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Dev/Arduino/Shields/VS_Sh...</a></a>
 *
 *
 * THEORY OF OPERATIONS
 *
 * The VS1053b has two ways of playing MIDI: One method is that you simply send a Standard MIDI level 0 file through
 * SPI, and the chip will play it. This works exactly the same way as MP3 mode and will not be discussed further here.
 * The other method is that the VS1053b has a "Real Time MIDI mode", in which it will instantly execute MIDI commands 
 * sent to it through either the UART or SPI. 
 *
 * Real Time MIDI mode can be enabled with two different methods, controlled by USE_GPIO_INIT 
 *  (1) Setting GPIO1 to HIGH (which is hardwired in the Sparkfun Music Instrument shield, and can be done through 
 *      pin 4 in the MP3 Player Shield)
 *  (0) Sending a small software patch through SPI.
 *
 * MIDI data can be sent with two different methods as well, controlled by USE_SPI_MIDI
 *  (0) Through a (software) serial connection on pin 3, at 31250 baud
 *  (1) Through SPI, at an arbitrary data rate. For SPI, each byte of MIDI data needs to be prefixed by a 0 byte 
 *      (The V1053b data sheet erroneously states that the padding should be a 0xFF byte).
 *
 * Both initialization methods and both transmission methods can be selected through the #defines below. Out of the box, 
 * it probably makes most sense to enable real time MIDI through pin 4, and send serial data through pin 3, but if you 
 * want to cut the traces for pin 3 and 4 and use those pins for another purpose, the alternative methods may come in 
 * handy. 
 * 
 * MIDI Shield connections:
 * SCK2  - PB13  // 13 
 * MISO2 - PB14  // 12 
 * MOSI2 - PB15  // 11 
 * SD-CS - PB8   //  9 SD-card

 * 
 * in other VS1053B Shield GPIO1 is connected to pin 4 Arduino and Serial In is connected to pin 3
 * becouse in this Shield pins 3 and 4 are not connected, we choise variant with plugin and SPI
 */ 

//#include "C:\Program Files\Arduino\hardware\Arduino_STM32-master\STM32F1\libraries\SPI\src\SPI.h"
//#include "C:\Users\Irina\Documents\Arduino\libraries\VS1053B_MIDI_STM32\VS1053_MIDI.h"

#include <SPI.h>
//#include <VS1053_MIDI.h>


VS1053B_device drum;
unsigned char note = 0; //The MIDI note value to be played
//unsigned char resetMIDI = 4; //Tied to VS1053 Reset line
//unsigned char ledPin = 13; //MIDI traffic inidicator
int  instrument = 0;

void setup() {
  Serial.begin(57600); //Use serial for debugging 
  Serial.println(F("\n******\n"));
  Serial.println(F("MP3 Shield Example"));
  //USE_SPI_MIDI=1;

  drum.setup(0);
 
//  for (byte note = 30; note < 90; note ++) {
//    noteOn(0,note,127);
//    Serial.println(note);
//    delay(50);
//    noteOff(0,note,127);
//    delay(50);
//   
//
//  }
   drum.talkMIDI(0xB0, 0x07, 120);
      drum.talkMIDI(0xB0, 0, 0x78); //Default bank Drums
   drum.talkMIDI(0xC0, 0, 0);
}

void loop() {
  //Demo Basic MIDI instruments, GM1
  //=================================================================
  Serial.println("Basic Instruments");

    drum.noteOn(0, 35, 60);
    
    
    
    for (int i=0;i<4;i++){
    drum.noteOn(0, 46, 60);
    if(i==1||i==3)drum.noteOn(0, 38, 60);
    drum.noteOn(0, 51, 40);
    delay(100);
    drum.noteOff(0, 51, 40);
    delay(100);
    drum.noteOff(0, 46, 60);
    if(i==1||i==3)drum.noteOff(0, 38, 60);
    drum.noteOn(0, 51, 40);
    delay(100);
    drum.noteOff(0, 51, 40);
    delay(100);
    }
    drum.noteOff(0, 35, 60);
//    delay(200);
    

//  //Change to different instrument
//  for(instrument = 0 ; instrument < 127 ; instrument++) {
//
//    Serial.print(" Instrument: ");
//    Serial.println(instrument, DEC);
//
//    talkMIDI(0xC0, instrument, 0); //Set instrument number. 0xC0 is a 1 data byte command
//
//    //Play notes from F#-0 (30) to F#-5 (90):
//    for (note = 30 ; note < 90 ; note++) {
//      Serial.print("N:");
//      Serial.println(note, DEC);
//      
//      //Note on channel 1 (0x90), some note value (note), middle velocity (0x45):
//      noteOn(0, note, 60);
//      delay(200);
//
//      //Turn off the note with a given off/release velocity
//      noteOff(0, note, 60);
//      delay(200);
//    }
//
//    delay(100); //Delay between instruments
//  }
  //=================================================================



/*
  //Demo GM2 / Fancy sounds
  //=================================================================
  Serial.println("Demo Fancy Sounds");
  talkMIDI(0xB0, 0, 0x78); //Bank select drums

  //For this bank 0x78, the instrument does not matter, only the note
  for(instrument = 30 ; instrument < 31 ; instrument++) {

    Serial.print(" Instrument: ");
    Serial.println(instrument, DEC);

    talkMIDI(0xC0, instrument, 0); //Set instrument number. 0xC0 is a 1 data byte command

    //Play fancy sounds from 'High Q' to 'Open Surdo [EXC 6]'
    for (note = 27 ; note < 87 ; note++) {
      Serial.print("N:");
      Serial.println(note, DEC);
      
      //Note on channel 1 (0x90), some note value (note), middle velocity (0x45):
      noteOn(0, note, 60);
      delay(100);

      //Turn off the note with a given off/release velocity
      noteOff(0, note, 60);
      delay(100);
    }

    delay(100); //Delay between instruments
  }
*/


/*
  //Demo Melodic
  //=================================================================
  Serial.println("Demo Melodic? Sounds");
  talkMIDI(0xB0, 0, 0x79); //Bank select Melodic
  //These don't sound different from the main bank to me

  //Change to different instrument
  for(instrument = 27 ; instrument < 87 ; instrument++) {

    Serial.print(" Instrument: ");
    Serial.println(instrument, DEC);

    talkMIDI(0xC0, instrument, 0); //Set instrument number. 0xC0 is a 1 data byte command

    //Play notes from F#-0 (30) to F#-5 (90):
    for (note = 30 ; note < 40 ; note++) {
      Serial.print("N:");
      Serial.println(note, DEC);
      
      //Note on channel 1 (0x90), some note value (note), middle velocity (0x45):
      noteOn(0, note, 60);
      delay(50);

      //Turn off the note with a given off/release velocity
      noteOff(0, note, 60);
      delay(50);
    }

    delay(100); //Delay between instruments
  }
*/


}

//Send a MIDI note-on message.  Like pressing a piano key
//channel ranges from 0-15
//void noteOn(byte channel, byte note, byte attack_velocity) {
//  talkMIDI( (0x90 | channel), note, attack_velocity);
//}

//Send a MIDI note-off message.  Like releasing a piano key
//void noteOff(byte channel, byte note, byte release_velocity) {
//  talkMIDI( (0x80 | channel), note, release_velocity);
//}

//Plays a MIDI note. Doesn't check to see that cmd is greater than 127, or that data values are less than 127
//void talkMIDI(unsigned char cmd, unsigned char data1, unsigned char data2) {
////  digitalWrite(ledPin, HIGH);
//  sendMIDI(cmd);
//  sendMIDI(data1);
//
//  //Some commands only have one data byte. All cmds less than 0xBn have 2 data bytes 
//  //(sort of: <a data-cke-saved-href="http://253.ccarh.org/handout/midiprotocol/" href="http://253.ccarh.org/handout/midiprotocol/" rel="nofollow">http://253.ccarh.org/handout/midiprotocol/</a>)
//  if( ((cmd & 0xF0) <= 0xB0) || ((cmd & 0xF0) == 0xE0)) sendMIDI(data2);
//
// // digitalWrite(ledPin, LOW);
//}

STM32 - под нее написали библиотеку.

Ограничиваем входы стабилитронами 3.3В (а, Вы делаете не электронные барабаны - пропустите ентот пункт)

Пишем MIDI - а хер ли там писать, если понимаешь про что. А если не понимаешь - нахера тебе драм машина?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

вот эти 32 строки кода и есть драм машина?
Кто же напишет следующую книжку - Ардуино это очень просто...?