VS1000 Applications with Source Code

These are examples of complete VS1000 based products. Use these as part of your own application or simply choose one that has the closest features you need. All examples are self-contained.

Note: some of these examples have been written with the VSIDE software development system. Some still use the legacy VSKIT. If you want to run the legacy command-line-based VSKIT versions, you first need to download the latest release of VSKIT for VS1000.

VSIDE RELEASES

Please use the VSIDE releases for new projects. In time, VSIDE will be the only supported platform for software development.

VS1000 (Gapless) Nand player

The player in this VSIDE solution minimizes the delay between two files and plays files from NAND FLASH memory. The source code also contains the necessary and convenient patches for USB, so using USB to program the content will be more reliable with various computers and setups.

The solution also contains a programmer for NAND FLASH. See the README in the solution for details.

Updated: 2014-07-24
Download: VS1000GaplessNand-20140402.zip
Download: VS1000GaplessNand-20140807-3buttons.zip

VS1000 Audio Module - SDPlayerQueue

This VSIDE Solution plays files WAV and OGG files from the uSD card. You can queue up to 100 files to be played, and files can be added to the queue even during playback. The package contains a README.txt which comes up when you open the solution in VSIDE.

Updated: 2013-10-24
Download: SDPlayerQueue090.zip
See also: VSMOD001-prog.pdf
A variant: SDPlayerGoto20170322.zip

VS1000 Audio Module - VSIDE (UART or GPIO)

This VSIDE Solution contains the full VS1000 Audio Module firmware. It is configurable for UART-controlled (default) or GPIO-controlled mode from system.h . This version supports the FAT filesystem for both the audio on the SPI FLASH and on a uSD card.

The solution consists of four projects. The first three are the actual module programs: usbmass (USB Mass Storage for SPI FLASH), spiplayer (Player for SPI FLASH), and sdplayer (SD Player / USB Mass Storage). The fourth is the sdupdate program, which can be used to update firmware or content of the audio module from uSD card.

Simply decompress the package into your solution directory, open VS1000AudioModule.solution in VSIDE, build, and program the resulting image with the Flasher/Prommer of VSIDE.

Now includes simple WAV decoder!
Also, the same firmware can be used for various sizes of SPI FLASH, because the size is automatically detected (within limits).

Updated: 2023-05-26 v0.82
Download: VS1000AudioModule082-VSIDE.zip (features ways to disable/enable USB using GPIO pins - see system.h)

The following solution is configured as GPIO-Controlled version with 4 prioritized buttons for songs, stop and volume buttons, and power on/off through power button. See README.txt from and gpioctrl.c in the packet.

Updated: 2014-06-24 v0.63
Download: VS1000AudioModuleButVolStopPower-20140624.zip

VS1000 UART Voicemail Sofware for VS1000 Audio Module - VSIDE

This is an alternative, simplified UART firmware for the VS1000 Audio Module.

With this firmware you can read, write, create, erase and play files in the SPI flash using UART connection.

Compared to the regular VS1000 audio module software, this software is much simpler. It only supports SPI flash and it uses its own flash-friendly SBFS filesystem to store the files on the SPI flash. It does not support SD cards or USB. It can write and erase files using UART commands, what the normal software cannot do. It fits into a single VSIDE solution and does not need multi-load or overlays.

New for v1.2 (since v1.01):

  • Uses REMS command to determine the FLASH size, so the same image works with FLASH sizes from 2MB to 16MB (as long as they support REMS).
  • Pause (=), Play (>), Fast Forward (»), volume up (+), volume down (-) and Cancel (C) commands are supported during play.

New for v1.4:

  • Optimizations, must compile with "vcc" (VSIDE solution is set accordingly).
  • Option for Looping play (enabling looping will remove Download and Read File commands).

Updated: 2021-06-09

LEGACY RELEASES

If possible, do not use the legacy releases for new projects.

VS1000 MLC Player 8kB (Legacy VSKIT version)

This example implements a simple player that works with MLC memory with 8kB page size. Low-level FLASH reading routines are replaced to support the 8kB page size. Because MLC requires special programming, and 8kB page size requires extensive buffering, the USB mass storage mode needs to be implemented with a separate program. Another program performs initialization and chooses if mass storage or player mode is activated after poweron. The third program is the actual player, which you can modify.

A majority of MLC memories with 8kB page size also require a RESET (0xff) command to be sent after power-on. The default VS1000D firmware does not send this command, so an additional SPI EEPROM is required to perform this operation. After sending the RESET, boot continues from the NAND FLASH.

Note: the maximum number of allowed bad erase blocks is 128, and there must be enough good blocks among the last 64 erase blocks for this example to work.

The package contains source code and the newest VS1000 developer library (with routines to handle the 8kB page size).

Updated: 2011-05-24
Download: mlcplayer8k-102.zip  mlcplayer8k.pdf

VS1000 MLC Player (Legacy VSKIT version)

This example implements a simple player that works with MLC memory. Because MLC requires special programming, the USB mass storage mode needs to be implemented with a separate program. Another program performs initialization and chooses if mass storage or player mode is activated after poweron. The third program is the actual player, which you can modify.

Note: the maximum number of allowed bad erase blocks is 128, and there must be enough good blocks among the last 64 erase blocks for this example to work.

The package contains source code, the newest VS1000 developer library and README.txt .

Updated: 2010-07-13
Download: mlcplayer20100713.zip

 

VS1000 Audio Book (Legacy VSKIT version)

This example implements an audio book application for VS1000 Developer Board with display and a menu system. The menu can also be browsed while playing. Bookmarks, backlight timer, and volume settings are saved to FLASH. Keylock is also available.

Audio to be played is selected from the menu, in book, chapter, or section level. When audio is played, the current section name is displayed. Books, chapters and sections can be indexed in millisecond resolution. Multiple books can be in the same .ogg file to reduce the Ogg Vorbis header overhead.

Download Presentation: vs1000_audio_book.pdf

Updated: 2008-10-31
Download: VS1000book092.zip
Download: vs1000book.pdf
Download: vs1000booksrc092b.zip (updated 2009-04-28)

Nand Firmware 1.11  Ogg Vorbis Player Extensions (Legacy VSKIT version)

A generic software for VS1000 that can be compiled to use different extra features. These features include saving the position and volume setting at power-off and, connecting MMC/SD cards, adding a matrix keyboard to support up to 16 keys, and using a RC5 remote controller to control the player. Also contains the VS1000 developer library. See source code and attached documentation for details.

Updated: 2008-09-12
Download: nandfirmware111.zip
Download: nandfirmware.pdf

USB flash drive and Ogg player using SPI flash (Legacy VSKIT version)

This example code implements a custom logical disk mapper interface, that is capable of implementing a USB flash disk using SPI NOR flash such as the Winbond 25X16 in 4 kilobyte segments. The software supports reading, erasing and programming the SPI flash.  When VS1000 device is detached from the USB, it switches from USB flash disk to player and starts to play Ogg Vorbis files from the serial flash.

Tested with VS1000B, Winbond 25X16 and Windows XP Professional. Measured performance: 1 megabyte file was written in 55 seconds when the eeprom was blank (no need to erase). When writing over already written data, writing the same file took 1 minute 35 seconds.

See code documentation for FAT12 subdirectory limitations.
Note 28.10.2008: FAT12 limitations do not apply to VS1000D devices.

For further information, see the TinyPlayer Support Page.

Updated: 2008-01-31
Download: spiusb.c, source code (without subdirectory support).
Download: vs1000b_25X16_spiflash_usb_player.img, example EEPROM image (with limited subdirectory support).

USB Speakers + Flash Disk + Ogg Player using Nand Flash (Legacy VSKIT version)

This example implements USB Audio (USB Speakers) and USB Mass Storage (USB Flash "memory stick") functions at the same time so you can listen to music while copying files to the nand flash. When detached from the USB, it will play Ogg Vorbis songs from the Nand Flash.

This example is designed to use Single Level Cell Nand Flash for the memory.

See mkformat and mkformat documentation for instructions on how to burn the software image to the nand flash.
This example works with VS1000 Developer Board hardware.

Updated: 2008-10-28

Download: usbspk.c - C source (compilable with vskit 1.34)
Download: nf_usbspk.img - compiled boot image for nand flash booting

 

USB Speakers + SD Card Reader/Writer + Ogg Player using MMC or SD card (Legacy VSKIT version)

This example implements USB Audio (USB Speakers) and USB Mass Storage (MMC/SD Card Reader/Writer) functions at the same time so you can listen to music while copying files to the SD Card. When detached from the USB, it will play Ogg Vorbis songs from the SD Card.

Contact VLSI Audio Solution Support for information on which pins to use for the SD card connection.

Updated: 2008-10-29

Download: mmci.c - C source (compilable with vskit 1.34 using libraries from nandfirmware)

USB Recorder : USB Speakers + Microphone + SD Card Reader/Writer + USB Audio Recorder + Microphone Recorder + OGG/WAV Player using VS1000 and SD Card (Legacy VSKIT version)

This example implements a multi-function USB Audio (USB Speakers + USB Microphone) + USB Mass Storage (MMC/SD Card Reader/Writer) device with many integrated functions. For example it is possible to record USB audio in lossless CD quality to the SD Card or use it as a voice memo recorder.

Compiles with vskit 1.34 with new libraries. Source code : Beta version available

Download: USB Recorder Presentation
Download: Schematics, BOM, Source Code

Updated: 2009-03-13

Single File Ogg Vorbis Player with Seamless Looping (Legacy VSKIT version)

A small example project that overwrites the player loop and declares a new version of PlayCurrentFile() which loops the played Ogg Vorbis file seamlessly over and over again without missing any samples. The example is for VS1000B / VS1000C and a 128KB...16MB serial SPI flash (24 bit address), but the playloop and PlayCurrentFile() function can be extracted to be used with any storage medium.

Updated: 2007-11-05
Download: loop_spi.c, source code.
Download: sine-1second-256KB-spiflash.img, eeprommable example file that loops a 1-second sine .ogg file.
Created with VS1000 Pre-programmed Player Image Generator v0.31.