Pages: [1] 2   Go Down
Author Topic: Fluxamasynth Bagpipe chanter  (Read 2426 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 44
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi

 I am very new to all of this, the only project that I sucessfully finnished was the echanter from www.echanter.com
 I was using a arduino extracore chip and a usb bub 2 to do it.

The project i would like to start on is a Fluxamasynth with arduino uno stuck in board incase i need to reprogram it
with midi intrument. maybee and board with midi in midi out. and have all 128 instruments

I done little programing with java and c++

I have connected the arduino uno to fluxamasynth with a usb to the uno

I need to know where to start

Logged

Sydney, Australia
Offline Offline
Edison Member
*
Karma: 33
Posts: 1255
Big things come in large packages
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Here's a schematic to start with http://www.fluxly.com/blog/2010/11/fluxamasynth.html
« Last Edit: January 01, 2013, 05:26:16 am by marco_c » Logged

Arduino libraries http://arduinocode.codeplex.com
Parola hardware & library http://parola.codeplex.com

Offline Offline
Newbie
*
Karma: 0
Posts: 44
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I was hopeing to find code to make this an instrument smiley-cry

will this code work?????


Const Device = CB220 "when i tried to verify this it said CONST DOES NOT NAME TYPE


    Opencom 1,31250,3,30,20

Putstr 1,240,127,127,4,1,0,127,247 'set the master volume, you can change  from 0 to 127 modifing the last 127 number value


    Putstr 1,192,1 ' program change, we set the instrument from 0 to 127 that we want ,we change the last value..!!

    Putstr 1,144,60,64 ' play notes on
    Delay 1000 ' we put a pause
    Putstr 1,128,60,64 ' turn off notes

« Last Edit: December 31, 2012, 11:38:50 pm by Trazman001 » Logged

Sydney, Australia
Offline Offline
Edison Member
*
Karma: 33
Posts: 1255
Big things come in large packages
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sorry but I understood that you were going to make an instrument using the fluxamasynth as a base for the electronics. What exactly are you trying to do?
Logged

Arduino libraries http://arduinocode.codeplex.com
Parola hardware & library http://parola.codeplex.com

Offline Offline
Newbie
*
Karma: 0
Posts: 44
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

 smiley-cry smiley-cry smiley-cry
I need to get the programing code right to make an midi bag pipe with all the 127 or 128 instruments.
I might add a board for midi in and midi out
Logged

Manchester (England England)
Offline Offline
Brattain Member
*****
Karma: 597
Posts: 33328
Solder is electric glue
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

You have two things to do.
1) Translate input switches into MIDI note messages.
2) Have extra switches that you translate into MIDI change voice commands.

Until you have worked out how this is going to happen then there is no need to worry about the software which is rather trivial.

As an example of how trivial it is see the code in this project:-
http://www.thebox.myzen.co.uk/Hardware/Pendulum.html
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 44
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

 smiley-cry smiley-cry smiley-cry smiley-cry smiley-cry smiley-cry smiley-cry smiley-cry smiley-cry smiley-cry smiley-cry
c++ c++ c++ this is the programing code i need. i have no problem with keys. i am using touch senitive controls like wire to thumb tacks.
i did this with the echanter project from www.echanter.com
Logged

Manchester (England England)
Offline Offline
Brattain Member
*****
Karma: 597
Posts: 33328
Solder is electric glue
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Stop crying and read the code in that web page, it shows you how to convert a contact closure into a MIDI note on / command and voice change.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 44
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I  got it, the board is already programed as a synth but i must add librarys. or the board needs programing as a synth with keys.
noob here! smiley-razz grumby mike that page you sent me looked like just schematics. I didn't learn any thing on programing.
« Last Edit: January 02, 2013, 10:09:09 pm by Trazman001 » Logged

Sydney, Australia
Offline Offline
Edison Member
*
Karma: 33
Posts: 1255
Big things come in large packages
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

At the bottom of Mike's design section is a link to a zip file for the code that drives his pendulum thing. I assume that is what he means about the code. Easy to miss.
Logged

Arduino libraries http://arduinocode.codeplex.com
Parola hardware & library http://parola.codeplex.com

Manchester (England England)
Offline Offline
Brattain Member
*****
Karma: 597
Posts: 33328
Solder is electric glue
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
but i must add librarys.
No you must not. Librarys are not the answer to everything, they stop you from learning what is happening. In this case it is useless looking for a library because I doubt if anyonrpe has actually done this before.
This project sounds too complex for your current state of knowlage, do a bit of learning first.
Logged

Sydney, Australia
Offline Offline
Edison Member
*
Karma: 33
Posts: 1255
Big things come in large packages
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

There are about 3 things that I think you need to be able to do here
1. Read the on or off state of a button
2. Be able to send a message through the serial port (or instruct the fluxamasynth to do something)
3. Understand what midi instrument you are trying to use as a voice for the midi stream.

Can you do the above?  If you you have all the elements you need to carry out this project.

What libraries do you think that you need and why?
Logged

Arduino libraries http://arduinocode.codeplex.com
Parola hardware & library http://parola.codeplex.com

Offline Offline
Newbie
*
Karma: 0
Posts: 44
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

//
// 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;                     smiley-razz smiley-razz :Pthis says fluxamasynth does not name type smiley-razz smiley-razz smiley-razz smiley-razz smiley-razz
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)*smiley-cool;
      }
      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)*smiley-cool;
      }
      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)*smiley-cool;
      }
      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;
  }
}
Logged

Sydney, Australia
Offline Offline
Edison Member
*
Karma: 33
Posts: 1255
Big things come in large packages
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

The code you have posted runs the fluxamsynth and you clearly have a library that will control that device, including examples of how to turn notes on and off and change performance parameters.

How you implement the interface to your instrument switches is really a matter of how your instrument works and what you are trying to achieve in the way of performance. Assuming that you have implemented the echanter according to the web site instructions, you have the inputs necessary to do what you need.

I have to say that I am still confused as to what you really need from the forum.
Logged

Arduino libraries http://arduinocode.codeplex.com
Parola hardware & library http://parola.codeplex.com

Offline Offline
Newbie
*
Karma: 0
Posts: 44
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

i need to know how to add values to the library to finnish it.
 


if i can't program it to do all the things i want,  i just need to hear midi notes from the damn thing.
« Last Edit: January 03, 2013, 07:18:54 pm by Trazman001 » Logged

Pages: [1] 2   Go Up
Jump to: