dsSynth Documentation 0.2v

ROM

Source Code

additions to verison 0.2

Sorry for the delay I have been working on two master theses over the last few months. Needless to say I have been busy-Evan

New Feature

cc- midi control number

  1. fine tune control- cc#6
  2. loop start control-cc#4
  3. loop end contro1-cc#5
  4. move loop across the wavform-cc#7
I also fixed some bugs and cleaned up the code

What is the dsSynth?

The dsSynth will let you play the Nintendo DS like you would with any hardware synthesizer/sampler. The software allows the user to draw in a wave form on the touch screen, use one of the embedded sounds, or load one of their own samples off of their flash memory card. The dsSynth is designed to be used with an external sequencer, keyboard, etc., which will be in control of all the 16 channels of audio on DS by sending MIDI data to the NDS. The way that the MIDI is sent is by using the DSMI DS Music Interface. The protocol is stable and fast from all the testing that I have done. The MIDI data is able to control pitch and volume (note data) along with other elements of the sound.

What do you need to get and How to set it up?

The first thing you will need is a Nintendo DS! Second, you will need a flash card for your Nintendo DS. You can find information about flash cards at Wikipedia Nds HomeBrew Entry.

Where to purchase A NDS Flashcard?

That is information that you will need to find for yourself because, I don't want to be responsible for problems if I recommend a seller.

Wireless Midi Connection

The next thing you will need is a wireless internet card on your computer that will be running your sequencing software. Then you need to download the DSMI DS Music Interface for your operating system. How to setup your WIFI connection is explained hereDSMI DS Music Interface. I have not yet been able to get this working with an Intel-based Mac running OS X 10.4. I have tried to recompile the source on my MacBook. That failed due to a missing PNG extension in my OS X build. So, for the moment I have it working under my Windows XP partition on my MacBook, using an external wireless card. That is about all the information that I can give you about this at the moment.

Note about testing the WIFI

The best way to go about testing your NDS with WIFI connections is use the Pulse DS application on the DSMI’s website. This will allow you to test if the notes being sent from your computer are reaching the NDS. After you get your NDS working with the MIDI WIFI connection you can start using the dsSynth.

dsSynth design

The dsSynth has three different sound-file types: wavetables, GBFS and FAT Files. These wave types are played back at 8 bit 22000 Hz. The dsSynth can use all of the 16 hardware channels on the NDS for monophonic play back, with each hardware channel corresponding to that of its similar numbered MIDI channel. So, audio channel 0 is set to MIDI Channel 1, audio channel 1 to MIDI channel 2, etc. Each channel has a loop function that controls if its audio should loop. The exception to this is wavetables because they are always set to loop because of small size. The controls over these functions can be accessed through button presses on the NDS unit but, if you use the DSMI server, this will allow you to save all your channel setting. It is important to note that there is no way to save your channel setting to NDS Hardware. You will have to always use the software sequencer to keep track of channel settings. There is a way to save the wavetables to your flash card, as long as your setup supports the FAT hard drive format.

Ok so how do I change the pitch of the sample?

The way to do this is to use the DSMI server to send MIDI note data to the NDS. The channels are monophonic (single voice) so, dsSynth will change to the pitch of the most recently received MIDI note on that channel.

Sound Formats

All sounds are 8 bit and played back 22000 Hz in the raw format. The raw format is an audio data format where all the header information about the sound is removed.

WaveTables

GBFS samples are samples that have been embedded into the ROM image, meaning they can only be changed if the source code is recompiled into a new ROM. This system exists for those users that have flash cards, which do not support FAT access to use the DS to play back these sounds.

GBFS Sample

GBFS samples are samples that have been embedded into ROM image, meaning they can not be changed in anyway, unless the source code is recompiled into a new ROM. These exist for those users who just want to used samples without the hassle of putting there on .raw files onto their flash cards. They also allow the users that have flash cards which do not support FAT access to use the DS to play back these sounds.

FAT Samples

FAT files are files that can be loaded off of a flash card directly into memory. These files need to be 8 bit 22000 Hz raw files. Raw format is a sample audio data format where all the header information about the sound is removed, there by only leaving the actual sound data. Once you have your files in the right format you will need to first name the files 0.raw, 1.raw, 2.raw,…., then you will need to place them into the directory on your flash card. On load the dsSynth will load as many of the raw files has it can fit into memory.

MIDI Setup

CC# Controls ( this is for each sound channel 1-16)
  • CC#0 - changes the sample that the channel is assigned to(0-127)
  • CC#1 - if at 127 increments the sample positions for GBFS and FAT files(128-256) if at zero then you access 0-127 samples
  • CC#2 - when at 127 it saves the wavetables to the flash-card
  • CC#3 - changes between wavetable (0-42), GBFS(43-84), and FAT(85-127) in that ascending order.
  • CC#4 -sample start position this changes the start position of the sample
  • CC#5 -sample end position
  • CC#6 -fine tune control-fine tuning in cents 0-63 subtracting by cents, 64 is no cent change, 65-127 is adding cents.
  • CC#7 -moves the sample and end position (the loop) across the sample,sound files, etc.
  • CC#16 - if under 64 value the channel will not loop if greater then that the channel will set GBFS and FAT FILES to loop

Button controls on NDS hardware

The point of the controls on the NDS are, first for Wav Drawing and second for testing.

  • Left BTN + Select = turns on channel info on the top screen
  • Left BTN + Right BTN +Select =turns off channel info on the top screen
  • Left Directional = decrements sound channel (-1)
  • Right Directional= increments sound channel (+1)
  • UP Directional= Changes Sound (+1)
  • Down Directional= Changes Sound (-1)
  • Left BTN +UP Directional = Changes Sound (+20)
  • Left BTN +Down Directional = Changes Sound (-20)
  • Right BTN +UP Directional = Changes Sound (+10)
  • Right BTN +Down Directional = Changes Sound (-10)
  • X BTN= Changes Channel type(FAT/GBFS sample-files, waveTables)
  • B BTN= Plays Channel Play Back(Note ON)
  • A BTN= Stops Channel Play Back(Note OFF)
  • Y BTN = turns off and on/off sample loops for FAT and GBFS sample files. wavetables are always set to be looping because of there size. Each Channel has it's own Loop on/off control not, each sample.
If you are on a wavetable channel you can draw something on the touch screen.

Things to be added

Next revision (v2)

Sample length control start and end state

This will be easily implemented into the CC# controls but will be a bit harder on the touch screen. So, the CC Midi will be implemented in the next version.

Fine Tuning Sample control
Fixing the Sound Channels so they match the midi channels they are using

Possible for v3 of Beat

Microphone recording

There is also a possibility that I can design the microphone to be quasi realtime effects processor. This depends on how well the sound mixer works.

Possible Future ADD-ONS

A Sound Channel mixer

This would allow the possibility for effects, polyphonic notes, etc. The downside of this will be a very long development time. I also wonder if this is even possible because I have read that people have tried but, I have never seen a completed engine. So, it might be really hard.

Update 3/16/2008

since korg is going to release their own ds synth thing. I am thinking of taking this project in another direction.. maybe I am almost finished with v2 of the dsSynth. So I will decide then.

Update 2/26/2008

I'm looking at the source code for stella(atari emulator of nds) and it looks like they might be using a sound mixer. I'm going to spend sometime looking at this to see what I can use.

Update 3/4/2008

Yes they do have a sound mixer! I will be trying to implement it in version 3 or version 4 of the beat so that will be sometime in the next few months.

Live Sequencer on NDS

This would allow you to record sequences that you play in on the touchscreen. I was thinking maybe a MPC like interface with real time quantizing.

sending sample data over wifi

This would make it possible to send your transmit your sample data to the nds and then the nds would save it to your flash card . Also, this could turn the nds into a wireless effect unit(depending on the soundMixer)

 
info.txt · Last modified: 2008/06/24 12:59 by evanmorris
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki