Search the Community
Showing results for tags '256x64px graphical display'.
Hola, we recently had some very rainy days in southern Germany and MIDIbox-build-fever struck again, so I had to do something... my project build stack is very large, and even some started projects are not complete yet (MBProgramma), but this one has been on the wishlist for even longer than the Programma, so I just had to start it this year... otherwise it would probably never happen :-). I have to say, that the MIDIbox platform is phenomenal and addictive! It would be so nice to work on something of this quality on a daily job basis... results can be reached very quickly, the documentation and code base is great. Thanks a lot for everything, TK.! Let's start... Motivation * DAW hate Turning on the computer and loading a DAW as complex as Ableton or Cubase makes sure any of my already limited inspiration will be gone by the time it is able to record MIDI. I'd like to sit down and "just jam". I felt, very often, that what i played was lost in time, because, of course, the computer was off. So I wanted a simple MIDI recorder, that "just records" automatically a few seconds after turning it on, without any major interaction. If what was just played sounded nice, it would be automatically stored on SD card in compatible .MID format for later playback or even some DAW-based post-processing. If not, well, one could just jam on, or delete the track (called clip in this app). * Hardware minimalism Building the unit should be quick and cheap. There should only be a minimum number of buttons and encoders. I managed to build everything including the control surface (yes, i know, it looks cheap, but it also was cheap :-)) on one long weekend - and so can you. We just use standard hardware (STM32F4 core, one DINx4, out DOUTx4 and a nice display). Because there are few components, it is very viable to do it on vector board, no immediate need for PCBs... * Space minimalism As we all have very limited available upfront space in our studios, the unit is separated into a very small control surface (16x8x1.5cm), which is connected with a 40-PIN old-computer-IDE cable to the base unit, that contains the Core, the MIDI ports and the DIN/DOUT modules. * Bling Every MIDIbox needs a bit of bling... I always wanted to use that 256x64px OLED from Newhaven. TK. helped me in getting it connected a few years ago, but we never managed to initialise it 100% (there was some flicker). Meanwhile, Newhaven updated their Datasheets, and after further experimentation, the display now works very nicely and is flicker free. The display is still available on the market, and there even has been a reissue from Newhaven - it came to stay at least for a while, it seems. The 16 grey/blue levels are fantastic! Connection to a STM32F4 is very straightforward, you just need a 3V3 regulator, as the onboard STM32F4 regulator is too weak. Functionality (already completed) * Realtime MIDI Recording and playback (functionality cloned from the MIDIO128 MIDI recorder, thanks for that! :-)) of nearly unlimited length to compatible .MID files for later postprocessing. No quantisation or step-recording, we have the MBSEQ for that job! * Graphical Note output. For bling reasons, we currently display notes in voxel space. That means, when a note is played, a "mountain" is drawn - left side are the low keys, right side the high keys - the mountainscape is scrolled continously, so that we "paint" a mountainrange while flying over it. Beats/quarternote timing is indicated in the mountainrange, by an area of "even terrain". Higher mountains = higher key velocity/louder notes. A demo video should be up soon :-). Smooth framebuffered playback @ ~30fps, the STM32F4 is great! :smile: * Proper MIDI sync with a MBSEQ V4. This was very important, as the SEQ is the mastermind and controls all MIDI synths here. Pushing play on the SEQ, while the loopa is armed will record "in sync". The same applies for playback: when a clip is armed for playback, and the SEQ is started, it will playback in sync with the MBSEQ as a MIDI timing master. This already really works really well, and i spent the last night just smiling and jamming! :smile: * Beat LEDs are working - the leftmost is a red LED and will blink on every beat/ quarternote (like MBSEQ), there are three more green LEDs, which will flash on the 16th notes. * The illuminated clip switches are working. For later on, the illuminated switch will show, if a clip is "filled" with MIDI data (solid on), is armed for playback (blinking slowly, every quarternote) or is armed for recording (blinking quickly, every 16th note). Work in Progress/Wishlist This will likely take a a lot more weekends of programming and adding code to be complete. But then, I really love to see small steps of progress. Even now, just a few days after starting with the project, the unit is quite usable, although it just records to SD and plays back a single clip and draws some nice voxelspace mountains while doing so :-). Further items on the wishlist are (all unfinished, yet): * Support for a graphical variable-width-letter font, that supports the 16 shading levels of the OLED. This allows to use an antialiased font for a clear display and "visually round font corners". * Support for playing back up to eight pre-recorded clips in parallel (currently only one clip is supported). The idea is to load the MIDI files into memory and play them back with a mute/unmute feature like in the MBSEQ V4. * Support for synchronized muting/unmuting of clips * Support for looped clips * Support for editing clip start/endpoints, e.g. for loops or for one-shot playback (with the left and right encoders) * Support for multiple sessions (one session holds eight clips) * Support for a 2D noteroll display (toggle "Mode" button to switch between 3D voxelspace and 2D noteroll is already reserved :smile:) ... hope you like it so far, i will update this thread, when new changes are made to the software. Have a great time! Peter