VS1010 as a portable MIDI sequencer composing device

Designing hardware and software for systems that use the VS1010 MP3 Audio DSP Microcontroller.
Post Reply
Posts: 4
Joined: Mon 2018-12-24 16:32

VS1010 as a portable MIDI sequencer composing device

Post by RetroZvoc » Tue 2019-07-16 19:21

I have an idea of a portable MIDI sequencer for composing songs and editing MIDI files on the go. Something along the lines of YAMAHA QY-100, but those devices are very old, will wear out, are expensive, and don't have USB or SD card interface. So I've decided to make my own since I've been working with MIDI since 2006 as a kid and had a YAMAHA PSR-79 MIDI keyboard in 2001 which helped me discover my musical talent. I'm tired of poking fingers to my keyboard to enter notes and I don't want to use touch-screen controls as that's not even nearly a piano-like experience.

I've been working with VS1053b's real-time MIDI mode by using an Arduino example. However, due to complications of the pinouts with my ESP32, I've realized that I'm out of pins. For better performance and easier development, I need a special SPI for the MIDI mode, a special SPI for the SD card and also 13 pins for my LCD and 6 pins for my charlieplexed keyboard.

So, as that wasn't a good idea, I was thinking about the possibility of ordering a relatively cheap VS1010 board that isn't too large with components I don't need, but which is straightforward aimed for just making a MIDI-oriented device (something like those Arduino shields, but more MIDI-ish which I can plug on top of my friend's keypad PCB he's making for me). I know how to code the music composing program in C++ and how to send MIDI commands as the program plays the music and I also know how my program would load, read, play, edit and save MIDI files. One thing that's missing to my knowledge is does the VS1010 chip contain a MIDI synth like how the VS1053 does? If it doesn't, could it be programmed as a plugin or a library? And if it cannot, which other chip would be good as a standalone application? Consider also that I don't want to pay for MPEG LA licensing because I don't necessarily care about recording/playback of non-MIDI audio files unless I am optionally able to export the MIDI playback into OGG/WAV in real-time.

My circuitry in progress and in mind:

I have 6 datalines driving my charlieplexed keyboard. 3 lines drive a Johnson counter which shifts the charlieplexing bit while the other 3 lines drive a parallel-in-serial-out shift register that's used for the NES console's joypad. That will nicely reduce the pin count for 64 buttons I'm going to have on my entire board. It will also save the battery life as I don't need to have all button lines pressed at the same time. I could also use 2 extra datalines to choose between charlieplexing through buttons and charlieplexing through LEDs.

My friend is working on a USB/battery/data/charging circuit for the same board as the 64-key keyboard. I'd like to know if you have a board/microcontroller/module which supports battery charging (LiPo or NiMH) with USB data transfer of files on the device's NAND Flash chip and the SD card without requiring the user to install anything on the computer. The VS1010 sounds promising because it could also provide USB Host so that I can use my USB stick to save data on there instead of using cables everywhere I go.

An LCD display is definitely needed. One where I don't have to waste half of my CPU time on just refreshing it but where I can see a very simple GUI as one seen on MP3 players and MIDI synthesizer keyboards and workstations. I'd say no less than 160x128 and no larger than 320x240.

I've heard about the VS23S010 and VS23S040 chips for expanding RAM as my MIDI files will be no larger than 128kB while I also need some extra space for storing the datastructures of newly recorded notes and of linked lists of notes. Those chips could also help me with video accelleration, but I don't know how that would connect to an LCD display as it can only generate PAL/NTSC.

Which on-board speakers are MIDI-friendly? What kind of headphone jack amplifier do I need for connecting to an external speaker or a computer's microphone jack without ground loops and other buzzy sounds and electrical hazards? Which boards have at least such a headphone jack interface?

My budget is €50 and I'm in Croatia.

Thank you for your help.

User avatar
VLSI Staff
Posts: 1657
Joined: Thu 2010-07-15 16:04

Re: VS1010 as a portable MIDI sequencer composing device

Post by pasi » Wed 2019-07-17 8:46

Only vs1053b contains a MIDI decoder/synth. There is relatively large amount of data for sampled percussions and wavetables in the ROM of vs1053b for MIDI, and without them being in ROM it would make a very poor MIDI, and thus not worth the effort.

One solution would be to combo vs1010 with vs1053b.

The VS1010 developer board has both headphone and line out. Line out can be connected to external devices.

(MPEG layer I through layer III patents have expired.)
Visit https://www.facebook.com/VLSISolution VLSI Solution on Facebook

Posts: 4
Joined: Mon 2018-12-24 16:32

Re: VS1010 as a portable MIDI sequencer composing device

Post by RetroZvoc » Sun 2019-07-21 3:53

I see. What do I need to know in order to assemble a PCB containing only those two chips? I don't know anything regarding which passive components need to be placed at which proximity that the whole thing could work.

Also, in the meanwhile, I saw that Teensy 3.5 is in stock in EU and that I can buy that. I suppose that mixing that with the VS1053b board would be a better idea than to use VS1010 as a VS1010 board has many components I don't need while Teensy 3.5 has way more RAM, way more LCD driving potential (superfast DMA and a parallel 8-bit bus) and it's all on one stick.

I hope you will one day make a great derivative of VS1053b that's specialized for MIDI sequencing with enough GPIO, enough RAM and a good LCD driver for a standalone device. 8-)

Senior User
Posts: 78
Joined: Mon 2016-05-30 11:54

Re: VS1010 as a portable MIDI sequencer composing device

Post by Hannu » Mon 2019-07-22 7:55


I think this will end up as PCB project any way you go. If there was a ready solution, you could by it from some shop :) The VQFN68 package isn't easiest to solder, but it can be done with liberal amount of flux and hot air.

The VS1010 doesn't require that much components. Have a look at minidemoboard: http://www.vlsi.fi/fileadmin/evaluation ... 21-sch.pdf That board doesn't have any GPIO for user.

Both VS1053 and VS1010 have same kind of headphone output. Have a look: viewtopic.php?f=9&t=69

VS1053 would require external regulators and that would bring the part count up. And if you are going to work with normal DIN connector MIDI, I believe it requires some level shifter too. So giving UART and right boot mode for VS1053 would bring the MIDI features for you.

VS1010 has own SD interface, two SPIs. One SPI0 could be used for firmware and SPI 2 could go to VS1053. Using SPI display, and another pin for chip select. You probably want to have USB. It is so much easier to copy the files to your media through USB mass media.

I personally hate to solder the USB connector. It is big chunk of metal which doesn't get hot, its plastics burn and when it has been soldered, I burn my fingers with it.

On the software side... VS1010 SW development is done with VSIDE so new environment to get to know. Writing display drivers, button handling and so on would be trivial but still require some care.

If the teensy is familiar platform for you, it might be the easiest route for you to go. And choose the display well so you don't have to refresh it all the time :)

Post Reply