├── LICENSE.md ├── projeto_midi.ino └── README.md /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Levi Ribeiro 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /projeto_midi.ino: -------------------------------------------------------------------------------- 1 | #include "MIDIUSB.h" 2 | 3 | const byte TOTAL_BUTTONS = 5; 4 | const byte BUTTONS_PIN[TOTAL_BUTTONS] = {2,3,4,5,6}; 5 | //https://github.com/arduino/tutorials/blob/master/ArduinoZeroMidi/PitchToNote.h 6 | const byte BUTTONS_PITCH[TOTAL_BUTTONS] = {60,62,64,65,67}; 7 | byte currentRead[TOTAL_BUTTONS]; 8 | byte tempRead; 9 | 10 | void setup() { 11 | for (byte i = 0; i < TOTAL_BUTTONS; i++) { 12 | pinMode(BUTTONS_PIN[i], INPUT); 13 | } 14 | } 15 | 16 | void loop() { 17 | for (byte i = 0; i < TOTAL_BUTTONS; i++) { 18 | byte buttonState = digitalRead(BUTTONS_PIN[i]); 19 | tempRead = buttonState; 20 | if (currentRead[i] != tempRead) { 21 | delay(2); 22 | byte pitch = BUTTONS_PITCH[i]; 23 | currentRead[i] = tempRead; 24 | if (buttonState == HIGH) { 25 | noteOn(pitch); 26 | } else { 27 | noteOff(pitch); 28 | } 29 | } 30 | } 31 | } 32 | 33 | void noteOn(byte pitch) { 34 | MidiUSB.sendMIDI({0x09, 0x90, pitch, 127}); 35 | MidiUSB.flush(); 36 | } 37 | 38 | void noteOff(byte pitch) { 39 | MidiUSB.sendMIDI({0x08, 0x80, pitch, 0}); 40 | MidiUSB.flush(); 41 | } 42 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # Sementinha do Mal - MIDI 3 | 4 | Projeto para o processo seletivo do Laboratório de Computação Física no Instituto UFC Virtual da Universidade Federal do Ceará. 5 | 6 | Baseado no projeto de Leandro Linares foi construído em Arduino e com manufatura aditiva com filamento (PLA) e resina. 7 | 8 | 9 | ## Funcionalidades 10 | 11 | Teclado MIDI com cinco botões construído em Arduino que pode ser utilizado em diversas DAW's (FL Studio, Ableton, Garage Band e semelhantes). 12 | 13 | Idealizada para a criação de baterias, "chopping" de samples e produção de beats de boom bap. 14 | 15 | ## Aprendizados 16 | #### Manipulação de equipamentos 17 | Como eu havia utilizado uma gama limitada de equipamentos anteriormente utilizar alguns componentes mais complexos, mesmo que para testes, foi um pouco complexo no início. 18 | 19 | Contudo, com o tempo fui ficando bem confortável com esses equipamentos. Um que deve ser mencionado é o ferro de solda. Como eu nunca havia mexido com um tive muito receio no começo mas depois fiquei bastante confortável com sua utilização. 20 | 21 | #### Modelagem em CAD 22 | Como grande parte de minha experiência em modelagem era com o Blender, utilizar um software onde a manipulação de valores e métricas é regra foi bem desafiador no começo, tudo parecia muito mais difícil e travado se comparado ao que eu já utilizava. 23 | 24 | No entanto, com o tempo - e ao desenvolver projetos nele - o workflow foi melhorando e se tornando cada vez mais eficiente. 25 | 26 | #### Frustrações da impressão 3D 27 | Essa parte pra mim foi muito mais psicológica do que operacional. Mas uma grande dificuldade pra mim foi lidar com pequenos erros no produção (falta de BRIM na peça, a cama que estava aquecida alguns graus a menos do que o necessário) que levavam a erros “gigantes” na impressão e, evidentemente, ao desperdício de material do laboratório. Fora isso, erros de impressão que ocorrem naturalmente vez ou outra como uma linha que não imprimiu bem e afetou a estrutra da impressão inteira. 28 | 29 | Entretanto, me explicaram que esse tipo de coisa acontece e faz parte do processo de aprendizado - errar e acertar. 30 | 31 | E esses erros me fizeram compreender alguns conceitos interessantes - principalmente sobre boas práticas de impressão. 32 | 33 | 34 | ## Screenshots 35 | 36 | #### Prototipação 37 | ![20230912_123859](https://github.com/ribeiroLevi/SementinhaDoMal-MIDI/assets/126264441/601dd7f5-786e-4272-ae9d-bd363e857f2c) 38 | 39 | #### Modelagem 40 | ![6](https://github.com/ribeiroLevi/MIDI-ARDUINO/assets/126264441/36d11036-7eca-494e-abf2-dfaa402518aa) 41 | ![3](https://github.com/ribeiroLevi/MIDI-ARDUINO/assets/126264441/bae5c77a-745a-41df-8919-5e0b9f4c82cc) 42 | 43 | #### Fatiamento 44 | ![fatiamento2](https://github.com/ribeiroLevi/MIDI-ARDUINO/assets/126264441/50aed935-d7a3-4515-b68d-18f212dce133) 45 | ![fatiamento](https://github.com/ribeiroLevi/MIDI-ARDUINO/assets/126264441/fae744c6-1411-4252-ad14-d7f1656c4199) 46 | 47 | #### Impressão 48 | ![WhatsApp Image 2023-09-27 at 19 20 32](https://github.com/ribeiroLevi/MIDI-ARDUINO/assets/126264441/fa8ad9da-8341-4c16-87de-62f8809094c4) 49 | 50 | (De cima para baixo) Primeira, segunda e versão final. 51 | É interessante ressaltar que performei testes de CNC na primeira versão, por conta disso ela possui incrições em sua parte interna. 52 | 53 | #### Render![RENDER-MIDI](https://github.com/ribeiroLevi/SementinhaDoMal-MIDI/assets/126264441/d3f8be10-5198-4479-bb61-ad14b0f597e2) 54 | 55 | #### Modelo Final 56 | ![WhatsApp Image 2023-09-29 at 11 45 56(1)](https://github.com/ribeiroLevi/SementinhaDoMal-MIDI/assets/126264441/9484cc28-c378-4f37-b39a-cb0ad8587449) 57 | 58 | ### Lincença 59 | - [MIT Lincense](https://github.com/ribeiroLevi/SementinhaDoMal-MIDI/blob/main/LICENSE.md) 60 | 61 | ## Referência 62 | 63 | - [Projeto de Leandro Linares](https://leandrolinares.com/blog/arduino-midi-controller/) 64 | --------------------------------------------------------------------------------