La boîte à musique

MIDI autonomous music box

Similar projects worth following
La boîte à musique is a microcontroller based sytem performing random MIDI music generation. The main board integrates battery management, MIDI synthesizer with line/headphone output and integrated speaker. An extension board provides a small screen and keypad interface.

Main purpose of the system is to do random music generation, but it can already do more :

  • USB MIDI interface to use it as an external MIDI synthesizer
  • Micro SD card to use it as a standalone MIDI file player
  • Tetris program for fun

Random music generation is done on the STM32F405 with an expert system AI C++ lib (see ccgmusic for details). This lib includes some arrangements with multiple instruments (simple piano, but also rock like and dance like among others) which permit diversity in rendering. CODEC chip is Dream's SAM2695 (see, this chip is initially intended for use in cheap Karaoke device and provide a simple MIDI interface input, and an analog audio output. STM32F405 "true" random number generator gives billions of generations possibilities and greater difference between songs.

USB device is recognized as USBMIDI. Input messages sent to USBMIDI are rendered on MIDI synth chip. Output MIDI messages generated by microcontroller are sent to host.

  • 1 × STM32F405 Microprocessors, Microcontrollers, DSPs / ARM, RISC-Based Microcontrollers
  • 1 × SAM2695 Low power single chip sythesizer with effects and built-in CODEC
  • 1 × MCP73871 Power Management ICs / Power Supply Support
  • 1 × LM3671 Power Management ICs / Switching Regulators and Controllers
  • 1 × TPA2005 Audio ICs / Audio Amplifiers

View all 8 components

  • Another sample

    Julien10/06/2018 at 20:00 0 comments

    I found some time to add another sample of La boîte à musique output for the Hackaday Music contest.

    Recording analog is now pretty complicated on modern computer since constructors does not provide line port anymore ... I reused my TI PCM2900 "breadboard" USB sound card, but breadboarding USB and audio is not really efficient : it took me some times to make it works correctly. I'm now willing to design a PCB with Kicad to have a line in/line out soundcard handy.

    Anyway, there is a sample with the "Punk-Rock" profile :

  • Revised board and new firmware

    Julien02/21/2016 at 19:57 1 comment

    After a small revision to the board, I finally ordered it on OSHPark. The revision includes a new stereo pot to control headphone and speaker output volume. I changed the micro USB SMD connector with a through hole mini USD because I had to resolder the SMD part multiple times. Finally I added the possibility to have a functionnal board without optional speaker/amp and battery parts.

    Once populated and soldered I discovered that I can't get the initial firmware to work... I originally used mbed but after trying for some hours I couldn't get it working. I imagine that I changed something in mbed directly but impossible to find it out. So I decided to change platform from mbed to libopencm3 plus atomthreads and make a new firmware (almost) from scratch. It was actually a great experience which take only a few hours and new firmware is better than the original one.

    New firmware and Eagle schematics and board design are available on a new github repository.

  • First sample

    Julien12/30/2015 at 19:03 0 comments

    I discovered that my laptop doesn't have any line in to record some music from la boîte à musique. I decided to create a small usb card to do that using PCM2900. I just soldered the chip on a tsop to dip breakout and put it on a breadboard with needed passives.

    So here is a first sample randomly generated with seed 272310243 (Dance style) and recorded directly from la boîte à musique analog output :

    More to come !

View all 3 project logs

Enjoy this project?



tedysuwarnadysoleh wrote 07/05/2018 at 09:13 point

Hi julien how to get add din midi jack in please

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates