New Open Source Synthesizer - Ronin 802

The Ronin 802 is a new breed of stand alone digital synthesizer. This re-programmable hardware module is a versatile platform for the creation of custom electronic musical instruments and sound processing units. The Ronin 802 is also a fully compatible Arduino shield, allowing access to a rich ecosystem of hardware and software tools. All of the Ronin’s hardware and software design is available as an open source project – which is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. You can contribute to optimizations and changes in the hardware and software design, including reprogramming the synthesis engine – this makes the Ronin 802 a powerful and flexible platform for experimenting with digital synthesis.

We encourage everyone on the Arduino forum to check out this new project and we look forward to hearing your thoughts on the design:

http://roninsynth.com

Thanks for reading

Jim.

Jim, congratulations of getting the Ronin 802 up an running. You have to give us a show and tell at the Newcastle Maker Space

Thx Tony :slight_smile:

Yeah we should definitely take the Ronin down to the Hackerspace, we've got a fair amount of work on at the moment, but will endeavor to get down there soon!

Hi

had a bit of trouble getting the ronin arduino library installed as I didn't realise it was an archive but now it's done I still can't get the GUI working on OSX -

I simply cannot launch the GUI file that I downloaded by clicking on it or from command line:

http://www.roninsynth.com/?page_id=104

Can anyone give me some pointers on getting it to run - as far as I know I've got all the necessary python bits installed....?

It should be a ZIP file with a structure like this:

Ronin
Ronin/Ronin.cpp
Ronin/examples
Ronin/examples/PotFace
Ronin/examples/PotFace/PotFace.pde
Ronin/examples/Ronin_GUI_Connect
Ronin/examples/Ronin_GUI_Connect/Ronin_GUI_Connect.pde
Ronin/examples/RoninSerial
Ronin/examples/RoninSerial/RoninSerial.pde
Ronin/examples/RoninMidi
Ronin/examples/RoninMidi/RoninMidi.pde
Ronin/examples/PotFaceSS
Ronin/examples/PotFaceSS/PotFaceSS.pde
Ronin/examples/RoninTest
Ronin/examples/RoninTest/RoninTest.pde
Ronin/Ronin.h
Ronin/keywords.txt

It looks like sourceforge is missing the .zip suffix. Just manually add that to the filename and it should work. I'll go in and rename it now on SF.

The GUI should also be a .zip file.

I have modified the files on SF, but it may take a little while for them to get out to the mirrors.

wow - that was quick - thanks majenko! :slight_smile:

I worked out the issue was it was a archive and now have the roninGUI app in my applications folder, but it just bounces in the dock when I run it, no GUI appears.

I've done the following:

Installed GTK+ and PyGTK using Zero-install package (though the link on the roninsynth.com site (Download PyGTK.pkg (Mac OS X Packages)) didn't work so I got it from elsewhere.)

Installed Python version 2.7.2

Installed Pyserial (installed using terminal)

Installed 'Ronin library for Arduino' (another archive that could do with being renamed .zip?)

Opened and uploaded 'Ronin_GUI_Connect' to my Arduino Uno

Tried opening roninGUI but no joy, just bounces in the dock - any ideas on troubleshooting?

Cheers!

The current OS X version of the GUI leaves a little to be desired.

What version of OS X are you using? We have so far only had Leopard to test it in, and it has worked OK in that.

There is a new version of the GUI written in C in progress at the moment - we'll be getting it compiled for OS X as soon as we can.

I'm using the current version of Lion (10.7.2), and if it's of any use to you happy to test things out :slight_smile:

If I'm honest though, I feel like it might just be incompetence on my part in the GTK+ / PyGTK / Python version 2.7.2 /Pyserial part of the install process - not something I've done before and not sure how to test the install worked...

In the meantime, are there any sketches I can upload that a) don't require the GUI b) don't require wiring up any knobs/ buttons straight away that will let me hear it make some noise?

From a terminal, can you run:

$ /path/to/roninGUI.app/Contents/MacOS/roninGUI

and paste the output here please.

For a head-less sketch, try this little one out:

#include <SPI.h>
#include <Ronin.h>

void setup()
{
  Ronin.begin(10);
  Ronin.setParameter(PARM_MOD,MOD_FM);
  Ronin.setParameter(PARM_F1,1000);
  Ronin.setParameter(PARM_F2,2784);
}

void loop()
{
  static int md=0;
  Ronin.setParameter(PARM_MODDEPTH,md);
  md++;
  if(md==1000)
    md=0;
  delay(1);
}

It should make a nice alien noise.

This is the output:

MacBook-Pro:Applications ben$ roninGUI.app/Contents/MacOS/roninGUI
-bash: roninGUI.app/Contents/MacOS/roninGUI: Permission denied

Also, that sketch you kindly posted isn't producing any noise when I upload it to the arduino, there's no errors but also no sound - could it be the jumper setting?

