FB-01 Twitter Thread Archive

If you follow me on twitter, there is a good possibility you have seen – and likely attempted to ignore – my very (very) long FB01 thread. This is a thread wherein I detail the challenges and breakthroughs in learning to use, and writing software which helps me control a Yamaha synthesizer released in the late 80s.

Now – while I delete all my tweets once a year, it was my intention to spare this specific thread from the axe. However, the software I use had other plans. The thread, itself, is gone – but luckily – I save everything I tweet to a local archive. So for any future folks who embark on the FB01 Journey, or for myself … when I forget something I perhaps captured here but NOT in my development notes… here is that thread, all in one place (without images, unfortunately – those I do not have backups for. I will try to sort that out so it doesn’t happen again).

The software the creation of which is chronicled here is in ongoing development, but if you own an FB-01 and would like to program it using the tool I’ve built, you can find the latest version of it for $20 on Gumroad.

March 21, 2020 at 11:33AMFinding it difficult to resist the urge to irresponsibly spend money I definitely dont have on a new, complicated synthesizer to learn while I’m stuck in my house for the foreseeable future
March 21, 2020 at 07:15PMJust remembered I have a famously difficult-to-program FM synth from the 80s shoved in my closet. So…. *cracks knuckles* Here we go.
March 21, 2020 at 07:20PMlol this is gonna rule https://t.co/idkxdVwVcw
March 21, 2020 at 07:23PMLiterally the NEXT line after this is “The next paragraph in the manual contains a glaring error…”http://twitter.com/mikerugnetta/status/1241505620366409729
March 21, 2020 at 07:38PMA E S T H E T I C https://t.co/5qzCbEY5RChttp://twitter.com/mikerugnetta/status/1241509448339898371
March 22, 2020 at 08:01PMOk. I did something like ~3 hrs of reading before I even went and dug the FB-01 out of my closet. It’s currently on my kitchen table, connected to my computer via a small usb/midi interface. Current plan: send a few of what I THINK are well formulated sysex messages via Max.🤞http://twitter.com/mikerugnetta/status/1241877793220308993
March 22, 2020 at 08:03PMI found a few m4L editors (for $$$), which seems like a good sign. But at least one apparently doesnt work anymore, and the one that does has a dev blog where the developer says it was extremely difficult to program. Which seems like a bad sign.http://twitter.com/mikerugnetta/status/1241878164856594432
March 22, 2020 at 08:04PMAlso: Yes. This is now a radical left synthesizer programming parapandemic twitter acct.http://twitter.com/mikerugnetta/status/1241878537428176902
March 22, 2020 at 09:07PMGood news: everything talks nice. First messages effect parameter changes. Throwing random numbers at it, I managed to randomly generate some v nice patches.

Bad news: in order to program this in any USEFUL way … I need to understand what it’s saying BACK to me. Ruh roh.
March 22, 2020 at 10:38PMI decided to forgo interpreting incoming sysex dumps for decoding parameter change syntax. First step: what are the parameters I can change?

Turns out every instrument on the fb-01 has 4 operators w ADSR and a few other params. There seem to be 7 FM algorithms and 1 master LFO.
March 22, 2020 at 10:43PMWhat I haven’t figured out is: since a “VOICE” can contain up to 8 “INSTRUMENTS”, how do I / can I control multiple instruments independently via different addresses, and (this may seem weird, but the Fb-01 is weird) can I have more than 1 instrument play at once? I think so?http://twitter.com/mikerugnetta/status/1241918393625776128
March 22, 2020 at 10:43PMThis is confusing because the manual talks alot about having a voice with multiple instruments, and placing those multiple instruments across different, non-overlapping ranges of keys … but it never talks of just having them all play on all keys.http://twitter.com/mikerugnetta/status/1241918546617262080
March 22, 2020 at 10:45PMAlso remember you can, uh, mute conversations on twitter. 😎http://twitter.com/mikerugnetta/status/1241918990114529286
March 23, 2020 at 01:31AMOk. It turns out – I think – that you have to allot a number of keys to each voice that makes up an instrument, with a max of 8 across everything. So you can play a multitimbral patch, but only if each voice has … “room”? so to speak?http://twitter.com/mikerugnetta/status/1241960775478063107
March 23, 2020 at 01:34AMIt also looks like you have to have each voice on a separate midi channel, even though they ALSO have “instrument number” addresses ¯\_(ツ)_/¯ I’m sure theres a reason for this.

I’m gonna go to bed and let this all sink in. Probably wont be back to this for a couple days.
March 23, 2020 at 01:59AM@davemakes Whoops – guess you’re right. I’ll throw a hashtag on these from now on.http://twitter.com/mikerugnetta/status/1241967683933016065
March 23, 2020 at 01:08PMThinking through this this morning, I think they don’t just overlap MIDI channel and “Instrument Number” because the #fb01 (if you wanna filter these tweets from this pt forward) ALSO has a “System Channel”.http://twitter.com/mikerugnetta/status/1242136123532509191
March 23, 2020 at 01:09PMSo you communicate param changes to any and all instruments simultaneously on the System Channel by “instrument number”, but you still send note on and off messages to each instrument on its particular MIDI channel. So they do serve different purposes. #fb01http://twitter.com/mikerugnetta/status/1242136334682243081
March 23, 2020 at 01:10PM@Jonic So far some of the sounds have been nice! Definitely nothing worth posting yet. But you can get some good mid-90s ambient sounds, and some scrunchy lo-fi FM nonsense.http://twitter.com/mikerugnetta/status/1242136627222327298
March 23, 2020 at 01:15PMIts not … good? design? but I think I’m starting to get it. Plus I can only imagine what the memory / architecture restrictions were like in the mid-80s, esp if you were trying to design a low cost unit. #fb01http://twitter.com/mikerugnetta/status/1242137797575806980
March 23, 2020 at 01:18PMAnyway, if SENDING IT NOTES is this fiddly, I cannot WAIT to see what it’s like inputting characters to name saved patches for display on the front screen. #fb01http://twitter.com/mikerugnetta/status/1242138559362019328
March 24, 2020 at 11:09PMTalked about this on the @funcityventures stream tonight but thought I’d put it here too. Why am I doing this, specifically, to cope with / distract from the virus?

The #fb01 is not only difficult to program, but the manual is difficult to understand (and sometimes just wrong!)
March 24, 2020 at 11:10PMAnd beyond being difficult to program, most of the original commercial software to program it is no longer available / supported. Which means I’ll have to write a program, to program this synth. #fb01http://twitter.com/mikerugnetta/status/1242650107507507202
March 24, 2020 at 11:11PMDoing that kind of thing means I have to pay close, careful attention. I have to close read things, and load a lot of weird esoterica into my brain and then get it all back out in the right order. To make noises!

Doing that… theres no space for The Rona Worries. #fb01
March 24, 2020 at 11:11PMThis, for whatever reason, is a combination of things capable of holding my full attention. I’ve somewhat ruined that by committing to twitter updates? But I think it’s also nice to have a use of twitter that isn’t seeing how bad everything is, or shouting about landlords. #fb01http://twitter.com/mikerugnetta/status/1242650344473182218
March 24, 2020 at 11:13PMAlso, it feels good to have a big, indulgent thread where I don’t really care how many likes the tweets get. That’s not the point. #fb01http://twitter.com/mikerugnetta/status/1242650679648403456
March 26, 2020 at 01:05AMWhat did we learn about the #fb01 this evening? A few things. The sysex syntax – the format of the messages I need to send to get it to do things – is becoming increasingly clear. I’ll make a little chart to explain the broad strokes of that later.http://twitter.com/mikerugnetta/status/1243041428063879171
March 26, 2020 at 01:06AMTonight I was mostly curious about determining if / how an “instrument” can contain up to 8 voices. And it turns out it can! The button combinations to get there are … weird. And, surprise!, not obvious. #fb01http://twitter.com/mikerugnetta/status/1243041674009460736
March 26, 2020 at 01:07AMBasically, starting with one voice in your instrument, you have to go into its setting and reduce its number of available notes to less than 8. Once you’ve reduced the # of notes, you can press the INST *SELECT* button, and that will *ADD* an instrument. #FB01http://twitter.com/mikerugnetta/status/1243041977349832704
March 26, 2020 at 01:08AM(as far as I can tell, this is NOWHERE in the #fb01 manual, but there are definitely more than a few completely mind numbing passages / pages)http://twitter.com/mikerugnetta/status/1243042178563223553
March 26, 2020 at 01:09AMThe addition of a new voice is only indicated by the incrementing of a single numeral on the far left of the readout. Now in Instrument #2, you select a voice for it (“Tubular Bells”), assign it a Midi Channel and number of Notes, up to 8 minus whatever Inst #1 has. #fb01http://twitter.com/mikerugnetta/status/1243042491231862801
March 26, 2020 at 01:10AMRepeat for up to 8 voices, 1 note each, per Instrument. The problem is … I don’t know if I can do this programmatically? It may be made easier by the fact I don’t want to select preexisting voices, just program my own. Orrrr … that may make it harder? 😬 #fb01http://twitter.com/mikerugnetta/status/1243042653085843459
March 26, 2020 at 01:10AMI think I remember some stuff in the manual about Sysex Message scope. Sending messages to the machine vs a voice vs an instrument? Maybe? Definitely looking forward to untangling that poorly translated mystery another evening. #fb01http://twitter.com/mikerugnetta/status/1243042733809381376
April 03, 2020 at 12:49AMThe mods are asleep. Lets post about synthesizers. #fb01http://twitter.com/mikerugnetta/status/1245936342959304704
April 03, 2020 at 12:52AMHave figured out this evening that one can only add new instruments from a particular location in the menu structure – the “NOTES” section – and nowhere else. After a thorough review, I am 100% positive this is *not* in the manual. #fb01http://twitter.com/mikerugnetta/status/1245937213843681282
April 03, 2020 at 12:54AMAbout to look into doing this programmatically. The goal is to be able to give a program a specified, ideally “empty” preset – specify the number of instruments you’d like it to have (up to 8) and then design how each instrument sounds. Store this on the computer, NOT the #fb01.http://twitter.com/mikerugnetta/status/1245937642455392262
April 03, 2020 at 12:55AMI’ve *still* not gone back to attempts at parsing the the #fb01’s outgoing midi messages, btw. Hoping, maybe, I don’t … HAVE? … to listen to it? And can … just? … tell it things? If I keep good enough track of the parameters computer-side? Fingers crossed.http://twitter.com/mikerugnetta/status/1245937874635296768
April 03, 2020 at 01:00AMAlso, very much looking forward to learning how THIS works later. Just a cheeky little pro-tip shoved at the bottom of page 21. #fb01 https://t.co/fAcdnHo0uShttp://twitter.com/mikerugnetta/status/1245939106754027521
April 03, 2020 at 01:12AMOH HELL YEAH – programmatically adding instruments to voices is as easy as just pretending they already exist, and sending them data. As was hopefully the case, looks like this’ll be 10000% easier over a wire than doing it on the synth itself. #fb01http://twitter.com/mikerugnetta/status/1245942252519804928
April 03, 2020 at 01:15AMAlso, someone recently asked for pictures of what this all looks like. Here is my extremely not glamorous work station at my kitchen table. V sketchy programming in Max. Interfacing the #fb01 via an iConnectMidi2 normally used for my modular. https://t.co/2pw0x8QbFxhttp://twitter.com/mikerugnetta/status/1245943075417047040
April 03, 2020 at 01:48AM@LelandCox lol – this definitely gives me flashbacks to the first time I worked as a studio assistant and had to learn how to use a digital mixer for the first time.http://twitter.com/mikerugnetta/status/1245951255220047878
April 03, 2020 at 02:00AMDone for now, I think. I got a rough sense of what’s possible and converted + transcribed the parameter codes for instrument control. All the messages I’ve sent up til now have been in a consistent format, but parameter changes, as you can see, all have DIFFERENT formats. #fb01 https://t.co/J5zEasOimQhttp://twitter.com/mikerugnetta/status/1245954184140271616
April 03, 2020 at 02:03AMThe next thing I do is go parameter by parameter and build a small bit of code to format the message correctly and send it along, see if it works. Once that’s done, I’ll cut what I don’t need and start figuring out how to put it all together to build “voices”. #fb01http://twitter.com/mikerugnetta/status/1245955119096549378
April 03, 2020 at 11:38AMMy one job for the day just got cancelled so – apologies to the afternoon crowd but … after lunch, synthesizers incoming. #fb01http://twitter.com/mikerugnetta/status/1246099726388416512
April 03, 2020 at 06:08PMA difficulty has arisen. I have to do integer to byte conversion and the #fb01 byte orders are… weird. I’ve been trying to figure it out for about an hour now, and I think I’m *just* starting to get it but I haven’t updated on progress because today looks mostly like this: https://t.co/bRV44N0yzAhttp://twitter.com/mikerugnetta/status/1246197796081975298
April 03, 2020 at 06:10PMI haven’t had to do this sort of thing since college. So. On the one hand it’s nice. But on the other hand OH MY GOD WHY? WHYYY would you do this this way?

Headed to Evening Zoom Plans (lol) so will probably be back at this tomorrow. #fb01
April 04, 2020 at 01:14AMlolol #fb01 https://t.co/gJGie1EHnOhttp://twitter.com/mikerugnetta/status/1246305057961893889
April 04, 2020 at 01:31AMUgh I’m so close to getting this. It’s an extremely irritating problem. It’s tough to explain, but basically the high and low segments of each byte are sent in different sized packets (part of the high bit goes with the low). Sussing how to parse that is just… maddening. #fb01http://twitter.com/mikerugnetta/status/1246309369911881728
April 04, 2020 at 01:32AMThis would probably be a very easy problem for 20 year old me. I think I am just out of practice, and more impatient with these sorts of details than I used to be. #fb01http://twitter.com/mikerugnetta/status/1246309530155339779
April 05, 2020 at 05:50PMSpent some time on this last night but didn’t update any. Its coming along, just slow. I’m implementing parameter changes a relatively inelegant way, but a way that is *clear*, which I like. Lets talk about why. #fb01http://twitter.com/mikerugnetta/status/1246918254888697859
April 05, 2020 at 05:51PMYou have a single byte, communicated via MIDI, to change a parameter. Like say LFO speed. Which goss from 0 to 127. You tell the #fb01 a bunch of stuff it wants to hear, like START MESSAGE and UNIT IDENTIFIER, and then you say “Ok. I’m gonna tell you about LFO speed.”http://twitter.com/mikerugnetta/status/1246918295367962628
April 05, 2020 at 05:51PMThen you do, all in a string of many numbers sent one after the other, quickly. The LFO speed part has to be a single byte. Formatted like this, in the #fb01 manual:


Meaning: you can use the whole 8 bits to represent values from 0 to 127 in dec. BUT … but but but
April 05, 2020 at 05:51PMYou do not send that to the #fb01 in one go. Every parameter change is split into two numbers, two 4 bit segments. You send 0 to 127 as

%xxxx and %xxxx

Two 4 bit segments calculated “separately” and sent in series. FINE. Sure. Weird, but ok whatever. HOWEVER!
April 05, 2020 at 05:51PMWhat if I want to change Oscillator Feedback or FM Algorithm? Well. Those parameters are sent *together* in one byte, formatted like this


Meaning the segments are

%00xx and %xyyy

Calculated “separately”, but always sent simultaneously. #fb01
April 05, 2020 at 05:51PMThere are many more parameters like this, with very little consistency in format. %0xx00yyy %0xx00000 and so one. Each parameter change message has to be hand made. They are bespoke. Artisinal even. There about 80 of them. #fb01http://twitter.com/mikerugnetta/status/1246918303848845312
April 05, 2020 at 05:51PMThat’s why I’m going slow and making something inelegant but OBVIOUS. If I (or someone else) has to tinker later it’s less likely I’ll trip over my own cleverness.

I’m getting faster at it. But it’s finnicky, and I was never super good at this sorta logic stuff anyway. #fb01
April 05, 2020 at 05:52PMHere we pause for a cute baby civet https://t.co/28o2TPISWbhttp://twitter.com/mikerugnetta/status/1246918687698886656
April 05, 2020 at 11:51PM😘👌 #fb01 https://t.co/L4p3Vr8iXEhttp://twitter.com/mikerugnetta/status/1247008919442075649
April 05, 2020 at 11:59PM@disasteradio Oh yeah there are a few that are available, commercially and for free! I’m doing this from the ground up just to do it.

And actually, I just sat down to start taking a look at how I might do error correcting. LOL.
April 06, 2020 at 05:09PMOOOOO just got to a parameter where it’s first bit is sent alongside one parameter, and the second bit is sent alongside a THIRD parameter. Exciting! #fb01http://twitter.com/mikerugnetta/status/1247270130465284109
April 06, 2020 at 05:41PMKeeping track of what I’ve implemented (👍) vs what I’ve implemented and tested (✅). Going through the whole operator block, and then will test it all. After that, gonna quadruple the op block (somehow, prob not literally) for the four operators that exist per instrument. #fb01 https://t.co/XlWpYiX44Ihttp://twitter.com/mikerugnetta/status/1247278405504118785
April 06, 2020 at 05:42PM@TheDrewBrowne Definitely! and DEFINITELY.http://twitter.com/mikerugnetta/status/1247278495455215616
April 06, 2020 at 06:32PMWhoops. Forgot about the Instrument Block. Gonna implement all these before I do a big bit-by-bit test.

This part should go pretty quick, since the syntax is straightforward, and (whoa) makes logical sense. Or maybe I’m just in too deep, and starting to think like the #fb01 https://t.co/TjmdJwPKhz
April 06, 2020 at 08:29PMOk. Time to see how much of this I got wrong. #fb01 https://t.co/gkJRINuub5http://twitter.com/mikerugnetta/status/1247320552848723968
April 06, 2020 at 11:10PMI paused to make and eat dinner (curry udon!) but the long and short is: SURPRISINGLY LITTLE. The LFO settings are weirdly inscrutable (see above re: page 21) so I’m not sure if they’re behaving normally. But most everything else appears to work? Whoa. #fb01http://twitter.com/mikerugnetta/status/1247361104025706496
April 06, 2020 at 11:10PMNext, I should probably decide if I wanna do checksums (meaning: listen to the #fb01 tell me what IT thinks is going on). That’s going to be a nightmare, pretty much guaranteed, but I at least wanna make an informed decision to not implement it. I’ll do that … later.http://twitter.com/mikerugnetta/status/1247361111197966344
April 18, 2020 at 01:01AMYou turn the LFO on by sending the #fb01’s LFO Enable address a … 0. You turn it off by sending a 1.http://twitter.com/mikerugnetta/status/1251375353664286726
April 18, 2020 at 01:09AM@sbassoon EXTREMELYhttp://twitter.com/mikerugnetta/status/1251377199552311297
April 18, 2020 at 01:10AM@creepybard Basically. At least, that’s the plan. I’m doing minor debugging now. Kinda spinning my wheels figuring out if I can avoid listening to it (still).http://twitter.com/mikerugnetta/status/1251377445837639683
April 18, 2020 at 11:39AM@Glacier_Nester It’s rough, but a good challenge! Nothing has been impossible, just lots of – yeah – WHY WOULD YOU DO IT THIS WAY?http://twitter.com/mikerugnetta/status/1251535958027182080
April 18, 2020 at 12:45PMVery slowly turning this into something that might eventually be usable. I experimented with more elegant solutions – like a dropdown that selects instrument, and then populates associated values – but I keep coming back to: just put everything on screen at once. #fb01 https://t.co/IJKVRi0iPhhttp://twitter.com/mikerugnetta/status/1251552471253647360
April 18, 2020 at 12:48PMOne reason I’m doing it this was because I’m looking forward (I think?) to building a system where selected params will be randomized and those values interpolated between one another. Used judiciously, I think the results might be fun, at least… if not good. #fb01http://twitter.com/mikerugnetta/status/1251553237636993024
April 18, 2020 at 12:58PMNow I’m at the operator block controls which I just … it’s so much stuff I don’t really care about? But who knows maybe once I have it all implemented I’ll figure out it does something cool? :weary: #fb01 https://t.co/hByf8YbnFAhttp://twitter.com/mikerugnetta/status/1251555774486151168
April 18, 2020 at 02:53PMidk might fuck around and make some dance musichttp://twitter.com/mikerugnetta/status/1251584755973455872
April 18, 2020 at 03:16PM@royalty_valens feelin it tbhhttp://twitter.com/mikerugnetta/status/1251590353762820106
April 18, 2020 at 03:35PMwoof #fb01 https://t.co/ReWdxIvGULhttp://twitter.com/mikerugnetta/status/1251595210297139205
April 18, 2020 at 07:28PMI’m not great at UI, but … this should be usable. Now We multiply it all (and a bunch more stuff NOT in this screenshot) 8 times… and see what happens. #fb01 https://t.co/v9Qgw7TQWb
April 18, 2020 at 08:14PMOk thats … a LITTLE better. I’ll tighten it all up once I know it works. Which I’ve definitely putting off out of fear I’ve totally messed it all up in the process of organizing it. #fb01 https://t.co/B6wJUZG8rx
April 19, 2020 at 09:42PMNice! Top tab row selects which instrument you are currently controlling. Preliminary preset system stores params for each. Doesn’t work exactly as envisioned, but I’m gonna try this way first. Maybe means, if done right, I wont have to listen to the #fb01 after all? https://t.co/EFapq3PJEBhttp://twitter.com/mikerugnetta/status/1252049987288084482
April 19, 2020 at 09:42PMA few param controls stopped working after all this fiddling and UI-ing and Preset System Setup-ing, so now I go through bit by bit and test it all. Will probably take a little while, and not produce much to ~report on~. #fb01http://twitter.com/mikerugnetta/status/1252049990010183685
April 19, 2020 at 09:42PMLong story short, though: I may be getting dangerously close to uhhhhh … *making music with it*? #fb01http://twitter.com/mikerugnetta/status/1252049991109148672
April 19, 2020 at 09:51PM@godinpants This is one of the things I’m looking forward to learning. How much is TOO MUCH for this thing? And what happens when we approach it?http://twitter.com/mikerugnetta/status/1252052127356203016
April 19, 2020 at 10:18PM@godinpants 👹http://twitter.com/mikerugnetta/status/1252058931746222082
April 20, 2020 at 12:16AMFine time to discover there’s a SERVICE MANUAL for the #fb01.

Some of this would have been nice to know earlier, but so far it seems like this wouldn’t have saved me too much work. Some parts are a little clearer though, like at least it spells out what the acronyms mean. https://t.co/5YfGJaqGst
April 20, 2020 at 12:26AMnice #fb01 https://t.co/aA7TV69rruhttp://twitter.com/mikerugnetta/status/1252091276826234881
April 20, 2020 at 12:33AM0 == on, off == 1, 0 == Max. Value – WHAT KIND OF COUNTRY IS THIS? #fb01 https://t.co/oigwgZJcDOhttp://twitter.com/mikerugnetta/status/1252093128590401536
April 20, 2020 at 01:33AM@steubens7 Yeah, I don’t think this piece of gear is using 0db as its center point. In this same manual there are other params that are marked “0 ~ 127 (0 Max. Value)” which are WRONG. And in operation, 127 is clearly max value. So. We’ll just put that to the test a little later.http://twitter.com/mikerugnetta/status/1252108004821999617
April 30, 2020 at 02:57PMIf u are curious about what I’ve done so far:


Probably the next thing I release wont be with the #fb01, but the thing after THAT will almost certainly be.
May 13, 2020 at 11:50PMI just wanted to check in on the #fb01 thread and say: still ongoing! I’ve only done small adjustments in the last couple weeks while I solve other problems needed to move forward (had hardware issues; got what I needed in the mail today!) More here in the next week or two!http://twitter.com/mikerugnetta/status/1260779586947874816
May 13, 2020 at 11:53PMIn the meantime I’ve been working on getting better at using Live as hub for Max and SuperCollider, so have a single master transport / tempo / midi-source. That’s been fun but … is kind of a whole other story altogether. And the screenshots have fewer jokes. #fb01 https://t.co/1fWDyhAm8Thttp://twitter.com/mikerugnetta/status/1260780317981446149
May 14, 2020 at 11:42AMIn a strange twist of fate tho, just learned SC numbers its midi channels like the #fb01: starting at 0.

July 13, 2020 at 12:24AMHave been quietly back at this #fb01 project the last week or so, doing unit tests and making sure all the bits and bobs work. I ran into a long period of confusion where I thought the whole thing was broken, but it turns out … just one channel is? An explanation:http://twitter.com/mikerugnetta/status/1282531313690521601
July 13, 2020 at 12:27AMThe #fb01 is capable of splitting up to 8 simultaneous notes across 8 total “instruments” per currently selected “voice”. So I wrote a piece of software which controls up to 8 instruments (basically, the same control schema, 8x) and it lets you split those 8 notes between them.http://twitter.com/mikerugnetta/status/1282532187246661633
July 13, 2020 at 12:29AMEach instance of the control screen has nearly identical controls (actually identical after the first inst that has the “global controls”) and one of those controls is midi channel – which is a huge convenience. Send notes to instrument 1 on ch 1, inst 2 on ch 2, and so on. #fb01http://twitter.com/mikerugnetta/status/1282532468869017600
July 13, 2020 at 12:31AMInstrument 1 on channel 1? Works great. Instrument 3 on channel 3? Works great. Inst 4 on 4? 5 on 5? 6 thru 8 on 6 thru 8? Fab.

Inst 2 on channel 2? Nothing. Not. a. thing.

Why? NO CLUE. Welcome to my Sunday. Still troubleshooting. #fb01
July 13, 2020 at 12:36AMCould it be the code for the control panel? … No! Why? Because it’s the same code as channels 3 thru 8, which works fine. What’s even more frustrating: control messages work! I can turn the instrument volume up and down, but for some reason: can’t send it NOTE NUMBERS #fb01http://twitter.com/mikerugnetta/status/1282534296067112965
July 13, 2020 at 12:39AMWhen I figure this out it’s gonna be something idiotic that I’ve done, or forgotten, or misunderstood – and I’m gonna feel like a big doofus. But for now, I am going to get mad at the #fb01 for being inscrutable – but I guess also be thankful because this is what I wanted, right?http://twitter.com/mikerugnetta/status/1282535045966766080
July 13, 2020 at 12:40AM@InnuendoStudios scrute you, synthesizerhttp://twitter.com/mikerugnetta/status/1282535384363282435
July 14, 2020 at 01:17AMI think I fixed it. If I’m being honest I’m not 100% sure what did it – but I suspect it has something to do with the “System Channel” and “Instrument Number” handling interacting with the Preset system. Note to self to exclude / hard code those parameters … #fb01http://twitter.com/mikerugnetta/status/1282907119302434817
July 14, 2020 at 01:17AM…into the 8 different control panels, and also make one global preset system, as opposed to 8 different preset systems, one for each instrument.

Detailed control is nice, but if I’m being honest I probably wont use it, and it’s gonna cause more trouble than it’s worth. #fb01
July 14, 2020 at 01:52AM@max_rbmc @justky1018 https://t.co/ji4OAvchSShttp://twitter.com/mikerugnetta/status/1282915978662293507
July 14, 2020 at 01:55AMI should also say – in the hour or so yesterday where I had this working before I started adding features and broke it … I did make music with it (!!), and it sounded RAD. Best I’ve ever heard out of the #fb01 since I’ve had it. So. LIGHT AT THE END OF THE TUNNEL.http://twitter.com/mikerugnetta/status/1282916693233348608
August 03, 2020 at 10:02PMI’ll be gone until at least Sept. 5th, maybe longer. My current suspicion is I will have little interest in weathering much of Election Season™ On Here™ and so might not? We’ll see.

I do reserve the right to update my #fb01 thread.
August 07, 2020 at 12:26AMahem – #fb01

I did the housekeeping I said I was going to do. Each of the eight control panels for the 8 voices is now hard coded to a voice #. Should have done that from the start. It also auto-distributes MIDI channels (voice 1, chan 1, v2, c2, etc) , but you can change them.
August 07, 2020 at 12:28AMI went the other direction with the preset system though – instead of global presets for every voice, I just fixed the problem with having a preset system for each individual voice. I think it’s going to work better? Either way – it was easier to fix, so that’s a win. #fb01http://twitter.com/mikerugnetta/status/1291592033182916608
August 07, 2020 at 12:31AMThe one other thing I have to fix has to do with the LFO. I finally understand that cryptic footnote from a while back in this thread – basically: the “last” voice you apply the LFO to sets the LFO for *EVERYTHING*. Setting the LFO on a voice *makes it* the “last voice”. #fb01http://twitter.com/mikerugnetta/status/1291592896471334912
August 07, 2020 at 12:33AMThis is a little more complicated than saying “the LFO is global” – I can program voice 1 with LFO settings and program voice 2 without LFO settings, and they’ll sound different. But if I program voice 3 with LFO settings … voices 1-3 now all have the same LFO. #fb01http://twitter.com/mikerugnetta/status/1291593317097115648
August 07, 2020 at 12:36AMI don’t … really know how to make this clear in what I have. It may just be that every voice changes the LFO settings of the voices _before it_, just so its clear – at least visually – whats going on? I think there is probably no good solution here; its a weird “feature”. #fb01http://twitter.com/mikerugnetta/status/1291594006208688128
August 07, 2020 at 01:42AMOk. The preset-per-voice system works, but has some problems. Namely: loading the same preset twice in a row produces different sounds. This is my fault – fixable. But also: big old BLIP when changing presets while playing. Not great. That’ll be tmro’s puzzle. #fb01http://twitter.com/mikerugnetta/status/1291610732145127429
August 09, 2020 at 01:21AMI fixed the blip. It turns out four things make a blip:

1. Setting high note boundary for a voice
2. Low note boundary, too
3. Turning mono/poly on or off
4. Changing # of notes per voice

This is the case even if you’re “changing” a param to its currently set value #fb01
August 09, 2020 at 01:23AMThese are mostly easily addressed. I have high + low note range adjustable; I’ll just hard code it to all keys. Poly can always be on; y not. Notes per voice is tough tho. Not sure what to do. That may need its *own* preset system, so it only loads when necessary. #fb01http://twitter.com/mikerugnetta/status/1292330665636175872
August 09, 2020 at 01:31AM(likely there is a solution to this which does not involve these compromises, but if my suspicions are correct it would be … a pain to make? And I have long abandoned the idea of making a tool which is Good, aiming instead for Useful for My Purposes In Particular).http://twitter.com/mikerugnetta/status/1292332558131302400
August 09, 2020 at 01:31AM(#fb01)http://twitter.com/mikerugnetta/status/1292332619229736960
August 09, 2020 at 01:43AMAh. I’ve done something silly. If I strip param changes where incoming value == what’s already set, this problem mostly goes away. There’s no way to elim the blip for some param changes, since its in the hardware, but if I can minimize for most preset changes, that’s perf. #fb01http://twitter.com/mikerugnetta/status/1292335700998860802
August 09, 2020 at 01:46AMawww yeeeaaah – thats a param change blip mostly gone, folks. 🍾 #fb01http://twitter.com/mikerugnetta/status/1292336485484699648
August 09, 2020 at 10:54AMOk, it appears as though we can change parameters as fast as once every 75ms before the fb-01 gets confused and becomes non-responsive. This is not as quick as I’d like for the purposes I had in mind – but it may be the best I can get. #fb01http://twitter.com/mikerugnetta/status/1292474448193478657
August 09, 2020 at 10:57AMOther than the absolute inanity of the programming schema, this is maybe the next msot meaningful result of the #fb01 being a “cheap” piece of gear. It’s just not meant to think very hard. Which, I mean – fair? Or who knows, maybe I’ll stumble on something that’ll fix this…http://twitter.com/mikerugnetta/status/1292475139490304000
August 09, 2020 at 11:02AM@todbot LOLhttp://twitter.com/mikerugnetta/status/1292476331133984775
August 09, 2020 at 12:53PM@TheDrewBrowne @todbot drew nohttp://twitter.com/mikerugnetta/status/1292504223041675267
August 09, 2020 at 01:00PMOh shit I think … uhhh – I think it all works? Dang. I think everything works. Final steps are:

1. Go through and make all the labels meaningful. Some stuff is still labeled, like, “no clue what this does but sounds cool” I know what all those things do now. #fb01
August 09, 2020 at 01:00PM2. Try to implement a lil OSC control schema so – bear with me – we can control the control software controlling the hardware (over a network).

That *looks directly into camera* should be quick.

August 09, 2020 at 01:04PMAnd then I guess, like, make a record with it? LOL

August 09, 2020 at 01:42PM@todbot @TheDrewBrowne Oh this does look pretty fun…http://twitter.com/mikerugnetta/status/1292516540487806977
October 08, 2020 at 02:34PM[a month passes]

This is still in progress! All the recent bits have been pretty ~detail oriented~ and mostly going as planned, so no real _updates_ to speak of. The blips are (mostly) gone, the preset-per-voice system works. #fb01
October 08, 2020 at 02:34PMI’ve been working on getting an ideal “zero state” for each instrument and voice and then figuring out the best way to automate param changes outside of presets. I started w OSC, prototyped some MIDI solutions, didn’t like them, went back to OSC. I think I may … stop? #fb01http://twitter.com/mikerugnetta/status/1314273031976554496
October 08, 2020 at 02:34PM… and force myself to “automate” param changes by switching between presets only (and in Max I can interpolate, so… that’s nice).

I’m gonna remove all that control schema gak, and then make something with this thing. Here’s how she currently looks. #fb01 https://t.co/3lhM18ip9n
October 08, 2020 at 02:35PM(*two months) #fb01http://twitter.com/mikerugnetta/status/1314273213283786755
December 14, 2020 at 06:14PMAfter some buggy work on the preset system, it became clear that – really – I’m just putting off the inevitable, and kinda making more work for myself, by not listening BACK to the #FB01 when it talks to me. So, long story short, currently trying to parse a list of 6000+ SX ints.http://twitter.com/mikerugnetta/status/1338623300923232259
December 14, 2020 at 06:15PMThe goal here is, roughly, to say “Hey, #FB01, I think your current patch is this.” and for the FB01 to say “I think it’s this.” and then for me to be able to compare the two, to make sure we’re always on the same page. Which often, we are not.http://twitter.com/mikerugnetta/status/1338623734161285123
December 14, 2020 at 07:57PMlove2hex #fb01 https://t.co/6C1AiWVuo1http://twitter.com/mikerugnetta/status/1338649304366452737
December 15, 2020 at 12:58AMsome real Fermat’s Last Theorem shit right here #fb01 https://t.co/FKVlsY0IQNhttp://twitter.com/mikerugnetta/status/1338725039806554115
December 15, 2020 at 02:38AMBehavior strange even for the #FB01 in some of these tests – beginning to think data isn’t being copied into its onboard RAM properly (which is what you query to get current config) because of … a dead battery? Which I really would rather not fix.http://twitter.com/mikerugnetta/status/1338750364481445889
December 15, 2020 at 02:40AM*loud booing from the crowd* #fb01

ok, i think this is my sign to go to bed. https://t.co/Es2iriBLid
December 15, 2020 at 11:30PMOne problem, I learned, is that the outgoing msg speed of this software is *WAY* too fast for the #fb01 when recalling presets. Wrote a little throttle for outgoing messages. Tuned it so it feels real time, but slows things down enough to where it doesn’t choke.http://twitter.com/mikerugnetta/status/1339065253460578305
December 15, 2020 at 11:32PMThen, earlier tonight, made an unforced error that meant I had to rewrite a good chunk of the preset system. Just finished fixing that, and tested some MIDI maps with control hardware for fun. Seems to work! #fb01http://twitter.com/mikerugnetta/status/1339065940068200450
December 15, 2020 at 11:34PMFor now, I’m giving up on writing anything approaching true Library Software, because I really do not want to deal with that battery situation. My hope is the preset system I’ve written is reliable enough to make it so I don’t have to depend on the #fb01’s own memory. We’ll see.http://twitter.com/mikerugnetta/status/1339066281518129152
December 15, 2020 at 11:36PMNext steps are:

– Stress test programming voices, storing and switching presets
– Probably switch out some UI elements for more extensible options
– Possibly make a version that’s Max4Live friendly.

December 16, 2020 at 12:05AMCould be worse! This is three “voices”, two notes each, within one “instrument” store across three different presets. Sequenced and recorded in Live with reverb added. #fb01 https://t.co/oj0wE1SCjbhttp://twitter.com/mikerugnetta/status/1339074026174619648
December 17, 2020 at 01:04AMDoctor, the whole synth crashes when I make operator four the carrier for amplitude modulation.

January 20, 2021 at 05:48PMI have starting making things with the #fb01 that you can listen to. They are the things here:


This thread is not done, tho – still a bunch of work to do on this patch (I’m thinking of rewriting it from the ground up? lol)
July 26, 2021 at 11:13PMI’ve been using this controller I wrote for the #fb01. It works and I like it but its v inefficient and if I want to do things quickly (like, very, very quickly) – it gets confused. Probably there’s some message order details I am not a skilled enough Max programmer to suss out?http://twitter.com/mikerugnetta/status/1419858382765297665
July 26, 2021 at 11:15PMSo I am gonna rewrite this, still in Max, but in JS (*crosses self*).

There are speed limitations to the #fb01 hardware and this VERY early implementation of MIDI. I think its around 25ms depending on SYSEX msg length? I’m not TOO far off from that, but I wanna get closer.
July 26, 2021 at 11:16PM@armahillo He was right 😔http://twitter.com/mikerugnetta/status/1419859126801387521
July 26, 2021 at 11:19PMBasically: I need *something* to do while my machine learning project chugs away on data ¯\_(ツ)_/¯ #fb01http://twitter.com/mikerugnetta/status/1419859945479098412
July 26, 2021 at 11:36PM@armahillo The first (current) version of it is in @cycling74 Max; the one I’m gonna start working on now will stay in the Max environment, but I’m gonna rewrite it in Javascript.http://twitter.com/mikerugnetta/status/1419864264391774209
July 26, 2021 at 11:41PM@armahillo it REALLY does, huh?http://twitter.com/mikerugnetta/status/1419865555260030977
July 26, 2021 at 11:43PM@armahillo Naw, basically I’ll use JS inside Max to do the string management, data conversion and constructiojn, and then use Max to do the control scheme (knobs, sliders, input boxes), MIDI connections, etc.http://twitter.com/mikerugnetta/status/1419865955795152904
August 15, 2021 at 04:06PMWorking on this in earnest now, and the whole scheme is so much easier in js that I see clearly how truly delusional I was doing this in max-proper, with objects only. I mean. I learned A TON doing it. But … wow. #fb01http://twitter.com/mikerugnetta/status/1426998773801234435
August 15, 2021 at 04:19PMAlso appreciating all over again how ABSURD the architecture of the #FB01 is. My god. What an accomplishment.http://twitter.com/mikerugnetta/status/1427001934507094022
August 15, 2021 at 11:31PMThe first “big” problem I ran into is that I forgot about memory leaks in javascript, and now I am … remembering. #fb01http://twitter.com/mikerugnetta/status/1427110673260089346
August 16, 2021 at 12:48PMThis was a pain in my ass a year ago, and it is a pain in my ass now. Truly unhinged. #fb01 https://t.co/jIpA5YTZOThttp://twitter.com/mikerugnetta/status/1427311437899309057
August 16, 2021 at 12:55PM@CallMeMrPig1 to be clear, I wrote this comment explaining what I’ve learned about how to program this synth. But I think you’re right! The original developers had a VERY limited arch to work with and instead of saying “No” to features, they said “WHATEVER WE CAN FIGURE OUT”http://twitter.com/mikerugnetta/status/1427313053394165765
August 16, 2021 at 05:56PMTime to reliable control with the new system was days not weeks, which is rad, and not much to report other than “it seems like everything was written clearly enough at the start that porting it to a whole other language wasn’t too bad.” #fb01http://twitter.com/mikerugnetta/status/1427388809335947269
August 16, 2021 at 05:57PMI’m going through now and error checking everything, and most parameters work on the first try. Also, I am struck that – for all the complaining that I do about how you program this thing … it does SOUND rad as hell. It’s so good. #fb01http://twitter.com/mikerugnetta/status/1427389011501494277
August 17, 2021 at 12:36AMf-and i cannot stress this enough-uck off. #fb01 https://t.co/x8HnAtqqSbhttp://twitter.com/mikerugnetta/status/1427489427862036480
August 17, 2021 at 03:24PMOk. I got sorta distracted by something. I realized that implementing this programmer in js makes it easier to try something I all-but-abandoned a long while back in this thread: listening TO the #fb01, instead of JUST talking to it. So I explored that today. Bad idea.http://twitter.com/mikerugnetta/status/1427712899909308417
August 17, 2021 at 03:25PMNormally what I’m doing it saying “Ok, this oscillator should be this loud. And modulated with THIS other oscillator” and so on. The #FB01 has a function where you can ask it to TELL YOU what it thinks the parameters of its current patch are.http://twitter.com/mikerugnetta/status/1427713156231712768
August 17, 2021 at 03:26PMThis is useful for getting the config and param data for factory presets, and also for making sure what you’re sending matches what the #fb01 is storing. But… well… it doesn’t appear to work. Not 100% at least. I’ll explain (sorry).http://twitter.com/mikerugnetta/status/1427713496733687809
August 17, 2021 at 03:28PM(remember you can mute #fb01, lol)

Every voice has two blocks of data – “configuration” and “instrument”. “Config” is stuff like total level, LFO settings, octave transpose, amp modulation and so on.

“Instrument” is all the fiddly 4-op FM stuff like carrier, mod, ADSR, detune
August 17, 2021 at 03:30PMThe manual specifies a number of ways to ask for voice data info from the #fb01 – all 48 voices in a bank, the currently loaded voice, etc. And it seems like “voice data” ONLY EVER SENDS… Config data. And never instrument data. Which is arguably more important.http://twitter.com/mikerugnetta/status/1427714371065729026
August 17, 2021 at 03:32PMI can’t think of a reason the developers would choose to simply not send it, having implemented this whole cockamamie system to RECEIVE and ACT ON that data. So that makes me think something is … broken? #fb01http://twitter.com/mikerugnetta/status/1427714986235895810
August 17, 2021 at 03:33PMCause here’s the other thing: when I try to send the message which tells the #fb01 to save the current voice to its memory, I get a cryptic error message back. MY GUESS… is that there COULD BE an internal battery, and it likely has died. That might cause weird memory stuff?http://twitter.com/mikerugnetta/status/1427715115923787786
August 17, 2021 at 03:33PMAm I about to crack open the case of the #FB01 and perform ancient battery surgery?

No. No I am not.
August 17, 2021 at 03:37PMPerusing the service menu mentioned above, I can see there is a way to do a RAM test, to make sure the #fb01 memory is still functioning properly, but frankly I worry if I ask it to perceive itself, it may self destruct.http://twitter.com/mikerugnetta/status/1427716297446547462
August 17, 2021 at 03:58PMyeah see ok im saying #fb01 https://t.co/npTt2wqKtahttp://twitter.com/mikerugnetta/status/1427721535721197568
August 17, 2021 at 05:29PMOk I checked the little switch on the back of the #fb01 and it was, in fact, flipped to “On”. My guess is for … 20 years. I am again abandoning the idea of listening to what this thing has to say, and blaming a long-dead coin battery probably slowly leaking acid into my studio.http://twitter.com/mikerugnetta/status/1427744537523458057
August 17, 2021 at 05:34PMAlso, starting to feel complicated emotions about becoming probably one of a handful of people who knows everything about this bad consumer-level synth from 1986. #fb01http://twitter.com/mikerugnetta/status/1427745566189047813
August 17, 2021 at 05:34PM@frzz I do! I just dont know if I WANT to. lol.http://twitter.com/mikerugnetta/status/1427745656941260804
August 17, 2021 at 05:53PM@frzz ok fine i ordered the partshttp://twitter.com/mikerugnetta/status/1427750520081555470
August 17, 2021 at 06:00PM@frzz 😤http://twitter.com/mikerugnetta/status/1427752260877131781
August 25, 2021 at 11:17AMAgain: I am very much NOT a UI designer, but … turns out the more you do something the better you get at it. Feeling much more usable than the last go.

Next step is to test this a bunch, work on the preset system, and then get it into an m4l device. #fb01 https://t.co/tAcuuYj52O
August 26, 2021 at 04:15PMdare i say … it works (careful, a little loud – though the distortion is purposeful; there’s as little grit and a little delay post on this) #fb01 https://t.co/A7FyPxnCLbhttp://twitter.com/mikerugnetta/status/1430987287719026690
August 26, 2021 at 04:17PMOne interesting thing that’s a huge help: the live UI objects have an update limit. Through testing I found that the #FB01 doesn’t like being told what to do faster than every 15 or so ms, unless its note messages. Having that throttle programmed into the UI is really rad.http://twitter.com/mikerugnetta/status/1430987834626818051
August 26, 2021 at 04:20PMThere are a few more convenience things I wanna add, and I have some suspicions that the LFO settings broke a tad in the transfer to m4l. But then I think I’ll probably put a v of this up on https://t.co/8m9nZqPGdR / Gumroad? /shrug #fb01http://twitter.com/mikerugnetta/status/1430988482093142016
September 05, 2021 at 06:37PMYooo it took two weeks but I fixed:

– The preset system
– The broken LFO code
– A bunch of minor layout problems

Also added a bunch of hover hints. Gonna send it to a few friends to make sure it opens right, and then put this up for all 100 people who own an #FB01 to download.
September 05, 2021 at 06:38PMLiterally took the #fb01 on vacation with me two weeks ago to work on this. lol.

Once its all buttoned up, an fb01 heavy celebratory checkpoint brick bear stream, I think?
September 05, 2021 at 06:40PMOh and also – I got the parts in the mail to try to replace the #FB01’s battery. 😬😬😬😬😬😬😬 This will eventually, momentarily, transition from a synth programming thread to a synth repair thread. But I don’t have the time / emotional strength for that right now.http://twitter.com/mikerugnetta/status/1434647714260729857
September 06, 2021 at 12:06PMAnyone running Live + M4L wanna … test something out for me? 😎DM me! #fb01http://twitter.com/mikerugnetta/status/1434910810204254216
September 06, 2021 at 04:35PM@Wrecks0 Because I keep adding to it in a very, very long thread. You can mute the hashtag I use (#fb01) and it shouldn’t show up anymore.http://twitter.com/mikerugnetta/status/1434978468001951756
September 14, 2021 at 12:04AMProbably gonna do this sometime this week. 😑 #fb01 https://t.co/AQADqvMr2rhttp://twitter.com/mikerugnetta/status/1437628173072674817
September 14, 2021 at 12:14AMAnyone have any tips for carefully disconnecting those ribbon cable assemblies towards the front (right most in the first photo)? They probably haven’t been touched in 35 years.http://twitter.com/mikerugnetta/status/1437630866495352833
September 14, 2021 at 12:44AM@HazmatZombie Oh nice, ok got it. Did u remove all four, incl the power connector?http://twitter.com/mikerugnetta/status/1437638273430659073
September 14, 2021 at 10:19AMDone it. 😬 #fb01 https://t.co/KTZLNLyZNyhttp://twitter.com/mikerugnetta/status/1437782990990479367
September 14, 2021 at 10:19AMpre-morning meeting progress #fb01 https://t.co/nSLxxbQdmWhttp://twitter.com/mikerugnetta/status/1437783100373749763
September 14, 2021 at 10:20AMNext, maybe after lunch if I have time: #fb01 https://t.co/XMl0bFcWxchttp://twitter.com/mikerugnetta/status/1437783248172732419
September 14, 2021 at 02:01PMI had time #fb01 – desoldering the old leads was remarkably easy. Had to extend a leg on the new holder to get it to fit in the available holes, but that was a quick hack. https://t.co/4QPMywx3fBhttp://twitter.com/mikerugnetta/status/1437838977617350658
September 14, 2021 at 02:02PMNo action shots of soldering cause that took two hands, but theres the finished! #fb01 https://t.co/uA8Pjg9QDHhttp://twitter.com/mikerugnetta/status/1437839111692369925
September 14, 2021 at 02:03PMTurn that Memory Power ON! Passes service mode memory check, and turns on normally! I gotta get back to work-work, but very excited to see how this changes things. #fb01 https://t.co/iKbFT8OdBqhttp://twitter.com/mikerugnetta/status/1437839559698653194
September 14, 2021 at 02:09PMhow it started hows its going #fb01 https://t.co/k9M69OwhWzhttp://twitter.com/mikerugnetta/status/1437840922004398086