MUFF WIGGLER Forum Index
 FAQ & Terms of UseFAQ & Terms Of Use   Wiggler RadioMW Radio   Muff Wiggler TwitterTwitter   Support the site @ PatreonPatreon 
 SearchSearch   RegisterSign up   Log inLog in 
WIGGLING 'LITE' IN GUEST MODE

nw2s::b - Arduino based algorithmic controller
MUFF WIGGLER Forum Index -> nw2s Goto page 1, 2, 3, 4, 5, 6, 7, 8  Next [all]
Author nw2s::b - Arduino based algorithmic controller
scottwilson
UPDATE: Units are starting to ship! I'm in the process of emailing everyone. The only thing slowing things down are all the cables I have to make! I'll never underestimate the work required for the board interconnects ever again! Anyway, if you haven't heard from me, you should by the end of the week.

-----------------------------

April 3 - The final components are all on their way! The switches shipped on April 1st and I expect to have them early next week. I will be finishing up the builds and the kits in the next week or two and will be reaching out to you all.

Thanks so much for your support and patience!

s

-------------------------------------------


Panels are in. Beautiful work Wes!



Last minute orders this weekend, guys. Sunday night, I place the last of the electro-mechanical parts orders!

UPDATE 1/13

Nothing groundbreaking to report this week. Heads down getting the PCB updated for the final printing, but also taking care of some deadlines for the dayjob.

Just wanted to show another demo - this time a cv controlled sequencer. The position within the sequence is controlled by CV along with some Turing Machine accompaniment.

http://nw2s.net/cv-controlled-sequencer/

Three more work weeks available for pre ordering kits or built units.

http://nw2s.net/order/



---------------------------------------

UPDATE 1/10

Panels have been ordered! Should get them in a few weeks, but they are one of the longer turnaround items, so wanted to get the order in as soon as possible.

This is a little bit bigger news: I was about to put in an order for the PCBs as well, but something you had all said started to get me thinking. Not having bipolar inputs (-5 to +10 operation) was starting to bother me.

So, I rebuilt the input and output circuits to be bipolar! Officially here's the deal:

