All work has come to a screeching halt here at KS Synthesis. Time for a general shop reorganization/cleaning up (inspired in no small part by the neat shop pics posted here on electro-music recently). The summer of Thomas Henry, preceded by a springtime of MultiPhase, and before, that winter of sequencer had totally dissipated any vestigial sense of organization I may have had before.

First up is a general accounting of inventory - it had gotten to the point that I couldn't even find a TL072 when I really needed one. As I was going through my CMOS parts, a sense of sadness of my aborted sequencer project gripped me as I accounted the parts purchased for it. The project was aborted not because it was unsuccessful (in fact, it was far more successful than I had anticipated, but was put on hold for entirely different reasons). Then I got to my exotic shift register collection. Again, wistful memories of my Klee sequencer gripped me. Then I looked again at the sequencer parts, then again at the shift registers (this is starting to sound like a Randy Newman song). An idea began to form....

The sequencer was intended to be a 32 step sequencer, based on four independent 8 stage sequencers that could be chained in any combination. I'd perfected a method of interlocking two 8 stage sequencers, each independently controlled from a different clock. I'd come up with a number of ways of taking advantage of the method in which they were chained - it was basically a 'hand-off' from one eight stage sequencer to the next. Manipulating how the hand-off was executed, and using two different clocks provided a terrific means of producing interesting new patterns out of the same step sequence. Throw into that the ability to control the direction of sequence with each section (whether chained or independent), and you get the idea that it can do a lot with a single set of pot settings. That is what the 'async' sample consists of that I have posted here. Each segment of the sample is a single take (no overdubbing) of the sequencer controlling different voices with the handoff happening in an asynchronous manner. Each controlling counter chip is controlled by a different division of the master clock.

Of course, it could work just fine as a single 16 step sequencer (which is what I used for my Jungle Mutant and Birth of the Mutant samples). It could also act as two entirely independent 8 step sequencers, as demonstrated in the second sample. Again, it is a single take with the two sections controlling a separate voice, with each section controlled by a different division of the master clock. The lead voice, incidentally, is the DSC2000 controlled by a mix of keyboard and sequencer output.

That sequencer got torn down to make way for the Thomas Henry work.

So, this gets back to the shift registers and the Klee sequencer. The Klee was covered under this thread:

Basically, it's a 4006 shift register based circuit that's designed to mold a 16 step sequence from a random input, using a stairstep voltage and gates/triggers derived from pots at the 4th, 8th, 12th and 16th bit output of the shift register. It could continuously produce random patterns, or once a random pattern was acquired, that pattern could be looped. One can acquire very interesting combinations of shift register bits and pot settings that produce very nice sequences - it's a great compositional tool. Downside is, once power is shut off, the pattern is gone, though the pot settings remain. One idea I had was to provide a switch that could load a 1 or a zero to create bit patterns, or even as an attempt to recreate a bit pattern. This method would be tedious to say the least. The problem is that the 4006 only spits out certain bits of the total pattern in the register, so to visualize what the bit pattern actually is requires a pencil, a pad of paper, and a lot of patience. As a small, powerful on-the-fly pattern generating module, it fits the bill. Repeatability from power-up to power-up, or if the pattern is changed, is iffy.

As I pawed through my parts, I came across some fat CD4034 Bidirectional Bus ICs I'd purchased with a vague idea of doing *something* with them. The CD4034 allows one to load as many as 8 bits with a parallel load, and then shift those bits right. In another pile of ICs, I found quite a few CD4019 data selectors. I'd purchased those specifically for application in the sequencer once I made the leap from 16 to 32 steps. It dawned on me that I could work an improved Klee function into the 16 step version of the sequencer quite easily. If I implement 16 switches to load the CD4034, I can recreate any pattern that is captured randomly, or I can manually program my own pattern. This functionality can be superimposed over the existing 16 step sequencer (actually the 8X2 sequencer) through use of the data selectors. In other words, I could switch between 'normal' sequencer function and 'Klee' function at the flick of a switch, with full visual feedback of the Klee pattern. Once a desirable pattern is captured, the clock can be stopped. For any LED that is on, flip that switch up, any LED that is off, flip that switch down. To put the pattern back in at a later date, strobing 'load' will load that patten and it can then be used. To emulate the original Klee function, just use the 4th, 8th, 12th, and 16th pot to set the staircase. Of course, one wouldn't have to limit oneself to just those pots. In fact, a 'normal' sequence could be switched to something quite off the wall by switching between 'Klee' and 'Normal' because all of the active steps would add up to a different stairstep voltage than 'normal' sequence function. Having the Klee function split into two 8 bit functions would follow the architecture of the 8X2 sequencer.

Meanwhile, with the general redesign, I can also rip off Howard's 'jam' input function as well. In this case, I'm going to use a 16 key pad, which is in a different pile.....

I've attached a pic of the sequence bit data flow for banks A and B (clocks, handoff sections not shown for brevity).

I'll get right on it

Cheers,
Scott

PS PIC guys: I know, I know. But I've already bought the parts and designed the damn thing.

super_klee1.JPG

Description:

Super Klee data flow diagram

Filesize:

33.84 KB

Viewed:

890 Time(s)

This image has been reduced to fit the page. Click on it to enlarge.

Last edited by Scott Stites on Tue Sep 04, 2007 10:31 am; edited 6 times in total

Scott my man!!
You got it goin' orrrnnnne!!
Inexorably inspiring stuff, as always!
Don't worry 'bout the PIC guys. I just love a good CMOS roach condo!
Let me know if you want a stripboard layout done!_________________What makes a space ours, is what we put there, and what we do there.

I've actually gone through a similar cleanup over the past couple of weeks. After finishing the SoundLab, I decided I needed to get things in order before trying to tackle the ASM2.
I also officially withdrew from my Web Design course last week. I'm going to pursue my idea of setting up my own small business, and I already know enough to do my site.
It's amazing how finishing just one long term project can clear your mind and boost the confidence. Consolidating two and finishing the result is no doubt a very inspiring idea for Mr Stites! _________________What makes a space ours, is what we put there, and what we do there.

I'm still working through the ICs - havent' touched anything else. Things are starting to take shape on the IC front, however.

Hey V-un-v - the only thing truly on breadboard in these samples was the sequencer itself. The VCOs are on PCB, but not mounted in modules, so those are alligator clipped in.

The sequencer is actually made up of two independent 8 step sequencers. Each 8 step sequencer is driven by a 4516 clock.

Chaining the two sequencers creates a 16 step sequencer. The sequencers are chained in the following manner:

The first clock and bank is unihibited and the second clockand bank is inhibited. When the first clock reaches its 9th count, it is automatically inhibited, and a pulse is sent to unhibited the second clock. The second clock is simultaneously reset and uninhibited by this pulse. When it reaches its ninth count, it is inhibited and sends a pulse to the first clock which resets and uninhibts it, and so on and so forth. In this manner, each clock always starts out on the first count and stops on the ninth count, while the second clock resets starts up on the first count. The ninth count is inaudible, just as it is with a normal 4017 sequencer, which uses the first 'unwanted' high to reset and start over.

Using the 4028s with the 4516 counters as opposed to using CD4017s allows the count up, count down, and implementation of Howard's jam function, as well as different tempos between banks in sequential mode.

Now, (going into the wayback machine - I need to go over my notes from the period and I may have to correct a few points here) the 'asynchronous' handoff between counters came in two flavors. Both flavors had to do with allowing the clocks to constantly race around the track to the finish line - in other words, when one clock took over, the other clock was not inhibited - just the output of its associated CD4028 was inhibited. So, if clock 1 was moving slower than clock 2, clock 2 would hit its terminal count before clock 1 would. This would inhibit the output of bank 1 and allow bank 2 to take over. In the meantime, clock 1 is still plodding along. If it reaches its terminal count before clock 2 does, it takes over again with bank 1 being enabled and bank 2 being disabled. This results in a few notes of bank 1 being heard at one tempo, with bank 2 interjecting at a different tempo, then bank 1 stepping in again at its tempo.

