pomax / arduino-midi-recorder Goto Github PK
View Code? Open in Web Editor NEWLet's build an Arduino-based MIDI recorder!
Let's build an Arduino-based MIDI recorder!
I'm wondering whether the algorithm of such frequent writes to the SD card won't lead to rapid wear and tear of the card. SD cards don't have a long lifespan in terms of write cycles. Perhaps it's better to add a FRAM memory module, collect MIDI events there, and then save them in one go on the SD card. What's your opinion?
that way you can go "oh that bit was particularly sweet, click" and then move on again.
@Pomax thank you for this great project and the detailed documentation!!!
Currently i am trying to build my own recorder with an Arduino UNO R3 and a TFT/SD shield based on your sketch.
Due to the huge amount of PINS used by the shield i have no button for creating markers or any kind of audio debug.
Currently i do not use a RTC as well but i am going to implement this as soon as everything works.
my TFT shows an incoming-note-indicator, incoming cc-indicator, the current filename of the recording and the recording time.
so everything works as expected except one thing:
The created MIDI files seems to be corrupt or not readable.
I tried different kinds of midi file supporting software. One of those is upload form of onlinesequencer.net.
The error message of the "vanilla version" reads:
Could not parse MIDI file: Track data exceeds expected length (1/0)
After fixing the track_length bytes with fix.py
i get a different error:
Could not parse MIDI file: Track data exceeds expected length (59/56)
I also tried to manipulate the calculation of track_length in fix.py
to avoid the error above but then i get:
Unexpected EOF
As .mid
files are not attachable i have created a .zip
with short recordings of 3 noteOn + noteOff events.
test-recordings-vanilla-and-fixed.zip
FILE-061-vanilla.MID
FILE-061-fixed_length.MID
I used FAT16
filesystem for the SD.
Obviously there are some bytes in the recordings that shouldn't be there, right?
Do you have any hint how to fix this?
First of all, what a good idea. I'm still using a 3 1/2" disc recorder/player which is becoming unreliable.
I'd like to build a similar device that would also play back. I'd have to record all the SysEx codes as well, my instrument relies on them. It's a three manual electronic organ with pedals so has four channels, all on one track, and stops, swell pedals, etc are all done by SysEx codes (0F?). MIDI files produced by this instrument will only work on this instrument, it's a custom design.
Is this feasible?
Thanks,
Chris
Have you considered a version of this project that also records audio?
I don’t know the first thing about this stuff (if I make this, it’d be my first arduino project) and how much complexity that would add, but for synths and drum machines and other MIDI toys that one might like to use without a pc, I think a parallel recording of the actual audio (and a similar “audio in / audio thru” setup) would add very handy functionality.
= 130.151843817787419 BPM
Hi there!
I built out your project step by step yesterday, and it works great!
However, I'm trying to build a standalone sequencer, equipped with 4 FSR sensors as inputs, outputting midi data over a single midi channel(0). While the 5-PIN DIN works great with your sketch, I'm having trouble with code to replace the input on RX pin 0 with the input from my four analog sensor pins.
I tried replacing all the MIDI.h-related functions/defines/etc. with their usbMIDI.h equivalents (Plus my original sketch for simply reading/ writing the analog signals to 7-bit MIDI messages). Have you tried analog sensors with this project?
Serious thanks for posting your process here, the humor was refreshing, and I'm sure that it has been time consuming.
Best,
Colby ☮️
@Pomax As you might have noticed i have created a fork with a lot of changes based on your repository.
I kept your license notice in the main sketch file.
Please tell me if this enough or if a have to do more in terms of license.
I don't want to violate any license agreements!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.