Wednesday, 11 November 2020

Tubular Bass

Tubes are everywhere

Making a bass out of a length of exhaust pipe is tricky to imagine in detail. The compromise between fboard radius and a tube that I could hold and potentially reach the strings was a bit of inspired guesswork. I eventually settled on a 1.2m length of 50mm diameter stainless steel pipe to be the basis of this creation. It has a 1.5mm wall thickness and weighs around 4kg. 


To get an idea of how it would perform under stress (probably much better than I do 😮), a piece of 25mm x 50mm (1mm thick) 1m steel box section was tried. A couple of strings were fastened to it and it was tuned up. Under tension, the box section did not bend or warp any measurable amount, so the stainless tube is expected to shrug off the string tension easily without even breaking a sweat. 


Incorporating the tuners was the next hurdle. The tuners have to be fitted on the outside of the tube so they can be adjusted. That implies that the strings will need to be inside at that point to wrap around the peg part of the tuners. A cutout will be required for the strings to pass through, with enough finger space to allow strings to be changed. Fellow band-mates will tell you that I only change strings once every 20 years, but they exaggerate. It's probably more like 17 or 18...


Creating an opening for the strings that can be made with an angle grinder is one thing, but working out how everything will fit was seriously testing my sketching and trigonometry skills. It was time to go down the 3D CAD route just to try and visualise the thing as a whole. After a bit of mouse-clicking I chose a package called FreeCAD which uses the make-a-2D-shape-and-extrude-it concept (amongst others). After running through a tutorial I was ready to do some virtual work.



FreeCAD headstock and nut sketch


The headstock cutout developed into two matched cutouts allowing string access from above and below. The large holes are where the tuners will be fitted. I'm not modelling the tuners in 3D CAD! The tuners will need some sort of flat-curved washer system so that they can be clamped either side of the tube. 


A round aluminium disc will be mounted inside the tube by the tuner cutout. Another offset disc functioning as an adjustable nut is fastened to this and will stick out of the cutout by a few mm to support the strings. 

I then turned my attention to some dodgy 3D bridge scribbles I made earlier.  



Micky Mouse - Steamboat Willie


The bridge also requires a cutout and inspiration came from the whistles in Steamboat Willie. The strings are not wrapped around anything at the bridge end, so it can be a smaller opening.



FreeCAD bridge sketch


The bridge is also based on a set of aluminium discs. The bridge takes more string load than the nut so two static discs, followed by three other offset, er, shapes to create anchor points and a saddle area. 


What about the pickups?

The cutouts are mostly filled with aluminium and are physically positioned at the ends of the strings. Introducing a third cutout to house a pickup was considered, but would introduce an unnecessary weak point in the middle of the tube as well as making it look too conventional! Having a set of split P-bass pickups sitting in the middle of the tubular bass would give its purpose away too quickly.


Piezo pickup - to go under the bridge saddle


A small piezo pickup designed to go under an acoustic saddle is going to be used to convert strings into signals. The piezo device is around 50mm x 1mm x 3mm and is unlikely to add anything significant to the weight of the instrument 😉.

Well, that's the theory. It remains to be seen how much of this is successful...


Sunday, 19 July 2020

Goodwood or Good Wood

Last year I went to a Basschat event. We turn up at a school that's borrowed for the day and it gives a chance to exchange ideas and drool over exotica that is beyond normal means. It's much like going to a car show, where I need to see the orange Lamborghini and study it from different angles, talk about how VW is the sensible option and then buy some fluffy dice and go home.

During the 2019 Basschat meeting we had a great guest speaker (Pete Stroud) who took some time explaining why he made his own guitars, and the attention to detail that makes the difference between a good bass and a great one. He is a very unassuming and competent chap, and it was interesting to hear his reasoning for various design decisions. 

One thing that Pete was quite certain on was the influence of the wood on the sound. Although other parts like pickups also affect the sound, over the years he had noticed that whilst certain woods gave excellent tonal quality, others did not.

I have heard similar anecdotal evidence over the years and I believe that choice of wood definitely has an effect, but I'm not convinced it is the main factor to a solid body bass. Unfortunately that got me thinking - what would a bass sound like without the magic sonic benefits of wood? I couldn't quite imagine a completely non-wood instrument at the time and decided it required some further consideration.

The Design Process...


Re-thinking the basic operation of a stringed instrument, it mostly boils down to providing a structure that can support both ends of a piece of stretched string so that it can be struck and resonate at a known frequency. The structure needs to be sufficiently rigid so it does not 'suck-out' particular frequencies, which is where the wood could add its sonic flavour. After that, the rest is just adding convenience, ergonomics and a bit of window-dressing.

In a cross-sectional view of a conventional guitar neck, a D-shaped back is typically mated to a larger radius curved f-board. Both the front and back surfaces are curved. Arguably guitars are easier to play with a smaller f-board radius and seem unnatural when it is too flat. 

Orange Lamborghini Murcielago exhaust pipes


Inspiration came from daydreaming about orange Lamborghinis again. Round tubing is used for various chassis members, spaceframes and exhausts for cars and bikes as it has a good strength to weight ratio. Lengths of stainless steel pipe are readily available and could be used as a basis for a string support system. The tubing inherently offers a generous f-board radius as standard and a rounded back that should fit the hand nicely. 

Tubular Bass (not Tubular Bells!)


The downsides? All standard hardware (tuners, nut, frets, bridge & pickups) are designed to fit on a conventional guitar that is predominantly flat. Each of these items will have to be tailored to suit life on a tubular bass. This has the greatest possibility of a completely different sonic signature - it may sound awesome, or terrible, or just plain average. I need to find out if wood is good or steel is surreal!

Sunday, 17 March 2019

Jellybean Bass - Completed

The devil is in the detail




Back in April, I managed to get the five LED outputs sufficiently interleaved so that there would not be any noticeable delay between them. With the rest of the guitar mostly together, the bulk of the work left to do is now software based - ie getting the LEDs to do something fancy looking. 




I'm not really a software person, but can see the benefit of building functionality up in stages. At the lowest level I need a function that can take LED data from an array and send it to the LEDs when it is called. Above that I need functions that fill these LED data arrays with a colour value, scroll them in a given direction or place characters in them. Above that comes the fun part of putting the building blocks together in order to achieve some blobs floating around or pacman chomping through the maze.


A few pointers

I struggle to understand pointers in C. I'm sure I've used them for years, but they never fail to trip me up. Unusually, MPLAB C requires some pointer operations to be in brackets to add to my confusion.

*ptr = 27;

would normally work, but for MPLAB C, it has to be 

*(ptr) = 27;

It's fine once you know, but caused me a lot of headscratching at the start. Incrementing pointers doesn't require brackets, but when referring to the item being pointed to, it does. 


Being sympathetic

When taking LED data and writing it to the five streams of LEDs, I did not want excessive array decoding to slow the process down in case it started blurring, smearing, flickering or becoming intermittent. I decided to keep the LED data array straightfoward at the expense of wasting a little storage space. The WS2812B devices need 24 bits each (8 red, 8 green & 8 blue), but the integer variables available are 8, 16 or 32 bits. Using 24 bits per LED struck me as a bad move as it did not correspond to a standard integer of any size, and it also did not leave me any contingency space in case I discovered something vital later...

I found some info about bitfields, so I used a memory-friendly structure that fits 32 bits, with an enable bit and seven spaces for anything that might turn up along the way. The normal RGB order was swapped for BRG so that the bits could be sent to the LEDs without any reshuffling.

struct LED_DATA_STRUCT_32
{
    int   blue   :8;
    int   red    :8;
    int   green  :8;
    int          :7; // spare
    int   enable :1;
};

Another early thought that has worked well was to have foreground and background LED arrays. These are combined before passing the result to the LED update function. This layering can give a mild impression of depth or at least keep things separate when the going gets tricky. 

The visual side of the software has evolved into three sections: displaying text, animated effects and transitions. The text display was conceived first alongside the first transition - scrolling left. Now there are around twenty animated effects, ten transitions and over sixty text phrases that get trotted out. The sequence of operation now is:

text - transition - animated effect - transition - (repeat)

There are also some hidden test modes that check the LEDs, plot various ADC values and a screen saver mode that looks like tiny bubbles rising to the surface!


I've got the power

During the software development phase I often had static LED patterns. Sometimes these would be on for half an hour whilst I tried to get the ideas in my head translated into code. During this time the neck temperature would rise by approx 25 to 30 degrees Celsius and is enough to change the neck relief! 

The truss rod adjustment was carried out when the neck was at room temperature, but the compensation was too much when hot leading to a large amount of fret buzz. My working theory is that the acrylic f-board provides a certain level of additional neck stiffness, but as the temperature rises, its contribution reduces. 




To combat this effect as much as possible, the neck compensation was reduced to an acceptable minimum, but the majority of the improvement in neck stability is from LED power reduction. All the effects were adapted to use 1/2 or 1/4 power where possible, especially when more than half the LEDs are on. Fortunately the LEDs are very bright on full beans even through smoked perspex, so this also helps cut down the glare and allow standard phone cameras to take pictures without completely saturating.


Effects

Once the bluetooth link has been established the mode changes to auto so that all effects can be called up. Other modes can be set manually, again using the bluetooth comms link. 

The effects are numbered in pretty much the order they were written in and are described below.


1 - user text (entered by bluetooth link)
2 - preloaded text




Both text effects are run from the same function, the only difference being the source of the text phrase. During this stage the bluetooth comms link and message passing protocol had to be constructed as well as scrolling left and right and even defining a variable width character set. A hue function was also written to take a colour wheel value and convert to red, green and blue LED values.


3 - fret dots



Fret markers are quite a normal feature on most guitars. Some are just dots, some are more impressive blocks, ramps or crosses. The LEDs are fixed to the PCBs, but with a good choice of grid (some time ago!) and careful placement, the majority of fret marked positions line up fairly well. Once these had been identified, a variety of fret marker shapes and cycling colours are possible. 


4 - balls



Bouncing balls uses floating point variables so that the balls glide effortlessly instead of stepping from one LED to the next. Slightly reminiscent of a lava lamp, but warms up quicker!


5 - comets



Comets was an accident. It uses the same function as balls, but was supposed to only give the outer perimeter. It didn't look too bright to start with, so the deleting at its old position was removed and replaced by a gradual fade out. This allowed the circular outline to create a pleasing trail. 


6 - zig-zag



I wanted to do a scramble / defender style effect, but was still finding my way. I made a basic zig-zag terrain for an imaginary spaceship to fly through. The separate foreground / background layers were used with one zig-zag on each. They are colour cycled, scrolled and faded separately which creates a nice psychodelic feel. Hip & groovy man!


7 - pacman


The original moonbassalpha had a pacman theme. This was around 10 years ago and was my first bass build. It's still going strong :-)

With 80 LEDs across and 5 LEDs high, the 'screen' is not really the right shape for a pacman maze. On the other hand it is quite wasteful driving a whole screen when the pacman is the only bit that is important!




How many idiots does it take to paint a fence?
100! 
1 to hold the brush still, and 99 to move the fence up and down.

We've all heard this joke before, but this was a lightbulb moment for me. 'PM' is fixed at the centre and the maze moves around. PM, the ghosts and all maze features are based on 5x5 LED characters. 

To ensure that (human) eyes can track the maze movement, everything is moved one dot (height / width) at a time, in other words it takes five moves for the player to move one character sized space. This gave some tricky arithmetic when calculating relative positions of all the main players to see if PM and any of the ghosts meet.



Pacman sometimes shows the score, and sometimes doesn't. The effect looks better without the score, but with the numbers, the gameplay can be appreciated more. The game continues until PM bumps into a ghost.


8 - space journey



Space journey uses single point perspective to simulate a flight through, err, round multicoloured asteroids. Looks better from a distance, but in space that shouldn't be a problem ;-)


9 - kaleidoscope



Nice, simple and effective. Random chevrons are produced in the middle, and scrolled out to the edges. It reminds me of the shapes produced by a kaleidoscope that I had as a child.


10 - string bean 



This obscure name is really just good old fashioned 1970's sound-to-light. A feed from the pickups creates an envelope signal which is connected to an ADC input. When the strings are played, the filtered output is converted into size / colour pulses which are scrolled across the fboard. 


11 - tetris



This was another brain bender. Making blocky shapes and scrolling is ok, but working out the profile of where they might land and the best way to rotate them is not as easy as I hoped. Filling up the screen up takes a couple of minutes, so this runs for a bit, stores the info and then next time it picks up where it left off. 


12 - running man



I must have watched a cartoon when I did this! The idea is that a man walks left to right and then gets chased back by something. Currently the chaser can be other men, a pacman, a ghost, a car, a spider or a snowball increasing in size. The spider needed to move in a particularly menacing way (in my mind).


13 - barrels



I thought about the donkey kong game, but this was as far as I got. A barrel rolls down red and blue inclined planks. No gorilla though.


14 - cells




The idea of growing cells continually splitting themselves in two was the basis for this one. I did not realise, but this is known as binary fission.

The single cell splits into 2, 4, 8 and eventually 16 parts (as these all divide nicely into 80 LEDs and 32 does not). 


15 - aztec


I like the idea of weird heiroglyphic symbols put together like a sort of secret message. These symbols rotate up and down and colour cycle to make sure that nobody can crack the code. Well, I can't anyway...


16 - fruit machiine


Three wheels, each with eight different fruits on them. The wheels are triggered from different positions, run at different speeds with different friction coefficients to keep it interesting. Occasionally all three match, but there is no coin tray for the winnings yet, so I've got to be content with a moral victory only.


17 - driver


Another dabble with perspective. I used some online help for this one.
It really needs a taller screen to look more effective, but it gives drunk people something to puzzle over.


18 - scramble / defender


After the first zigzag effect, I tried again. This time it went swimmingly well. Like pacman, the main space fighter ship is more-or-less central and the terrain moves up and down whilst scrolling past. The space fighter has a laser cannon and can blast holes in the landscape! 


19 - diamonds are forever


A coloured-growing-shape-with-fade sort of pattern. Allows spectators to chill out after some of the more intense effects.


20 - streetlife


The thought here was a frogger style game - trying to cross the road without getting squashed. Again, due to the screen proportions, there wasn't any room for pavements so it is just a plan view of a dual carriageway. A bit of nous had to be used to allow vehicles to move from the slow lane to the fast lane and vice-versa without just crashing. They have to use their virtual mirrors in order to overtake and speed up! I am sure I have seen tail-gating and cutting-up too, I should have called it roadrage!


21 - fret dot halo


The fret dot effect is good, but quite static. To spice it up slightly this allows each fret dot to expand and contract at its own rate.


22 - centipede


The centipede game also needs a proper shaped screen. It wasn't going to get one, so I decided to split the game view into three sections - top, middle and bottom. The centipede worms its way from top to bottom, avoiding mushrooms. The shooter at the bottom fires indiscriminately at the centipede and the mushrooms and eventually it is all shot away. Sums up life in many ways...


23 - random squares


Does what it says on the tin. Difficult to add much more here.


24 - digger


I was determined to use the pacman 'engine' for something else. This chap is living underground, digging for diamonds and trying to avoid falling rocks. 


test modes - just for me

90 - signal envelope
91 - random noise
94 - prbs15 (15 bit PRBS x^15 + x^14 + 1)
95 - prbs9   (  9 bit PRBS  x^9 +  x^5 + 1)
97 - blank
98 - idle (when on stand)
99 - led test mode

A transistor base-emitter junction is configured in reverse breakdown and the resulting noise amplified up. This is sampled by ADC1 and is a true random generator. Unfortunately it is updated quite slowly in comparison to some functions that require hundreds of random values in an instant. To help with this, a PRBS (Pseudo Random Binary Sequence) is also used to derive seemingly random numbers. When the proper random number is sampled, it is used to reseed the PRBS generator to increase its entropy. 


But more importantly it makes dots jump around when viewed as a test signal!

Idle mode is entered automatically when the tilt switch detects that the bass is on a stand. It uses lop-sided filtering to ensure that entering idle mode takes several seconds whereas leaving it is much quicker. This avoids the effect disappearing when I hold the bass vertically (at the end of a rowdy number), yet kicks into life soon as it is picked up.


The LED test mode has already showed one LED has a problem with green, but other than that all is well. I will get round to replacing it one day...


List of transitions:

fade, sparkle dots, blank dots, sweep, scroll left, scroll right, scroll up, scroll down, monochrome fade, blur fade



All done and dusted

So far the Jellybean Bass has done 4 or 5 gigs and hasn't missed a beat. Hot plugging and unplugging does not cause any audible noises and now the neck heating is reduced, it does not change significantly during use. 

I still have plenty of code space that could be used for more effects, but will need more inspiration for further eye candy.

95% of people are just happy to be watching a band in a pub with beer in their hand and do not notice anything unusual, but the other 5% watch in total disbelief. Guitars cannot do that...can they?

Sunday, 13 January 2019

The Bass Station

Powering all these fancy LEDs is not a realistic proposition from battery power. The maximum dissipation from the neck is around 100W, but a more realistic value is around 30W as there is no intention of turning all 400 LEDs on at full power. Even so, I do not want the weight of a battery capable of providing this level of power round my neck for a few hours, so the power needs to be sent through the guitar cable.

12V is going to be sent to the guitar which is then locally converted to 5V for the LEDs. Distributing power at 12V instead of 5V reduces I2R loss and if the voltage drops by 10% due to ageing connectors etc, the local 5V is unaffected. The same trick is used to power the processors on many PC motherboards - bulk supply 12V and locally convert to 1V.

A one-cable-only solution to the guitar is important as it reduces tangling, tripping and connection errors. The downside is that changing LED patterns can cause high current swings of several amps which could contaminate the pickup signal easily.

Prevention is always better than cure, so the effect of noise sources are minimised where possible by the usual techniques of segregation, bandwidth limiting and keeping loop inductance low. In other words keep the noise-makers and noise receivers as far away from each other as is practical, reasonable filtering / decoupling and use twisted pair wiring for power connections.



The Bass Station will contain a differential receiver, power source, filtering, switching and the ability to sense the guitar being connected. Front panel LEDs show mains power, connection, guitar power and signal mute. When the guitar is plugged in, the power is applied after a delay, followed by the bass-station output signal being un-muted after a further delay.


The Bass Station is housed in a 1U high 19" rack case so there is plenty of space for the 12V 80W PSU with two 25mm cooling fans and some ducting. The circuitry is built on veroboard and controls the power to the guitar and converts the differential signal back to a standard single ended 1/4" jack socket.


An Inside Job


The space available inside the guitar is quite limited. A Jazz Bass body was purchased online and a router used to enlarge the cavity under the normal JB scratchplate. To keep noise under control the circuitry is split into two parts - pickup controls & amplifier and the LED controller section.


A typical JB has three controls and a 1/4" socket on the control plate. The plan is to keep the guitar looking quite normal, so the controls remain in the same places, but I want them to do different things. I'm not a big fan of volume - why would I ever want anything less than full beans? - so there is going to be a pickup pan control in the middle and two separate tone tilt controls. I can then dial in either pickup singly or a blend of the two. The individual tilt tone controls give warm and boomy at one end to twangy and edgy at the other. I can then have the top end from the bridge pickup blended with the thump from the neck pickup. That should give me enough variation...






The two boards were designed in one go and built together. The pickup amps are on the left hand side. On the slightly larger LED controller side, the power converter section is on the right hand side, with the SO-28 outline visible on the left ready for a PIC24EP256GP202 which will be doing all the clever stuff. This is one of the most powerful microcontrollers that is still able to be soldered in by hand (well, by me anyway). Plenty of higher spec devices are about but they are in TQFP or worse still BGA packages. I don't want to solder those!


The Missing Link


The cable linking the bass to the bass station has also undergone some careful consideration. In the end Van Damme XLR 4-way 'snake' cable was used - this is four twin screen pairs that will *just* fit into a 5-way XLR connector and provide a single screened twisted pair for the signal, leaving the other three pairs to carry the power between them. 5-way XLR connectors are rated a 7.5A. The cable is superbly flexible and not much thicker than a normal guitar lead.

In the middle of a gig, if the LEDs stop is a bit of a shame, but if the bass cannot be heard at all then it's goodnight and so long. In this sort of catastrophe, the 1/4" socket on the guitar is routed directly to the bridge pickup for a sort of limp-home mode. It will allow a normal guitar lead to be used and will carry the passive signal in case all the electrickery goes up the wall!


Powder And Paint


The usual sanding through the grades and covering in primer was carried out. With 400 RGB LEDs, a neutral colour seemed to be a good idea. I like the white JB look, but I wanted a pearlescent finish. This tends to make the paint very exclusive / expensive but also difficult to know exactly what you're getting as the light falling on the surface at different angles will give a different look.

From different websites it seems that pearlescent paint is (in simple terms) ordinary paint with sparkly flakes of mica added. Further investigation revealed that cosmetic grade mica is widely available sold in powdered form.

I hatched a crazy plan. I painted several white colour coats and let them dry for two weeks before a very light sanding. In between application of the top lacquer coats, I puffed a small amount of the mica dust when the surface was still tacky. Subsequent lacquer coats seal in the mica. This was repeated four of five times, finishing off with a couple of un-puffed lacquer coats. The progressive application of the mica in this way has resulted in a white guitar that, upon closer inspection, has a bit more going on than first met the eye.

After waiting another few weeks, the body and headstock was lightly sanded and polished to bring out the full depth of the colour. The pearlescent effect is not up to custom car standards, but does give subtley different hues dependent on lighting / viewing angle. The mica chosen was a cream / blue combination which gives the guitar a pleasing vintage white colour with blue sparkles where the light hits the contours.

Don't you just love it when a plan comes together...





The additional angled board seen by the lower horn is a bluetooth to serial link module. This will allow text entry to the microcontroller from a phone app :-)

Tuesday, 9 October 2018

Making Light Work

Whilst the circuit boards were being manufactured far away, I have been able to spend time getting the neck ready. The old frets were pulled out and the f-board was planed until the lighter coloured maple could be seen. As the shavings of faux-rosewood fell away, the truss rod assembly also became visible. The truss rod is the type that has a U-shaped extrusion so there is a 10mm wide piece of conductive metal running just under the place where the PCBs will sit. A (thin) layer of insulation will be required here to avoid any short circuits.







A pair of 4mm carbon fibre square rods were glued at the edges of the planed neck surface. This should replace a little of the strength that the f-board was previously supplying and forms the sides of the LED PCB tunnel. This was glued with two-part epoxy resin and clamped to keep flat and the correct distance apart.










The PCBs arrived and thus began the tedious process of soldering 400 decoupling capacitors followed by 400 LEDs. This took a few dedicated days and evenings with some timeout to buzz out each board for build errors. The LEDs look eye wateringly bright to me!






The boards were tested (and a few dodgy joints repaired) before they were offered up to the neck. The head PCB is joined to the next five strip PCBs by short lengths of solid core Kynar wire. This daisy-chaining approach is taken to electrically connect all the boards together.












Small offcuts of 0.5mm x 3mm carbon fibre flat bar were attached with double sided tape to keep the spacing of the strip boards consistent and were placed between capacitors. Lastly a good quality 15way D plug was fixed to the neck and wired to the last five strip PCBs.




















The f-board

5mm dark tinted perspex was chosen for the new f-board. It is dark enough so that when the LEDs are off, it looks quite normal (but very black and shiny). When the LEDs are on, they are bright enough even through the dark tint. I could only find the 5mm thick perspex in a 500 x 500mm size which at first glance seems too small for a 630mm f-board, but there's always a way...



Before the f-board is attached to the rest of the neck, it makes sense to cut the fret slots whilst it is nice and flat. An attachment for a Dremel I concocted in the past has been improved by adding a rotary encoder, motor, leadscrew and Inphase / Quadrature digital readout. This allows me to precisely (well within +/-0.2mm over 600mm) navigate along the length of the work-piece before making a transverse Dremel circular saw cut. With my table-of-fret-positions all freshly worked out on a spreadsheet it was childs play (ie noisy and messy) to zip through. The slots were checked against a handy Westfield bass and looked pretty good.








The rough cut f-board resembled a stripey tie. After a bit of trial and error, it seems that ordinary two part epoxy resin isn't very good at sticking perspex to carbon fibre, so an acrylic based adhesive (I should have known!) was required. I eventually found some Voodoo glue that claimed to do the trick and also cured to a black colour to blend in. This was also a two part system, but had a working time of just a few minutes so it took some careful planning of the sequence of events to get the glue mixed, spread on the top of both 4mm carbon fibre neck rods carefully to avoid to much squeeze-out followed by placing the perspex on top once and not moving it around.

After the clamps were released, it didn't fall apart which is success in my book!

24 hours later, the LED assembly was carefully slid into place and connected to the test board for the first glimpse of how it will look!



The f-board edges were trimmed to remove excess material and then the nice shiny surface had to be destroyed by the profiling process. This time around, I purchased a 12" radius wooden block which looked a bit like a school blackboard rubber to me. Coarse 80 grit sandpaper was used to remove the bulk before going through the grades to 2500 grit.



This was followed by T-cut and car polish to return the surface of the f-board to (nearly) its original splendour.


Fretting

Fitting frets into a wooden f-board is a nice affair that involves tapping lightly with soft faced hammer so that the wood gently eases out of the way leaving a superb result. Not so with nasty perspex - especially one with no real visible means of support under most of it. One clout with a hammer and it could easily crack resulting in several weeks of work being wasted and blood pressure reaching new and exciting levels...

After initial checking, the interference fit of the frets would be too risky, so the fret slots had to be widened carefully with a handsaw until they could be pushed in by hand. This is where the term 'kerf' became part of my dictionary! The frets then had to be glued in to prevent them from falling out or moving around. These additional steps did occasionally have a bad effect on the beautiful surface finish of the f-board, but there's no use crying over spilt sodium...

The frets were levelled and dressed as normal, the neck ends trimmed and the finished article looks quite decent to me.



Next are circuit boards that control the LEDs and the pickup active tone buffering!





Sunday, 13 May 2018

Board games

As for my damp project, I use KiCAD for schematic entry, board layout and gerber creation. I've tried a few different packages and this one is free and unlimited. Like all CAD software it has a few quirks, but once overcome it allows the design of a PCBs beyond the usual rectangular two layer 100 component designs that some of its peers are limited to.

At the headstock end, the board is going to have 20 LEDs across by 5 LEDs high. The board needs to be slightly trapezoidal to allow for the increase in width as the neck continues to the body. At this point I can either design another 3 trapezoidal boards, or I can make thin 20 by 1 LED boards and then just space them further apart as they reach the body. I'm opting for the strip boards as this will keep the costs down.

Either way, the connections between boards needs to consist of five data lines and at least one power and one ground. With several amps being consumed by these LEDs, I am going to keep to five power and five ground so that each row has its own power lines. This should keep the incremental resistance down without having to resort to server blade power connectors.

After spending time trying to find 15 way connectors that are humanly solderable and less than 2.5mm or so high, I eventually decide that the only way to join these boards up is by individual wires. I don't like it, but on the other hand, I don't want to fork out for a 600mm long board either.
The final head-end board schematic looks a bit like this:


The board design looks like this:


The pads for connecting to the previous set of boards can be seen at the left hand end amongst the first 3 or 4 LED columns. The thin end will be approx 5mm from the nut when installed. LEDs are on the top side, and the decoupling capacitors are on the other side.

The individual strip board schematics are surprisingly similar, but with only one row of LEDs! Here is the single row board design, the data interconnects are at the far ends (to keep the data wire length to a minimum) and capacitors again are on the other side:


Finding space for the interconnect wires was a little more tricky on the single row board as although there will be space between them, both the top and bottom rows will be at the edge of the neck. This means the bottom row will have to have the boards fitted back to front so that the interconnect 'tabs' will stick up and will mesh together with the fourth row

Here are two boards laid top to tail to demonstrate how the interconnect pads are interleaved in order that it can all fit in the space provided.


It will be a tight fit where it joins to the end board, but will get easier as the spacing relaxes.

Using KiCAD, the board layout files are converted into gerbers (and drill files) for the PCB manufacturers. A really handy feature in KiCAD is that it comes with a separate gerber viewer application. This can be used to double check that all the layers required are present, sizes, scaling and thickness correct and no unsightly overlaps between layers. It's like printing a word document on paper - your eye is always drawn to the typo.