The second async option was much more varied and created more intersting results. In async 1, when a clock hit its terminal count, it would take over in the normal handoff manner - its handoff pulse would reset the first clock. This results in a shorter, more fixed pattern. This is because one clock will always be able to count a certain number of steps before the second clock takes over. Say the second clock is divided by 2 and first clock is divided by 4. The first clock gets to count 4 by the time the second clock gets to count 8. Once the second clock hits the 9th pulse, that's when *it* takes over. The first clock is reset, so it gets to count 4 again, and the second clock reaches count 8 again. On the 9th count of the second clock, the first clock takes over, and bank 1 counts to four again before the process is repeated. In this example, the sequencer goes like this: Bank 1 counts 1 through 4, bank 2 counts 1 through 8 at twice the rate, bank 1 counts 1 through 4, etc. It's a twelve step sequence with 4 slow 8 fast 4 slow, etc.

The second async method is the one predominately heard in the samples, and provides much more variation. It works by simply not resetting the counter once it is enabled again by the counter that hits the finishing line first. It just picks up where it left off, but the bank it is controlling is enabled. If you work it out on paper, you'll see quite quickly how it provides a lot more variation by each bank starting and stopping at different points with different tempos. I tried it once. My brain hurt.

If different divisions of the master clock are used to control clock 1 and clock 2, this relationship is held constant and the sequence will repeat itself predictably over and over again. The relationship of clock frequencies determines how long the obvious self- same pattern repeats (you'll note that, though 16 steps are used in the samples, the overall repeating pattern is much longer than 16 notes). The pattern itself varies from which step you start at in each bank. An overall sequence that starts at step 3 of bank 4 and step 2 of bank 2 will sound different than if the sequence starts at step 1 of bank 1 and step 3 of bank 2. If unrelated clocks are used, it becomes a much more complicated sequence, and also a bit harder to use in a musical sense, though it is possible.

The original design carried this over to four 8 step sequencers. It became a much more complicated design - I had (on paper) a 4017 that acted as a sort of traffic cop at a busy intersection, calling the shots as to which bank was active. The design bloated because, once you get that many 8 step sequencers going, there are a zillion cool things you can do.

Even with two 8 step sequencers, with the Klee function thrown in, the number of possible features and options does grow quite a bit - one must decide which functions are desirable and which are not, in order to avoid a front panel the size of a '57 Chevy with the inner workings of Eniac. Here's where Howard's design- the panel-first philosophy plays an important part.

Of course, before that can happen, one must determine what is possible. For example, the idea occurs to me that Howard's jam function can be taken advantage of to marry the Klee function more closely to the sequencer function. The thought is using Klee random or Klee pattern control of which step in the sequencer function fires when. Remember, the Klee is going to have 16 bits active at any time. If you select four of those bits to address the two counters, the Klee will determine which step is active at each clock pulse. In other words, now your sequencer is not firing sequentially up or down, but randomly (when the Klee is in random mode) or in a preset Klee pattern. One would have to think about the distribution of bits - it would be favorable to either AND or OR certain of the bits together to determine what the MSB would be (the MSB makes the determination which bank is active -without this, one bank would be 'favored' over the other in step distribution). The ability to switch between normal sequencer control and Klee control of the sequence with a pulse input would make some neat on-the-fly variation in a sequence. That's one example of where one can go with this thing.

Other thoughts are of how to bend the Klee function to the two counter/bank function of the sequencer itself.

Anyway, I dug through my sample pile - all the sequencer samples were made last November when I was developing the original sequencer. There are too many of them to post here, so I've linked them to my site.

seq_ser_oneclock.mp3 (1.14 MB) In this example, in the chained mode, each bank is controlled by the same clock. Each bank is controlling a different voice, so you hear one voice, then the other, etc. I vary the clock frequency throughout the sample.

seq_ser_diffclock.mp3 (1.85 MB) has the same voice setup as the first sample. It demonstrates the handoff functionality of the two banks, with each bank's counter controlled by a different clock. Again, the banks are chained. In the sample, each bank is controlling a different voice. As the sample progresses I vary the clock of each bank individually. As each bank finishes its terminal count, the other bank kicks in. You can hear that a very fast clock will blip right through an eight step sequence to the point that it ranges between a fast burst to totally inaduble.

seq_ser_diffclock_2.mp3 (1.079 MB) The same setup - both banks are controlled by a different clock. One clock is a slow sequence, while the other clock is fixed at a very fast rate, so it burst through its eight steps in an interesting manner. It's a practical example of one type of effect one can get from this arrangement.

seq_ser_dimc.mp3 (1.708 MB) Another example of chained mode with differen clocks between banks. This one uses the Dim C and some echo. The fast blip, which is controlling a voice that also has its filter controlled by an LFO, provides more of a varying blurred sound rather than a distinct sequence.

seq_parallel_2.mp3 (1.476 MB) This sample has the sequencer in the 'parallel' mode (IE, the banks are not chained). The two banks are controlled by a common clock. I was concerned that, because the two counters are not linked together, it would be possible for one to get offset from the other if things got moving too fast. As it turns out, the two counters stay in perfect sync (IE, no missed steps to offset the sequences). This sample takes the sequencer through audio rate clocking down to slow clocking back up to audio range. Two voices are controlled, one by each bank. I briefly fade one out, then the other, so each voice can be heard individually.

16step_example.mp3 (3.831 MB) This is an example of chained sequence. Because the banks are individual, one can control one voice, one can control a different voice, and the overall sequence can control a third voice. The sequence that starts at 01:43 starts out with a voice that is controlled by all 16 steps. Then a voice that is controlled by one bank is faded in. Then a third voice (the DSC2000) is faded in - it too is controlled by all 16 steps. The voice that is controlled by 8 steps, depending on the length of the envelope, actually has a 9th step - this is contolled by the 'resting' voltage (0V) of that bank when it is not selected in the chain. So, when the envelopeis long enough, it allows that note to be heard and overlaps with the two 16 step voices. That portion fades out, then fades in again, but this time the second bank step sequence counts down rather than up.

This would create a whole new (even stereo) pattern out of a 16 step sequential pattern. Two parallel 8 step patterns would now become a 16 step pattern. Two voices, notes could overlap. Could apply to sequencer or Klee function.

In 8X2 (parallel mode) one can mix the output of both sequencers together, which would add the voltage of two steps together. Depending on where one bank started in relation to the other bank, this would vary the pattern. If one is clocking them at different rates, the pattern would 'rotate' around, creating a greater than 16 step sequence, depending on the clock relationship between the two.

Last week's IC inventory has been finished up - it took quite a while to sort, categorize and store just under 3,000 ICs.

Anyway, still have to go after the discrete semi's, passives, and hardware, but enough already with the inventory - I've been itching to try this idea out, which I did today. At least the CD4034 shift register portion of it.

I have yet to rig up any circuit to derive the steps from it, I'm only using LEDs to display what is happening at this point, but it works beautifully. I've rigged up a circuit to bring parallel load high, clock the input, then bring parallel load low (which puts the CD4031 in serial mode). I've got a dual comparator circuit built up - one is to accept a trigger from my keyboard, the other any clock source (doesn't have to be square or pulse - sine, triangle, ramp will work just as well).