Try running this:

MacBook-Pro:Applications ben$ chmod 755 roninGUI.app/Contents/MacOS/roninGUI

and then clicking the Ronin icon again.

For the sketch make sure the jumper is on the D10 (top of the column) stack on the Ronin. This selects pin D10 as the slave select for the SPI communication, and is specified in Ronin.begin(10).

Jumper is in that position.

Running the chmod now makes the output as follows:

MacBook-Pro:Applications ben$ roninGUI.app/Contents/MacOS/roninGUITraceback (most recent call last):
File "/Applications/roninGUI.app/Contents/Resources/site.py", line 20, in
import os
ImportError: No module named os

(Clicking on the roninGUI app does nothing)

Hmmm... I would expect there to be an "os" module in python... I don't have access to a Lion machine at the moment to try it though :frowning:

As to why no sound - I have it running on my Ronin as we speak, but I need to confirm which version of the firmware you have on your Ronin so I can check it out with that version. I can't do that till Jim comes online. I'll get back to you on that.

What are you connecting your Ronin to for the sound output?

Yeah - I'm still concerned I've simply failed to install something python related as I said, just don't know enough about it to check...

Regarding the sketch - this is what I've done:

checked jumper position is on D10
copy & pasted your code into the arduino IDE and uploaded to arduino UNO with no errors
tried both headphones and portable speakers (with 3.5mm stereo jack input) - no sound other than a bit of v quiet hiss when the uno has power

Also, if it helps determine the firmware version, this is a Ronin I ordered a couple of days ago and arrived today

It might be I have an older version of the firmware on mine - I need to check that. I may have missed something in the sketch that is needed for the current firmware version.

Try modifying the setup() function like this:

void setup()
{
  Ronin.begin(10);
  Ronin.clearOutputs();
  Ronin.addOutput(OUT_CONSTANTPLAY);
  Ronin.setParameter(PARM_MOD,MOD_FM);
  Ronin.setParameter(PARM_F1,1000);
  Ronin.setParameter(PARM_F2,2784);
}

that did the trick, sort of - I now have sound - seems like a fairly constant tone, sine wave sounding, no modulation...

Excellent. Now you can play with the parameters to make different noises.

Ronin.setParameter(parameter,value) sets the different parameters. Parameters are:

PARM_SG1
PARM_SG2
Value between 0 and 9 to select the signal type for signal generators 1 and 2

PARM_F1
PARM_F2
Value between 0 and 32768 for the "frequency" of the two signal generators - not measured in Hz, but depends on clock speed.

PARM_MOD
Modulation type - Value is one of: MOD_ADDITION, MOD_AM, MOD_FM, MOD_SIG1, MOD_SIG2, MOD_STEREO

PARM_PWM_DUTY
PARM_PWM_FREQ
PWM duty cycle and frequency - both between 0 and 65535 - only applicable when the PWM output module is enabled.

PARM_F1Q
PARM_F2Q
Frequency quantization, between 0 and 65535 - only applicable when incrementer set to a quantizing mode.

PARM_INCREMENTER
Wave incrementer method. 0 = f1 and f2 independent. 1 = f2 is f1 plus f2's frequency. 2 and 3 are as 0 and 1 but with quantization.

PARM_VOLUME
Output volume - only when the Volume output module is enabled.

PARM_OPSG1
PARM_OPSG2
Feedback control signal generator type - between 0 and 5.

PARM_OPF1
PARM_OPF2
Feedback control signal frequencies.

PARM_BALANCE
Volume balance when balance module is loaded. Between 0 and 4095 with 2047 being center.

PARM_SSTRIGGER
PARM_SSATTACK
PARM_SSHOLD
PARM_SSDECAY
PARM_SSSUSTAIN
Single shot envelope. All between 0 and 65535 except trigger which is set to 1 to play the single shot sound - automatically resets to 0. Requires the single shot output module to be loaded.

PARM_VOICES
Number of single-shot voices.

PARM_MODDEPTH
Modulation depth - between 0 and 1000.

Output modules can be loaded with Ronin.addOutput(module).

Modules are:

OUT_PWM
Pulse-width gating of the sound.

OUT_VOLUME
Provide overall volume control.

OUT_BALANCE
Allow setting of the sound's balance.

OUT_SINGLESHOT
Operate in single-shot mode. Do not enable this and OUT_CONSTANTPLAY at the same time.

OUT_CONSTANTPLAY
Plays the sound constantly. Do not enable this and OUT_SINGLESHOT at the same time.

At least OUT_CONSTANTPLAY or OUT_SINGLESHOT must be loaded to get any sound.

I'll let you play with those for now, and tell you about programming inputs later.

majenko - you are a star! I'll have a play around with those parameters for now, already having fun with them.

Out of interest, is that parameter info you posted available elsewhere already or still a work in progress? I hadn't seen it elsewhere online...