hello i am just trying to get a sound out of my fluxamasynth board. I have the right drivers for my computer "arduino uno r3"
the fluxamasynth is connect to the uno.
Do you have the fluxamasynth library installed in the sketches/ libraries folder?
Do you have the library included at the top of your sketch?
Also, the names are all case sensitive, so check you are using the right case.
Maybe post the code you have so we can read that, even if it is the same as what is on the web site.
//
// SoftFluxaSynthSMF.pde: Simple player for byte code files which can be
// generated from MIDI format 0 or 1 files with
// midi2fluxama.pl
//
// Copyrights:
// Copyright (C) 2012 Holger Wirtz <dcoredump@gmail.com>
//
// This program may be modified and distributed under the
// terms of the GNU General Public License v3. You should have received
// a copy of the GNU General Public License along with this
// program; if not, write to the Free Software Foundation, Inc.
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// USE THIS PROGRAM AT YOUR OWN RISK!
//
// This program code uses "Fluxamasynth_NSS.h" which ca be found at
// http://wiki.moderndevice.com/uploads/MD/Fluxamasynth.zip
//
// The code is testet with Arduino-0.22 but should be easy
// portable to Arduino-1.0.
//
// PREREQUIREMENTS
// You also need the following libraries:
// NewSoftSerial.h http://arduiniana.org/libraries/newsoftserial/
// Flash.h http://www.pjrc.com/teensy/td_libs_MsTimer2.html
// FlexiTimer2.h http://arduiniana.org/libraries/flash/
//
// See http://arduino.cc where to get the libraries and how to install them.
//
// If someone has MIDI data which sounds amazing and is licensed "free" please
// drop me the MIDI oder header file for including in this distribution.
//
#include <Fluxamasynth_NSS.h>
#include <NewSoftSerial.h> // for software serial (using pin 4)
#include <Flash.h> // needed for storing the song data in PROG_MEM
#include <FlexiTimer2.h> // for correct, interrupt based timing
#include "data.h" // this is the file with the data generated by
// midi2fluxama.pl
#define MASTER_VOL_MAX 100 // the maximum volume
Fluxamasynth synth;
unsigned int sp; // the song pointer
unsigned long tempo=500000L;
const int events=midi_data.count();
void setup()
{
synth.midiReset();
synth.setMasterVolume(MASTER_VOL_MAX);
event();
}
void loop()
{
;
}
void event()
{
unsigned long tmp_ulong=0UL;
unsigned int tmp_uint=0,bend=0,wait=0,tmp_sp=0;
byte i=0;
// save the actual song pointer
tmp_sp=sp;
if(sp<events)
{
// special handling of command 7 (delay)
if((midi_data[sp+1]&0x0f)==7)
{
// for delaying next event >255 ticks
for(i=0;i<2;i++)
{
tmp_uint=(unsigned int)midi_data[sp+i+1];
wait+=tmp_uint<<((1-i)*8);
}
sp+=4;
}
if(midi_data[tmp_sp]+wait>0)
{
// timer for the next event
FlexiTimer2::set((((float)tempo/1000)*(((float)midi_data[tmp_sp]+wait)/ppqn)),event);
FlexiTimer2::start();
}
// check the type of event
switch(midi_data[sp+1]&0x0f)
{
case 0: // NoteOn
synth.noteOn(midi_data[sp+1]>>4,midi_data[sp+2],midi_data[sp+3]);
sp+=4;
break;
case 1: // NoteOff
synth.noteOff(midi_data[sp+1]>>4,midi_data[sp+2]);
sp+=3;
break;
case 2: // Controller
synth.setChannelController(midi_data[sp+1]>>4, midi_data[sp+2],midi_data[sp+3]);
sp+=4;
break;
case 3: // PitchBend
for(i=0;i<2;i++)
{
tmp_uint=(unsigned int)midi_data[sp+i+1];
bend+=tmp_uint<<((1-i)*8);
}
synth.pitchBend(midi_data[sp+1]>>4, bend);
sp+=4;
break;
case 4: // ProgramChange
synth.programChange(0,midi_data[sp+1]>>4, midi_data[sp+2]);
sp+=3;
break;
case 5: // Aftertouch
synth.setChannelAftertouch(midi_data[sp+1]>>4, midi_data[sp+2]);
sp+=3;
break;
case 6: // Tempo
tempo=0UL;
for(i=0;i<4;i++)
{
tmp_ulong=(unsigned long)midi_data[sp+i+2];
tempo+=tmp_ulong<<((3-i)*8);
}
sp+=6;
break;
}
if(midi_data[tmp_sp]==0)
event();
}
else
{
// after the end of the song reset the Fluxamasynth
synth.midiReset();
FlexiTimer2::set(5000,event);
FlexiTimer2::start();
return;
}
}
///i just put the fluxamasynth librarys in the audio librarys folder
thanks on that tip
after adding the librarys
says "byte not declarded."
Can you please edit your post and add code tags (use the # button) around your code post, otherwise we get smiley faces and italics when the post is shown.
That look like something that would be in the the converted data file header that you called data.h. My guess is that the file is just one big array called midi_data with the data to be played out.
Data.h is the last of the header files that you are including (see your sketch). from the use of "" it should be local to where the sketch is. The guy that did the blog has a program that creates data for this sketch from a midi file. I assume that this data array is what it creates. He called his include file something different on the web site sketch.
I think that utility runs on the PC not the arduino. Maybe you can ask the guy with the blog how to use it? This is not something we here can help with unless we have done this before.
To solve the byte problem you do the same as before.
That midi comms shield will allow you to communicate with a synthesiser or software on the PC willplay a midi stream. I don't think it will help with the fuxamasynth. On the other hand you will be able to use the new shield to play midi files from the arduino using the library that I wrote (see other posts on this forum).
Are you saying i need a new shield to do this program?
I tried "mary had a little lamb" and i used uint8_t and it still didn't work.
My fluxamasynth plays a scale with a example in the arduino software.
You said you were getting a new shield. I just said that this was different from the fluxamasynth shield and can't see how it helps that to play on the fluxamasynth.
You have a fundamental problem with the shield and the example sketches you are using - you need to feed it data in a certain format that is created by the translation utility. You need to get that sorted out, pus some incompatibility because the examples are written using byte. There is no reason it should not work but you need to understand what the code is doing so you can solve the problems.
Have you looked where the data for Mary had a little lamb is to see if they are using byte there?
Byte is no longer supported by the new arduino libraries and it is now renamed to uint8_t, so you either use #define to rename, as suggested above, or rename all instances. They are the same unit of data storage, just different names.