Neograf is a Pitch/Gate sequencer based on our Polygraf drum sequencer design. Intended to be programmed using a keyboard, Neograf has a simple and intuitive feature set. It’s something I’ve always wanted to make - or at least, since I’ve been working on synth projects - 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.
Instead, 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 hardware additions or circuit re-routes.
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 as 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.
At some point we 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 many other sequencers and other music tech before. When I’m designing for Frequency Central, some of my assumptions about how something should be implemented are sometimes incorrect. Fortunately, I’m not building these modules in a vacuum, and my father - himself a veteran musician - frequently corrects the design. A glaring instance of this happening was that I initially implemented the ‘gate’ output for Neograf in the style of the ‘Triggates’ mode that I designed for Polygraf. It worked fine for many cases, but it turned out to be the wrong thing to do. It limited 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 duration 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 what to do nor how to proceed for a few weeks. I was really hesitant to do anything as every time I burned - and subsequently killed - a PIC, it I felt like I was just throwing money away. 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 non-PIC circuit is 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, as that makes the most economical sense. 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.
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.