The boards are going to be made by PCBWay. They do a good job at a good price. Amongst the options they offer, different solder resist colours are available. For good contrast I am going for black solder resist.

When they arrive, I need to solder 400 LEDs and 400 capacitors on :-(




Friday, 27 April 2018

Lighting Up

A tinted perspex f-board is going to be supported along each edge by some carbon extrusions. This will give me a 'tunnel' under the f-board where the LEDs can be positioned. Although missing from the WorldSemi datasheet, the WS2812B devices I sourced measure about 1.7mm high. They will be soldered to a 0.8mm thick PCB, with decoupling capacitors on the other side which should end up as around 3.5mm thick overall. The carbon extrusion is 4mm square which gives 0.5mm of wiggle room.

The neck width at the nut is 38mm (1.5"). With a pair of 4mm extrusions supporting the f-board, this leaves a tunnel width of 30mm. At the other end of the neck the width is 63mm (2.5") leaving 55mm of tunnel width. To keep the display consistent, I need to use the same quantity of LEDs across the width along the whole length of the neck so they will have to fan out. Although 30mm should in principle allow six 5mm LEDs, I want one of the modes to simulate traditional marker dots which will be down the centreline of the neck. This requires an odd number, so five LEDs across the width of the neck it will be. This gives a device-to-device pitch of 6mm at the nut. At the other end of the neck, the device pitch will be about double that.

Along the length of the neck, I cannot achieve the same pitch as I will need to get my soldering iron in there! After juggling some dimensions around, I have decided that a 7.5mm pitch is more realistic in the other direction. For a 21-fret, 34" scale neck and a display length of 600mm this requires 80 LEDs in each row, giving a total of 400 LEDs!

Each LED can take a maximum of 50mA (also missing from the datasheet) when all three colours are driven together. For 400 LEDs running at full beans, the guitar's 5V supply will need to provide 20A and the LEDs will collectively dissipate 100W!!! Ouch! At best this will cause it to go out of tune, at worst its a fire waiting to happen! 

The prospect of running this beast off a battery is a non-starter. The size and weight of a battery capable of 2-3 hours operation is not something I want to be lifting all the time whilst playing. It's going to need power sent down the lead. 

After further consideration, the maximum current is unlikely to happen as I'll be deciding how many LEDs are on at any one time, and also white isn't that interesting, so I will be more likely to be running single colours or combinations of two. So 2/3 of the colour, and maybe 1/2 of the LEDs are usually off gives a better (safer?) estimate of around 7A of current consumption. The neck should only(!) be dissipating 35W in that case which is barely a small fire. 

With some major design criteria understood, its back to the fun stuff. I bought a microchip PIC24EP256MC202 and a 8x5 device WS2812B test board to prove the concept. The PIC is a 16bit device and runs at up to 70MHz, but still has a DIL package for development. The 8x5 board needed a bit of hacking to get it from 40 serially connected LEDs to five lots of 8 serially connected LEDs. The PIC can be used with the Microchip's MPLAB X IDE software (free!) which provides a C compiler environment and makes coding for larger projects easier than trying to do it all in assembler. 

After pinching some code to get me started (thanks Robin!) I was able to get a line of LEDs lighting up in different colours. This proved I had the right pins connected and the logic the right way up. After that I wanted to control the five rows of LEDs more-or-less simultaneously. I didn't want an obvious ripple effect causing the bottom right LED to be noticeably lagging the top left. The WS2812B datasheet shows the critical timing is the width of the high pulse. A short high is seen by the LED as a zero, whereas a long high is seen as a one; after that the timing is more relaxed. During the relaxed time period I start to send data to the next row. The overall effect is to write to a column of five almost in parallel before moving on to the next five. After spending some time debugging with the oscilloscope, it finally started clocking out patterns taken from an array. Bingo!

The LEDs are so bright I had to cover the 8x5 board with tinted perspex so the phone camera didn't saturate too much. The development board can be seen on the right with a red PicKit3 programmer sticking up. It works! I'm excited! Still a way to go though...