Input supports -5 to +5 when scaled at 100%. When the input is scaled using the potentiometer, the input range is increased even beyond -10 to +10, but lets just leave it at that as a practical limit. (Don't plug it in to your mains, please)

Output supports -5 to +5 with the default output configuration. Using only software with the stock hardware, the outputs may be configured to output -8V to +8V, but to get beyond the op amp's limitation, you'll need a $40 upgrade (16 channels worth of $10 quad rail to rail op amps) and then you can extend the output to -10V to +10V. (In other words, that's $40 for that last 2V - your call as to whether or not that's important to you.)

Woohoo. I've updated the circuit. I'll have it completely tested by the end of the weekend and will then order some PCBs.

There are enough pre-orders to where I feel comfortable going ahead purchasing some of the components however, we're still below the 30 target, so please help me out with a preorder if you are interested. Think of it as a kickstarter, but where you'll actually get your shit at the end! :P

Thanks,

Scott

----------------------------------

UPDATE 1/06

Preorders will be open until January 31! http://nw2s.net/order/

Thanks for the orders so far guys. Help me make this thing happen and get in on the pre order!

Here's a new demo of an emulation of a Turing Machine I've put together to show something using a few more outputs all at once, perhaps with a little context around something you're more familiar with.

http://nw2s.net/a-turing-machine-adaptation/



Regards,

Scott


----------------
Here's a quick video I did last night using a probability-based sequencer and variable clock tempo. Just wired up to my LDB-1e. The entire video is made with one 4/4 measure's worth of 16th note probabilities.

I'll upload a tutorial explaining the code a little later today if anyone is interested.



Again, pre-ordering info is available at

http://nw2s.net/about/
http://nw2s.net/order/

Regards,

Scott


--------------------


The nw2s::b is an open, Arduino-based modular synthesis development platform for the Eurorack format with 55 independent interface points including CV and digital input and output jacks, knobs, buttons, and even audio. Yes, this module will allow you to emulate almost any existing sequencer, LFO, envelope generator, arpeggiator, quantizer, control voltage processor, hybrid oscillator, or other insane source of uncertainty.

More importantly, it will allow you to build nearly anything you can imagine.

The platform itself is a combination of hardware and software. The software provides a framework which allows you to configure the behavior of the module in a declarative syntax that should be relatively easy to pick up even for those with minimal programming experience.

The framework can easily be extended to provide a consistent development experience or it may be bypassed completely for access to the raw hardware.

Expansion possibilities are provided through the standard Arduino expansion ports which have been exposed via pin headers including I2C, SPI, GPIO, USB, and UART. Additionally, serial communication with a host can be established over Bluetooth.

Interface

Here's a look at the interface which was designed by Wes (Grayscale):



# Beat Clock
Displays the first clock's state. It shows four groups of four beats, but will support any number of major and minor divisions.

# CV Input Jacks
These fully buffered inputs accept 0-5V signals. When a jack is plugged in, the signal is attenuated by the potentiometer

# Input Potentiometers
When there is no jack inserted, these act as 0-5V faders on the 12 inputs. When a jack is plugged in, then it switches to an attenuator for the input signal.

# Digital Input Jacks
Accepts either gate or trigger signals from external sources connected to the ON position of the digital input switch. Interrupts are available on each of the inputs.

# Digital Input Switches
These ON-OFF-MOMENTARY switches are used to provide digital inputs to the micro controller. When in the center OFF position, the input is low. When in the ON position, the input will be HIGH if no jack is connected, and it will be the same as the input signal if a jack is plugged in. The momentary position will always be HIGH whether there is a jack or not.

# Digital Outputs
These outputs provide 0-5V signals as either gate or triggers, depending on how they are set up in code.

# Analog Outputs
These CV outputs operate from 0 to 5V as well and are generally suited for CV and envelope generation. They are DC coupled, latched, 12-bit DACs with a gentle low-pass filter applied to stabilize and smooth out the output signal. The LEDs are PWM controlled mirrors of the outputs where the brightness indicates the output level.

# DAC Outputs
These are AC coupled, bipolar outputs that use the in-built Arduino Due DACs. Their gain is fully adjustable from 0 to infinity via a 25-turn PCB-mounted trimmer to match your intended use of these outputs. They include a 3dB/octave 10kHz low-pass filter on the output buffer.

# Noise Output
This output is a bipolar, AC coupled representation of the on-board noise circuit that is fed into one of the Arduino's digital pins. It also features adjustable gain to match your intended use for this circuit. From the Arduino's perspective, a copy of the signal is routed to a GPIO pin where it provides a true source of entropy that otherwise does not exist on these tiny microcontrollers.

# Reset
This is a recessed momentary switch that allows you to reboot your 'b from the front panel.

# Linked
This LED indicates that a host is connected to the device over Bluetooth. All of the same functions are available as if the device were connected over USB through a virtual Bluetooth TTY. If you do not have Bluetooth and you want to save $15, please let me know when you order and I'll refund that amount. USB connectivity is provided behind the panel and can be used as long as you have a small place to pass the USB cable through.

# Read
This LED indicates SD card activity (technically reads and writes).

Ordering
Pre-ordering is now open! In order to make sure as many people can get their hands on this, I'm offering special prices and a range of kits that will only be available during the pre-order period. How long will the pre-order period last? It's hard to say, but I'll need 30-50 sales to pull the trigger on manufacturing the boards and panels, so hurry up and get in line!

# Fully Assembled and Tested
The initial run of fully assembled, tested, and tuned modules will be limited to 30 units with a deposit of $200 and the balance of $450 due prior to delivery of the assembled unit. Order of delivery will be first-in-first-out. I'm offering the fully built modules at a steeper discount than the kits as I want to ensure the first wave of users are inclined to have it built and tested for you unless you are very confident in your abilities.



# Full Kit
Full kits will include everything required to build the 'b yourself. All of the components that require soldering are through-hole. There are three smaller boards included which contain the required SMT devices preassembled.



# Electro-mechanical Kit
This kit includes the panel and both PCBs, but does not include any of the components besides those electromechanical components that are generally non-standardized and are required for certain form-factor. Choose this option if you wish to customize your 'b further, but want to make sure you have all of the pots, switches, and jacks out of the box.



# Panel and PCB only
If you want to make sure you get a panel and PCB while they are available, I'm offering just the front panel and both printed circuit boards as an option.


# Note
Kits and Panel/PCB sets will be shipped as soon as the parts arrive. I will communicate the lead time as soon as is known, but I expect the area of 4-6 weeks after cutoff for some of the items to come from the manufacturer like the switches and pots.


Software

Once you have your 'b, you'll be able to get started right away as there are a number of pre-written configurations you'll be able to customize by tempo, key, and other parameters.

If you're ready to start building instruments from scratch, here are a few of the building blocks that are in place currently. They should look familiar and probably do about what you'd expect them to...

* FixedClock
* VariableClock
* SlaveClock
* RandomTempoClock
* RandomDropoutClock
* Envelope
* ADSR
* Gate
* Key
* Looper
* ClockedLooper
* NoteSequencer
* RandomNoteSequencer
* RandomTimeSequencer
* CVNoteSequencer
* CVSequencer
* MorphingNoteSequencer
* CVSequencer
* LinearSlew
* DecaySlew
* Trigger

I've taken a break from the software work for a while to get the hardware finished, but now that is done, I'll be adding more features to the software list.

My immediate to-do list includes the following:

* Clocks with swing
* Some automata algorithms
* Some Euclidean algorithms
* Wavetable-based LFO
* Wavetable-based oscillators
* More noise emulations
* Granular sample playback
* Sample streaming audio from SDcard
* ...and so on.

You can help by contributing code, submitting bugs, or even just requesting features. The github project is actively managed and gives you the ability to create tickets and comment on existing ones.
Paranormal Patroler
Huge!
elektrokick
woah woah

the possibilities! great work!
trotz
already pre-ordered!
limpmeat
This looks awesome
kimu
isn't better to accept and to output 0-10V or bipolar -5 +5 V ?
SamUK
Yikes.

Some questions if I may?

Can you (easily) do 1v/oct on the analog inputs and outputs?

Are the analog inputs normalled to 5V?

What's the maximum scanning rate on the inputs?

Are the outputs protected against connecting an input to them?

How do you upload programs to the device? USB cable? Bluetooth?

Is the Due a separate daughter board?
jnlkrt
kimu wrote:
isn't better to accept and to output 0-10V or bipolar -5 +5 V ?


was wondering the same, possibly a technical restriction?
scottwilson
> Can you (easily) do 1v/oct on the analog inputs and outputs?

Yes. The DACs are 12-bit (max value 4096), so if you assign value 4000 to be 5V, then you get an even 4 octave range from 0 = 0V, 800 = 1V, 1600 = 2V, 2400 = 3V, 3200 = 4V, 4000 = 5V.

Each output is individually tunable with a 25-turn trimmer, so you can adjust each to be within a few mV (<1%) across the scale.

> Are the analog inputs normalled to 5V?

Yes, the analog inputs are wired such that when no jack is plugged in, the potentiometers are hooked directly to 5V.

The digital inputs are similar. They are normalled and wired to the ON position while the momentary position is permanently wired to 5V.

> What's the maximum scanning rate on the inputs?

That's a good question. It's not something I've tested. Obviously, if you wanted to spend the CPU cycles, you could read the input as often as you like. What's the bandwidth of the input circuit? That's a different question and something I'd have to test, but in theory, there's nothing preventing it from operating well above audio frequencies.

> Are the outputs protected against connecting an input to them?

The outputs are TL074 drivers. They are reportedly very robust and should even survive being shorted for an indeterminate amount of time, but if you manage to destroy one, they are socketed.

> How do you upload programs to the device? USB cable? Bluetooth?

For now, Bluetooth is the primary interface. USB is available, but only behind the panel. I'm less than impressed with the robustness of most of the PCB-mount USB ports, plus I didn't need any thing else on the front panel!

> Is the Due a separate daughter board?

Yes, there are a few separate boards. The big ones are the panel board and the IO board, then there's the Due, the SD card reader, and a PWM LED driver for the analog LEDs. All together, it's about 2" deep, but I'm working on optimizing the board interconnects right now to make sure it's as shallow as it can be.

> isn't better to accept and to output 0-10V or bipolar -5 +5 V ?

**EDIT** 0-10V operation should be a software configurable option per-channel with the DAC I'm using. I need to confirm and will update the code to support this as a feature. **/EDIT**


-5 to +5 is not an easy mod as it requires an offset value which isn't available in the circuit anywhere. -5 to +10 would be ideal, but then you get into a resolution issue, and with 12 bits, I felt it would be better to focus on a 0-5V range with a resolution that was high enough to do the job well.

Hope that help. Thanks for the interest. Please ask away.

Regards,

Scott
akrylik
What 12-bit DAC are you using for the Analog Outs? Is it possible to drop in a pin-compatible 16-bit DAC if we wanted to?

Also, if there was an extra I2C port this could be an excellent companion to the Aleph.

Nice work! thumbs up
SamUK
Well, those answers all seem rather fabulous.

Some follow ups...

Is a Due included in the price for the pre-built version?

Do you know if OSX contains all the necessary drivers for serial bluetooth? I'm guessing it's a standardised thing?

<nerd>I've been looking over the library code, I didn't realise the Due compiler stack included the STL, very useful. Is there a particular reason you've gone with pointers in your API rather than RAII?</nerd>
scottwilson
Regarding operating at 0-10V:

I apologize for not thinking of this earlier, as I've been working so hard to finish the hardware side of things for so long, some of the details of the software from months ago have escaped me.

The DAC I'm using has a programmable output amp. The built-in amp can operate at a gain of either 1 or 2. My output circuit configured to output 0-5V when the internal gain is set to 1.

This means that in theory, you can configure the output to have a gain of 2 and viola, you have a software configurable per-channel output of either 0-5 or 0-10. I'll just have to make sure that works in practice this evening.

The limiting factor would be only at the upper end of the scale where the TL074 is operating at +12/-12 and might not reliably get to within 2V of the rail.

I'll just have to update the code to add a boolean when you set up an output channel. I'd also want it to automatically adjust the note mapping as well - per output so your code doesn't have to worry about the translation.


Regarding 16 bit DACs:

It's probably not going to be easy to find a drop-in replacement unless Microchip updates this line with a 16bit version.

It's the MCP4822 - a dual output SPI DAC and the highest resolution available in that series.

There are similar, but not pin compatible 16bit interfaces available. All that I've seen are SMT, so the most likely option would be to build a DIP breakout board from SMT devices in whatever configuration makes sense... for CV, though, 12 bit is great.


Regarding the I2C bus:

I2C is a bus and exposed via pin headers. I'm using one available device for the PWM controller for the analog LEDs. The PWM board has an input and output header, so you can continue chaining if you like.


-s
scottwilson
> Is a Due included in the price for the pre-built version?

Yes

> Do you know if OSX contains all the necessary drivers for serial bluetooth?

No real magic with the BT, I'm just using a pre-built board from Adafruit. http://www.adafruit.com/products/1588 - They have quite a bit of documentation available including pairing and OS X configuration.

Quote:

<nerd>I've been looking over the library code, I didn't realise the Due compiler stack included the STL, very useful. Is there a particular reason you've gone with pointers in your API rather than RAII?</nerd>


Yes, I was very happy to see this too, as getting the STL running on the Ardcore is a total pain. Regarding RAII, I haven't had the need for any full object lifecycle management yet, especially outside the framework.

The consuming code is almost all declarative definition (which I'd like to move to config files eventually), and the internal code never really deallocates anything either... Just the nature of the work it's doing I guess.

-s
SamUK
scottwilson wrote:
Yes, I was very happy to see this too, as getting the STL running on the Ardcore is a total pain. Regarding RAII, I haven't had the need for any full object lifecycle management yet, especially outside the framework.

The consuming code is almost all declarative definition (which I'd like to move to config files eventually), and the internal code never really deallocates anything either... Just the nature of the work it's doing I guess.

-s

It's been a while since I've done any Arduino coding, it was the first C++ I ever did and I look back at it now and I gasp a little. But I seem to remember the compiler calculating how much memory you were using for stack allocated variables, and then warning you if it was too much. Might be a few points in favour of using the stack over the heap.

(have just emailed you about shipping too)
sempervirent
What a beast. Nice to see it coming together.

It's on ModularGrid now:
http://www.modulargrid.net/e/other-unknown-nw2s-b

There are some larger pics in the DIY thread too:
https://www.muffwiggler.com/forum/viewtopic.php?p=1395378#1395378



rasseru
ooooh. is there a good community of people making cv-based programs for arduino or is right on the bleeding edge?


im no programmer, can barely use max/msp, but im very interested in this if theres good support for it!


edit* ahh ardcore is arduino as well.
kimu
scottwilson wrote:


The DAC I'm using has a programmable output amp. The built-in amp can operate at a gain of either 1 or 2. My output circuit configured to output 0-5V when the internal gain is set to 1.

This means that in theory, you can configure the output to have a gain of 2 and viola, you have a software configurable per-channel output of either 0-5 or 0-10. I'll just have to make sure that works in practice this evening.


that's nice, but in case the input signal is bipolar o in the 0-10V range (not so uncommon in euro format), what is the expected behavior?
jbartee
Welp, this is pretty much incredible. Deserves to be a huge deal. Wishing you guys insane success!
logicgate
Very interested in this project, I've been taking the coursera's "programming for musicians" course using ChucK, and became very fascinated with it. If programming this thing is as easy as using ChucK to make some tunes, I know where my next paycheck is going.

I would like to see demos of it in action first, though.

Cheers
sempervirent
rasseru wrote:
edit* ahh ardcore is arduino as well.

Exactly... in theory, existing Ardcore sketches will run on the nw2s::b just by changing the names of the outputs.

Darwin Grosse (the inventor of the Ardcore) maintains a library of sketches on Github, some useful stuff there already:
https://github.com/darwingrosse/ArdCore-Code/tree/master/20%20Objects
sempervirent
jbartee wrote:
Welp, this is pretty much incredible. Deserves to be a huge deal. Wishing you guys insane success!

Just to be clear, this is Scott's project entirely. I helped with panel and interface design but don't have a stake otherwise (apart from being excited to start programming one).
FetidEye
wow.. what a great project!!
scottwilson
Thanks for the kind words. And Sempervirent is being nice. He was a great help above just helping out with the panel design, acting as a sounding board as I worked through some of my issues, and general cheering on throughout the process.

@SamUK re: shipping

I'll do international shipping by your carrier of choice (as long as it's trackable) and just invoice it separately. Rather than come up with a one size fits all approach to international shipping, I decided to handle case-by-case for now.

And to the point of memory allocation. Yes, the heap has its place, as not everything can be statically allocated, but you have to be careful. On these things, when you run out of memory, there's really no recovery. You are _writing_ the operating system.


@rasseru re: code library

Yes, the Ardcore patches will work with some slight tweaking to the output routines. Note to self: That would be a good tutorial topic. The Ardcore sketches, however are generally monolithic, doing one thing with either the analog out or the expander digital outputs. A little spaghetti is fine in those cases, and is generally more performant.

With 34 outputs, however, it helps to have some more structure around the code. With the framework, I've tried to set things up as cleanly as possible, encapsulating as much of the crappy crap from the casual observer, making it seem easier to get going.

Take a look at the two tutorials I have up so far to see if you think it's a level of coding you feel comfortable with:

http://nw2s.net/tutorial-clocks/
http://nw2s.net/tutorial-sequences/

From time to time, I also make sure my code runs to some degree on the Ardcore, but as my devices are getting more complicated and requiring more outputs, that gets a little tougher.

@logicgate re: code and samples

There's only a couple of samples available at the moment - one is demonstrating using the in-built noise source as entropy, and the other is demonstrating the audio outputs, playing back samples.

http://nw2s.net/second-hardware-prototype/
http://nw2s.net/first-hardware-prototype/

More to come soon as I get a few more algorithms into the codebase.


As to the deposit: Someone asked if they were refundable. They will be refunded if I don't get enough interest to pull the trigger on a first run, but I don't expect that to be a problem. Knock on wood. (ahem - it's only $200 to get in line - The sooner I get to 30, the sooner we'll all be happy!)


-s
windspirit
This thing looks awesome. I don't have the money for it now but would totally buy on in the future.

Is there a way to have more than one patch that can be selected to change the function without needing to reflash the chip or does that have to be implemented in the code?
lintfresh
This looks amazing Scott. Good work!!

Definitely interested.
MUFF WIGGLER Forum Index -> nw2s Goto page 1, 2, 3, 4, 5, 6, 7, 8  Next [all]
Page 1 of 8
Powered by phpBB © phpBB Group