I take both of those inputs and derive triggers from them. The trigger derived from one input goes to a CD4013 that handles the load function, and the other trigger is used for the clock. The signal responsible for clocking the CD4023 during parallel load and the clock signal are ORed together to feed the clock inputs of the CD4034s, and the load signal goes to both CD4034s.

On the CD4034s, each DATA B input is connected to a wire that I can either connect to +V or ground (these are the load inputs that will be connected to switches). The DATA A outputs are connected to the LEDs. I hit a key on the keyboard, and whatever pattern I have set up with the jumpers gets immediately loaded into the shift register. The clock signal clocks them right on through - it's purty to watch.

I avoided using the asynchronous load function - ominous notes about timing, bits spilling over and such made it look like the above method would be a little easier to handle.

Right now I'm just recirculating the patterns - I don't have the random input set up yet. It's quite easy to switch between a 16 stage pattern and two eight stage patterns. In the case of two 8 stage patterns, different clocks could be used.

The possibilites of this circuit have been filling my head this week - it's hard to keep it down to something that will fit on a reasonably sized control panel.

What I've thought about, though, is to have two rows of 16 LEDs and two rows of potentiometers. Each row of pots would have a switch that would select between shift register or sequencer input. One row could double as a control row - sort of like the old ARP 1601 - each stage of this row would have a switch to select if its associated pulse would go to one bus or the other. Unlike the ARP, which uses three busss, this would be a cheaper Bus 1, None, or Bus 2 selection. Each bus would output the selected pulses/triggers. Each bus could also have a selector that would choose between a function that the bus could trigger. The functions could be reset, direction, etc. For example, this would allow sequences of between 1 to a max of 16 to be easily programmed. I don't think I'm going to have a skip function (skip the skip) - there's going to be enough circuitry just for all the other stuff already.

