Neograf is a Pitch/Gate sequencer based on our Polygraf drum sequencer design. Designed to be programmed using a keyboard, Neograf has a simple and intuitive feature set. It’s something I’ve always wanted to make and I feel that it really rounds out the -graf family of modules that we’ve been developing.

Neograf is what Polygraf would be if it had been designed to output pitch and gate. The elevator pitch for Neograf would look something like this: “Polygraf is a cool sequencer for Drum Modules. So what would it look like if we made a variant for controlling synth voices? Well, it’d probably have a very similar interface to Polygraf, right? And perhaps it’d be the most natural to program it by playing keys on a keyboard. Oh, and it’s very important that we be able to be able to have rests and legato somehow. Most tunes are longer than 16 step, so it’d be nice if we could very easily and intuitively switch between playing 16, 32, or 64 note sequences.”

The true origin of Neograf relates to being very sick, the tetris theme, and the YouTube keyboard. I won’t elaborate further as it’s a confusing story, but there we go. I’ll leave it to your imagination.

Anyway, Neograf used Polygraf’s code as a base. I even tried making a kludge-y insert to replace the PIC in a production model of Polygraf so that I didn’t have to make too much hardware, but it ended up being too unstable to use so I quickly abandoned it. That was fine though, as our hardware ended up being very different from the hardware of Polygraf - only the seven segment display remained as a commonality.

An early attempt to convert a Polygraf into a Neograf. An early attempt to convert a Polygraf into a Neograf.

]nstead, I decided to adapt the old Polygraf prototype. That made me laugh, as the whole thing is a parallel of what happened with Chronograf and Seismograf - Seismograf was a specialised version of Chronograf, and we re-used the prototype there too. It was pretty funny to be using the old Polygraf prototype again after so long. The hardware changes ended up being numerous, so it quickly turned into a spaghetti mess of wires as I made additions or re-routes.

Development Process

Neograf was fairly simple to develop as I was able to build on top of Polygraf rather than starting from scratch. I was also able to borrow code and designs from Little Melody for outputting a quantised note.

I started programming Neograf by focusing on getting the output section working. It’s the simplest part to test, as I could just hardcode a sequence into the EEPROM memory and tweak playback until it was reproduced properly. I came up with my own musical notation language that was able to represent notes, gates, rests, and legato, and transcribed the Tetris theme into it. I then wrote a python script that would convert my notation into the bytes that I wanted to store in my EEPROM data. The python script ended up being very useful. It was a real pain to manually transcribe the beats for Polygraf into the EEPROM - here I could just use my notation and copy/paste.

After playback was confirmed working, I plugged our Waldorf KB37 eurorack keyboard into the Neograf prototype and made the changes necessary Polygraf’s record code. Very quickly I ended up with something that could record and playback notes. Neat!

We quickly noticed that before we recorded a sequence into Neograf, we’d want to actually play it by hand a few times first. With Neograf between the keyboard and the synthesiser, this wasn’t so easy - we either had to unpatch Neograf or use a different keyboard. We figured that a musician wouldn’t want to have to have unpatch Neograf every time that they wanted to play their keyboard, so we introduced an ‘Audition’ mode where Neograf just repeats it’s input on it’s output. It isn’t a perfect reproduction as Neograf can only output 5 octaves (and outputs a quantised note), but it’s good enough for our purposes.

The next thing that was painfully obvious was that we needed a way for Neograf to play longer sequences. The tetris theme that I had transcribed spanned two sequences, and it was a real pain to have to mess with the pattern knob every time we wanted to play the full thing. We decided to implement a switch that allowed Neograf to play just 1 sequence, or 2 or 4 consecutive ones. This worked really nicely. It was such a good feature that we went back to Polygraf and figured out a way to implement it there, too.

The Neograf prototype, adapted from the Polygraf prototype. What a tangled mess of wires! The Neograf prototype, adapted from the Polygraf prototype. What a tangled mess of wires! The smaller board is a common 1v/Octave PWM conditioner that we used for Neograf, QuaSH, and Little Melody.

At some point I noticed that we were only using the “State” input (used to input sequences without a keyboard in the same style as Polygraf) in Play mode, and decided to give it a second purpose in Play mode - make it work for adding Bias. Obviously, it would be annoying to have a Bias applied just because the “State” input was in a certain position when you turned the module on (or switched between Record and Play mode), so we only add Bias when the “State” input changes during playback.

I’m not a musician and so I haven’t been exposed to other people’s sequencers before. Some of my assumptions about what to implement are sometimes incorrect. Fortunately, I’m not designing these modules alone, and my veteran musician father was able to influence the design. A glaring instance where my assumptions were incorrect is that I initially implemented the ‘gate’ output for Neograf in the style of the ‘Triggates’ mode that I designed for Polygraf. It works fine for many cases, but it turned out to be the wrong thing to do as it limits the possibilities that you can make with your tune. I ended up changing this completely, and instead implemented a ‘gate length’ input that allows the user to vary their gate high duration from between 10ms and 150ms.

Gate length was the final feature to be implemented, and whilst doing so, I encountered a very confusing issue where programming the PICs seemed to make them unreadable. I was really stumped by this, and didn’t know how to proceed for a few weeks. I was really hesitant to do anything as every time I burned a PIC I felt like I was just throwing money away by killing it. I was so confused that I even consulted the smart folks over at the Microchip forum. As expected, they knew exactly what to do, and the problem turned out to be an undocumented hardware bug with older PICs like the one I was using.

As a side note, when I work on a PIC project with Frequency Central, the actually physical electronics are usually fairly simple as the code does most of the heavy lifting. If there’s a way to make the PIC do something, we usually try to do it. With Neograf, a lot of complicated switching is done in the analogue domain, so the electronics are actually quite complicated here. This switching was needed because we decided to multiplex the inputs of the PIC to do different functions depending on if we are in Play, Audition, or Record mode.

Conclusion

I really like Neograf; it feels like it fills a gap missing from the -graf series of modules. Whilst Cryptograf is great as an analogue sequencer (especially when paired with Polygraf), it’s more of an ‘in the moment, happy accident’ tool. Neograf fills the hole of wanting to make reproducible patterns.

I used it to record and play back the melody from one of my favourite songs, Feels Like We Only Go Backwards by Tame Impala:

At the time this article was written, Neograf only exists as a rough prototype, so watch this space for more development, and information when we release it.

P.S. I'm late to the party, but I recently got a twitter account that you can follow here.


Receive an email whenever I post. No spam, no ads, just notifications