The Xylobox Wavetable Synthesizer (hardware + patches)


#14

Hello @matthewcieplak
Great work here, thank you for sharing,
I'm trying to use it as a 3 note polyphonic synth. I've deleted the FX and turned both filters mono, as you mentioned earlier to @floodcomics.
Still got 68% of cpu usage at poly 2.
What else you think I can get off without compromising the essence of the synth, in order to lower this cpu value?
Thank you again!


#15

Hello @pandeirada.j
3 voices will be a challenge! I think you may have to choose a few controls and simplify them. For instance you could share the same envelope for filter and amplifier (and add a switch for env/gate for volume like a Juno 60). Or you could pare down the filter modes (the vowel filter is the most CPU-expensive component). With clever routing, you could rebuild the vowel filter to enable independent use of the the lp m and hp m contained within, and then lose the svf object in use now. IMHO the svf object sounds pretty different than lp m, but I know little about filter design, and that could be my ears deceiving me.

Another thing to try would be swapping the phasor objects with saw cheap objects ā€“ not sure if the sound will be affected significantly since that signal isn't not actually being output and the table object does linear interpolation.


#16

each time I switch sample with this patch, it makes a high frequency glitch sound, while I only hear a short click on the video when switching samples.
I'm using samples of 1024samples (SR 48000), might that be the problem? The SDcard is really fast (one of the fastest tested), so that shouldn't be the problem..

I made a wavetable oscillator myself yesterday which live-records it's tables from wavefiles that I've recorded with a self-made spectral oscillator in synthedit (dedicated to a single rootnote, adding and changing partials, harmonics and their volume ratio's for each cycle). This way I can eliminate the table-loading process and the glitch/click.

So it uses 5-minute long wavefiles, selects a play-start position and just plays a tiny bit while recording it to a table.
This way, the click is totally avoided and you could even morph from one audio file to another without any clicking!

I had a testrun testerdat (that should be yesterday, but it just sounds funny, so I keep it haha), randomly selecting between 7 5-minute-long wavefiles, recording from a certain position in the wavefile, and then playing the recorded wavetable (4096 samples) from a certain position and certain width to adjust colour and overtones. Works like a charm! :stuck_out_tongue:


#17

@SirSickSik

The bigger the tables, the longer the bliiiiip.

Yeah, I think he could just update the 1 cycle wavetable patch to a multi cycle wavetable patch. Like a 64 waves wavetable and just change beween the 64 waves in the same file. Then there is no blib.


#18

Care to share how you got the LED display running? Can't seem to see where in the master patch you've got that wired or how it's controlled, and would love to build something similar..


#19

Sure, I discussed that a bit in a previous thread:

The display/routing logic for the current patch is more complicated, so I'd start with the patch in that thread. But here's the current version I'm using for hardware input management (it muxes the display logic and a/d chip management into one script so it's kind of messy):
xylobox_control.axs (32.0 KB)

Basically you decode a number into digits, then map those digits against your "truth table" for the display (e.g. a 0 has these segments lit up, a 1 has these, etc), depending on how your display is wired. The wiring on my board is for convenience rather than standards compliance so my truth table is highly nonstandard, but you can find some more common ones online. Then you take the individual bits from that table and use it to set the value of each output on the display driver (or multiplexer or io expander or some other kind of multichannel output chip) over the SPI output pins (serial peripheral interface I think). You could also use individual pins from axoloti for each segment but that will eat them up pretty quickly.


#20

I'm putting together some more patches for this controller and want to make sure I can remember what all the knobs do, so I put together a little template I can use for charts. Here's the layout for the wavetable setup in case anyone is interested!

May try to go down to the print shop and get a transparency made at the right size so I can throw it on when I'm synthesizing. May be handy several years from now...


#21

Wow nice patch! And nice case also!
I'm playing a bit with the patch and trying to control it with midi CC but can't seem to find a way to control the wave-selector by midi. Maybe it's because i'm just doing my first steps with the axoliti :wink: Any ideas?


#22

Thanks! I think the Midi CC outputs a float value, whereas the wave selector requires an integer. Try using conv/i and disp/i objects to see what you get out. You may also need bipolar2unipolar if the cc values come in as bipolar (-64 to 64 instead of 0 to 127).


#23

Thanks for you're insights, i'll try that (when i have some time).


#24

Hi very cool synth. Maybe I missed something, but how you managed to connect 24 potentiometers?


#25

My control board also functions as an input expansion board. It has 2 MCP3008 analog-to-digital chips that I read in over SPI. Those each have 8 inputs, plus 8 more on the axoloti board = 24.

Here's a thread about interfacing the MCP3208 to axoloti:
https://sebiik.github.io/community.axoloti.com.backup/t/gpio-i-o-example-adc-mcp3208-spi/


#26

thank you matthewcieplak. maybe you plan to share the whole wireing diagram?


#27

Hi @gagarin and @dyneq I was able to finish up a very rough schematic for the control board and other inputs in fritzing. Please excuse the wiring, I'm not familiar with the part editing so had to use the layouts I could find. The big chip is indeed the MCP23S17 (not the MCP23017 as on the graphic labeled).