Anyway, the dual row of LEDs would be handy so that one could see at all times what the sequencer and what the shift register were doing, whether they were selected for a row or not. Why is this necessary? - not totally necessary, but would greatly facilitate my next Big Idea. The shift register makes an ideal *timing* generator as well as a pattern generator. If one had a trigger/gate output on the last bit of each 8 stage shift, one could set up two 8 bit timing patterns or one 16 bit timing pattern. Either of these outputs could be used to clock the sequencer according to these patterns. One could 'line up' the sequencer with the shift register more easily with two rows of LEDs. Another thing is, even if the sequencer is not selected for a row output, it could still be used to control the shift register in the 8X2 mode - in other words, it could provide signals to control the handoff from one 8 stage shift register to the other.

The dual row of stages would also facilitate two different 16 step events happening - one driven by the shift register and one driven by the sequencer. Of course, if only one bit is loaded in the shift register, it would serve the same function as the sequencer (except it wouldn't have the ability of shifting left). If one applied a flip flop on the clock, where one output of the flip flop drove the sequencer, and the other drove the shift register (interleaving of rows), a two voice pattern of up to 32 steps could be programmed. Obviously, without the interleave, each row could control a different function simultaneously in either 8X2 or 16X1 configuration.

There are literally hundreds of things that can be done with this setup - for example, the data selectors could be set to OR the sequencer and shift register together. If both were clocked at different rates (preferably at divisions of one clock), this would superimpose one function over the other on the stairstep output. That could be set up as a third position for the row source selector switches - Sequencer/Shift Register/Both.

No, seriously, I've got miles of "virtual" stripboard in my Lochmaster program. If you can draw the schem, I can plan the strip. And by the time I work out exactly what it is that you're so excited about, I'm sure I'll have learned a lot more about sequencers and become a better engineer to boot!
Laying out a CMOS roach condo is actually quite easy! It's just: - Line em up, +ve, -ve, join the dots!
It's putting it together that tests your patience. They tend to have lots of links.

Of course I'll only be doing this sort of thing in-between wiring the Sorcerer. When I get sick of stripping the insulation off rainbow cable. _________________What makes a space ours, is what we put there, and what we do there.

I've gotten used to doing stripboard and proto layouts in Visio. I've worked out a system that allows me to do it pretty quickly. Downside is, it's a sort of shorthand that makes sense to only me.

Quote:

If you can draw the schem, I can plan the strip. And by the time I work out exactly what it is that you're so excited about, I'm sure I'll have learned a lot more about sequencers and become a better engineer to boot!

I kind of jumped into this thread in the middle - I'll write up an A to Z manifesto of what this entails; hopefully it'll make more sense.

Quote:

Laying out a CMOS roach condo is actually quite easy! It's just: - Line em up, +ve, -ve, join the dots!
It's putting it together that tests your patience. They tend to have lots of links.

This project would work out very well in discrete blocks. For example, one block could be the shift register, another the sequencer, another the translation to voltage section, yet another the data selectors - that way, one could assemble the blocks into whatever configuration one wanted and toss aside what was not wanted.

Quote:

Of course I'll only be doing this sort of thing in-between wiring the Sorcerer. When I get sick of stripping the insulation off rainbow cable.

Yes, the Sorcerer must become.

Side note: the term 'Klee' came from a chap who made my shift register sequencer, and used the term 'Klee' from my inference that molding a sequence out of it was like molding loose clay. Could have sworn that he said it was a French word. A Frenchman at work told me that the French term for clay was "Argile". Anyone know what the hell 'Klee' is, if it's a work at all? May need a rename.....

That's what I was thinking sort of. Also it looks like dutch "klei" or fysian "klaai" (both phonetically near to english "clay"). I thought it might be german maybe but I can't find any evidence for that and possibly some against it (german "klee" meanining english "clover" seemingly).

It could very well mean "clay" in some northern eu language, not in a roman language though I'd guess.

Or maybe the person thought it was a nice way to phonetically say "clay".

Apart from all that I thought it to be a nice and appropriate name for the sequencer._________________Jan

I thought the same and wondered what a painter has to do with a sequencer _________________homepage - blog - forum - youtube

Quote:

The man that hath no music in himself, nor is not mov'd with concord of sweet sounds, is fit for treasons, stratagems and spoils; the motions of his spirit are dull as night and his affections dark as Erebus: Let no such man be trusted. - W. Shakespeare

And Yorky is the winner - Romeo Fahl dubbed his module the 'Klee Sequencer', told me why, and I forgot and later dreamed it was French for 'clay'. I sent him an email last night and he told me....Paul Klee.

Quote:

I thought the same and wondered what a painter has to do with a sequencer

It has to do with my reference to molding clay and the abstract nature of the original Klee Sequencer - I believe Romeo made the connection between my reference with its free-form style of molding sequences and thought of Paul Klee (pronunciation of Klee is 'clay') whose works carry a similar bit of abstraction.

Quote:

Apart from all that I thought it to be a nice and appropriate name for the sequencer.

Ditto, the name has stuck. Hope the estate of Paul Klee doesn't mind.....

I hooked up bits 4, 8, 12 and 16 (as with the original 4006 based Klee) each to a pot and mixed the outputs to form a stepped voltage sequence. I'm so excited, I'm ready to pee my pants. This function is *awesome*. As a stand-alone (without marrying it with a 'normal' sequencer), it would be a very powerful compositional/performance tool. In fact, I'll document a stand-alone: it will be the Model 2 Klee Sequencer. Samples to follow.

The grief part in the title of this thread is none too real today. Jeff Pontius' wife phoned this morning to let me know that Jeff passed away yesterday.

Jeff was an excellent synthesist and composer, and a very good friend of mine. His SynthImagery CD was a huge inspiration to me. During our friendship, Jeff displayed a level of kindness, generosity and intelligence that is rare in the world this day. I will miss him terribly.

Jeff was instrumental in developing the concept of the sequencer mentioned in the first part of the thread. Last October he approached me about developing a sequencer based on the ARP 1601. We'd joined up on a number of projects, including the Dim C, the 291 filter, SOU functions, etc., and I was quite enthusiastic about it. As our conversation progressed, Jeff had some ideas that, to me, at first sounded impossible or highly problematic - they would require taking the two sections of the ARP sequencer, which were driven by a common clock, and driving them with separate clocks. I would have never tried it had he not suggested some of the functions, but, sure enough, I got it to work. As time progressed more ideas flew around, it expanded to 32 steps and a wide panopoly of functions.

I don't know how he did it - grok all of my hare-brained kitchen sink stuff and deal with the chemo at the same time - but he did. He designed a panel for it, and I was shopping around for enclosures that would fit it all. Then his health got to the point of just not being able to deal with a project of that scale, and we put the project on indefinite hold.

I visited him last June 18 (my birthday) and we had one more session of playing with his synth and checking out his new PEK. He was still brimming with ideas, and signed me up for a project to put together a Bi-N-Tic filter. He paid me up front with a Blacet Miniwave kit, though I told him I'd be glad to do it free. The Miniwave kit arrived, but the Bi-N-Tic panel never did. I've never had the heart to even open the Miniwave package.

Now, Jeff is gone, but the sequencer will go on, thanks in no small part to him.

Thanks for that Howard. I'd point Jeff to threads on electro-music, but I just never grasped that he was a member here as well.

Just to exemplify what kind of guy he was - the Korg D8 he recorded on SynthImagery on - that's the one I use to record with now. When he upgraded to a better recorder, out of the blue he handed me this box (original factory box) with all the documentation and said "Here, I bet you can use this." Never would accept payment. It had some awesome tracks recorded on it, too.

Yesterday, I used the D8 yesterday to record some samples of the Klee Model 2 function, but lost all the wind in my sails today to post them.

Sorry to hear of your loss Scott. Good friends are the cornerstones of our lives. It takes years to fill the void they leave behind, and they can never be replaced. All I can suggest is that you celebrate the kindness and integrity which Jeff brought to your life._________________What makes a space ours, is what we put there, and what we do there.

You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot vote in polls in this forumYou cannot attach files in this forumYou can download files in this forum

Please support our site. If you click through and buy from our affiliate partners, we earn a small commission.