Anyway, the main trick consists in sharing the 3 serial lines (SCK, MOSI, and MISO) between all 3 chips, then using separate digital pins from axoloti to the NSS/CS pins of each chip to enable them. The rest is basic potentiometer wiring, some series resistors for the LEDs and seven-segment displays, and a couple switches and encoder quadrature. I may have flipped a few pins from the axoloti serial protocol, so make sure you try each piece on a breadboard before soldering anything up!

(Note: the outputs from the MCP23S17 are arranged for diagramming convenience - probably a good idea to wire them according to the standard ABCDEFG 7-segment schematic so you can use a standard truth table, although I ended up making my own by trial and error anyway)

(Edited to add some decoupling capacitors.)


#28

Thank you Matthew!!!


#29

that's beyond impressive!!! this patch is one of the reason i bought my first axoloti

but being totally totally unable to work with the welder and electronic components, do you think it can be used with a usb controller? the akai midimix has enough pots i guess...


#30

That's very cool to hear! Should be no problem using the patch with MIDI. The only thing to be aware of is that the wave selector input takes an integer value rather than a float which the midi objects use, so you may have to mess about with conv objects to get that to respond. Ultimately it may be better to add some math objects and use increment/decrement buttons instead of a selector knob.


#31

living in Canada, I enjoyed seeing your reference to BLMS... as I have been quite happy with price and especially delivery. Great build.


#32

Really Really great project and thank you for sharing! I was wondering if you could perhaps share your BOM and schematics so I know what to get if I decide to build one of those as a first DIY project.

Edit: I have been piecing together the necessary information by going through this thread and following various links taking me across the axo community. I am getting more and more enthusiastic about the possibilities of the axoloti and the brilliant stuff that people have been creating. I think I almost have all the information I need to start ordering parts for my project, which will be largely based on the Xylobox (same amount of knobs and buttons).

I have two questions about the patch that I can't seem to find an answer to but perhaps that is because I don't know exactly how to phrase them. I am posting them here because they relate to the xylobox patch and project, but @thetechnobear feel free to move it if you think they belong somewhere more general:

  1. I would like to add the possibility to store the potentiometer and button positions as loadable presets (and control them by adding save/load/cycle preset functionality to the three existing buttons). My Microgranny has this function and I find it it extremely useful. Does anyone have experience creating such a thing and @matthewcieplak do you think adding this to your master_patch.axp would be actually possible (with regards to cpu use for example)?

  2. I would also like to use this patch to manipulate incoming audio. Is there an elegant way to modify the master patch into a version that responds to incoming audio rather than MIDI? (I would like to feed it audio loops and mangle those on the fly using the knobs, not like adding an effect to the audio, but to use sound signals as a trigger much like a midi trigger). In a perfect world this would be a matter of simply swapping a few objects to change the source of the signal :slight_smile: I have to say the more time I spend visiting these pages the deeper I disappear into a rabbit hole of amazing theoretical possibilities; most of them far beyond my actual skills. So what is the harsh reality?


#33

Great to hear! Yes, the schematics are pretty barebones but you seem to have followed the major details. :slight_smile: As for a BOM, there's not that much to it!
Chips: MCP23S17, MCP3008 (x2)
3x LEDs, 3x momentary switches, 1x rotary encoder, 1x 2-digit 7 segment display
24x 10k potentiometers (or 100k), wire, and protoboard!

Honestly the case took the most time to build because I'm such a noob at construction and picked very difficult materials (plexiglass and walnut). Lately I've been getting more into building guitar pedals and started etching my own circuit boards. It might be fun to try to redesign a control board that can be put on a single-sided PCB so I can make a few to sell or allow others to build their own.

As far as the features you discuss adding, the preset stuff eluded me when last I looked into it. I know that technobear and others have been working on getting into the main software so that is a possibility. However the way my xylobox control works is to read in parameters in-real-time from the serial interface and update controls in-place, so it would have to be adjusted to respect the position of parameters set by the preset controller with some kind of takeover control (i.e. only switch to realtime control when the knob matches the preset). I also don't know how the preset storage would work, other than serializing parameters to file on the SD card.

I would probably suggest adding a couple dedicated buttons for loading and saving presets. The axo inputs are maxed-out in my design, so I'd probably add a 3rd MCP3008 and move the last 8 potentiometers to serial input as well to free up 7 more pins (8 minus the one you need one for each add'l chip). Then you could have a couple more buttons. Might also free up some object memory.

As for the realtime audio manipulation, that's easier in some ways than static wavetable management. There are a couple patchers around the forums that do the granular synthesis thing, which is basically what you're describing. However it might be a real challenge to mix this with the preset logic since you wouldn't automatically have a way of writing the audio to SD alongside the preset.

Curious to hear what you come up with! I would suggest starting small, on a breadboard, so that you can get each component working without having to debug entire systems at once. Good luck, and let me know if I can help further clarify stuff.