ChanServ changed the topic of ##yamahasynths to: Channel dedicated to questions and discussion of Yamaha FM Synthesizer internals and corresponding REing. Discussion of synthesis methods similar to the Yamaha line of chips, Sound Blasters + clones, PCM chips like RF5C68, and CD theory of operation are also on-topic. Channel logs: https://freenode.irclog.whitequark.org/~h~yamahasynths
andlabs has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<Foone_> midi in win3.1 was a clusterfuck. I remember I spent a long time fighting with it to get it somewhat working with my generic soundblaster clone card, and in the end it had some weird misconfigurations which caused songs to be played wrong
<cr1901_modern> The windows 3.1 story in a nutshell
<Foone_> I heard a version of Virtual Insanity that way, and it wasn't until years later that I heard the real version of the song and was greatly disappointed that it wasn't as good as my glitched-up version
<cr1901_modern> If I could clone myself about 5 times, I think I would work on a reimplemenation of Windows 3.1
<cr1901_modern> it's so completely inaccessible lmao
<cr1901_modern> FreeDOS is what? 20 years old now? And bless the project, but it still can't run Win 3.1 in Enhanced Mode correctly
<ej5> the biggest windows 3.1 midi mystery is who composed canyon.mid
<cr1901_modern> that's not a mystery?
<cr1901_modern> I'm pretty sure that's been known for years, and he composed it on a Mac :P
<cr1901_modern> ej5: Snark Barkers arrived while I was in the hospital, tyvm for your effort. I will need to acquire some parts to start building mine :D
<ej5> ahh the composer is indeed known, at least for canyon.mid. there are others that are not
<ej5> np cr1901, hope you're on the path to healing
<cr1901_modern> I'm doing alright, thanks :). I have to go back into the hospital for round 2/8 in early June, but it's only for 3 days. HOPEFULLY the most hellish part has passed.
<ej5> chemo?
<cr1901_modern> indeed
<ej5> good friend of mine had colon cancer and had to go through that, but the chemo really wiped him out
<ej5> apparently it's tougher when you're younger, and he was in his early 20s
<cr1901_modern> it's called Hyper-CVAD... seems the way it affects me is "first 4-5 days I don't feel anything, the next 2 days I'm completely wiped, then after that I'm abpout 75% back to normal"
<cr1901_modern> (chemo started last Wednesday, I felt wiped this Tues and Wed. Felt fine this Thurs and today.)
<ej5> odd that it has a lag like that.
<cr1901_modern> they said that lag was normal, actually... the first 3 days was the "C" in CVAD... I think the "VAD" on the last day was what f***ed with me the most
<cr1901_modern> I _think_... not sure
<ej5> another thing i remember is that it affected his memory, so he got super forgetful
<ej5> and that lasted for a few months. it's good i was around to help out--he left the stove on a few times
<cr1901_modern> :(... it's good he had a good support network
<cr1901_modern> I haven't been forgetful... just "blah" and drained. I'm trying to get things back to normal asap
<ej5> you've got people to take care of you?
<cr1901_modern> Yes... parents are helping out
<cr1901_modern> (I understand/appreciate that many ppl in here and many friends do not have this option)
<ej5> that's really good. keep fighting, you're going to beat this.
<cr1901_modern> :). Thanks <3. And I will win!
<ej5> :)
<cr1901_modern> I'll prob order the parts for a Snark Barker during the next session so I can look forward to it when I come back. >>
<cr1901_modern> Incidentally, I still owe digshadow some open-tl866 stuff
<cr1901_modern> so I may add support for the relevant 8051 chip while I'm at it
<ej5> yeah that'll be fun to play with, especially the cms chips
<cr1901_modern> depending on how I feel
<ej5> the 8051 is a challenging chip, i've got bits and pieces of the circuit reverse engineered. it's surprisingly complicated.
<cr1901_modern> When (not if ;)...) the DSP ROM is dumped, I would be interested in working on a clean room version
<ej5> that would be pretty cool. we actually have just about enough documentation to go on at this point
<cr1901_modern> that could be safely distributed a la PhoenixBIOS
<ej5> may make sense to start with the china clone firmware, it seems to work fine with every game i've thrown at it
<ej5> only thing i haven't been able to test is SBMIDI but nobody uses that anyway
<cr1901_modern> wonder if the Chinese REs had a lab to decap the 8051 or they knew a special debug mode to read out the contents.
<ej5> there's definitely a debug mode, but i haven't been able to find it yet.
<ej5> thing is, the 8051 uses a diffusion or implant ROM so you can't see anything even after you decap it.
<cr1901_modern> Of course... b/c why should things be simple :P?
<ej5> i'm sure the three letter agency knows, after all, they have an 8051 mode for ghidra
<cr1901_modern> "does it work?"
<ej5> i've already done a mostly complete RE using D52. i might do it again using ghidra just for practice
<cr1901_modern> Oh right, I was supposed to open kicad today to redesign a simple board for practice. But I didn't due to lack of interest.
<cr1901_modern> I seem to have this "wall" when using kicad
<ej5> you definitely need to be in the mood for layout, hehe
<ej5> to me it's a little like playing tetris, or maybe factorio. it can be relaxing
<cr1901_modern> In this case, I kinda-sorta made a physical prototype
<cr1901_modern> I want to replace my FPGA-to-floppy cable breakout board. I wanted to remove the reliance on a 5v rail completely
<cr1901_modern> So there are a few level shifters that meet this requirement
<ej5> you're doing a kryoflux with an fpga?
<cr1901_modern> floppy-to-UART bridge, but yes
<ej5> as in USB UART?
<cr1901_modern> I have an icestick FPGA dev board. It's a small FPGA- perfect for a floppy controller w/ room to spare
<cr1901_modern> right... the FPGA talks to an FTDI chip w/ does the UART crap
<ej5> so does the FPGA do the phase transition decoding or do you just pipe that out the UART?
<cr1901_modern> the former... I put everything except "blit out the bytes" on the FPGA. The BRAM is used to store a sector (or track) of floppy data plus about 3 8-bit registers of status info
<cr1901_modern> the host then reads this out of the UART in a FIFO fashion
<ej5> what sort of formats are you designing it to handle?
<cr1901_modern> IBM System 34 (snob speak for "the floppy format in your IBM PC" :P)
<cr1901_modern> This is a project I did in 2016, I put by the wayside. Then wq got interested in floppies late last year and she's doing her own version. I kinda want to finish what I started even if it's redundant.
<cr1901_modern> I'd be interested in learning how apple formats work at some point, but based on 4am's work, they are much more screwed up b/c much more of the decoding is software-based.
<cr1901_modern> In PC land, the most creative ppl typically get is use a disk controller w/ a "write raw track" command to store copy protection data that can't be reliably dup'd on 765 clones
<ej5> yeah
<ej5> amiga is another weird one, there's one sector that fills the entire track
<cr1901_modern> Amiga reminds me kinda-sorta of PC, but yes w/ the "track granularity" restriction
<ej5> and i've got an HP machine with an odd 3.5" format that uses 256 byte sectors except for a single 128 byte sector that just stores the wear information (# of writes)
<ej5> i ended up using a Saleae logic pro to digitize the raw phase change data, then wrote a python program to decode it
<ej5> i'm rather proud of the PLL, it had slightly more intelligence than a brute force approach
<cr1901_modern> nothing wrong w/ that... I just thought it was more fun to do it on FPGA :P
<cr1901_modern> (for some value of "fun")
<ej5> it would be interesting to try different approaches for the PLL, wq has her own one too i think
<cr1901_modern> I have an ipython notebook dedicated to a design trying to digitize an analog PLL into a digital equivalent. While I was able to get analog simulation to match pretty closely the digital simulation
<cr1901_modern> I ultimately didn't understand why the design worked, so I shelved it
<ej5> for mine i use the fact that the pulse widths are always 2x, 3x, or 4x some base clock rate
<cr1901_modern> there was some fixed point precision and scale factor mismatch when I tried doing the math, and I couldn't figure out why the numbers didn't come out nice
<ej5> so i take an incoming pulse width and calculate the least delta to each of 3 bins which contain a timing value
<ej5> then the bin gets recalculated to be closer to the incoming pulse width, but only a tiny amount
<ej5> so as you read the track, the bins get closer and closer to ideal
<cr1901_modern> that works great as long as you have a floating point multiply :)
<cr1901_modern> to handle those small corrections
<ej5> you can do it with an accumulator
<cr1901_modern> oh?
<ej5> just have to make it wider
<ej5> it's an old DSP trick, 48 bit accumulator with 32 bit input words, for example
<cr1901_modern> ahhh
<ej5> another way to look at it is the numerically controlled oscillator
<cr1901_modern> ohhh right, I've done that before
<cr1901_modern> My current approach in gateware is to use a counter that counts up to 16, and starts at 4. Whenever a pulse is seen, reset the counter to 4. The data window toggles every time the counter counts up to 8.
<cr1901_modern> (The idea being that when you see a pulse from the floppy drive, the data window is halfway over)
<cr1901_modern> you have to check both polarities of data window for the A1 and C2 sync bytes, but the 765 controller has to do that already
<ej5> yeah i think for sync bytes i encoded those as pulse deltas manually, so polarity doesn't matter
<cr1901_modern> Aaand, that was as far as I got when I stopped :P. Next step would be to grok the CRC crap... _again_
<cr1901_modern> and I _think_ it would be downhill from there
<ej5> looks like the crc includes the header bytes
<cr1901_modern> incl the sync? That's weird
<ej5> a1 a1 a1 fb + data + crc
<ej5> or fe instead of fb if it's a sector mark
<cr1901_modern> a1 by itself is legitimately unique in an MFM stream (as is two c2s in succession)
<ej5> yeah the a1 that breaks the mfm rules
<cr1901_modern> Idk if controllers immediately lock after seeing a single a1 or they need to see all 3
<ej5> it reminds me a bit of the extra symbols in 8b10b
<cr1901_modern> c2 actually _isn't_ unique, as I recently learned. But _two_ c2s in a row _is_ unique
<cr1901_modern> so that's why it's used as a sync as well
<cr1901_modern> What I call "coding violations" in MFM is called a "comma" in 8b10b apparently
<ej5> yeah 8b10b is pretty fun eh
<cr1901_modern> there's two versions I think? One for HDMI and one for everything else (SATA, PCIe)
<ej5> maybe, i'm only familiar with the SGMII one
<cr1901_modern> One in theory could construct an 8b10b code optimized for floppies (transition minimized), provided the analog frontend can handle it
<ej5> interesting
<cr1901_modern> Xyz39808: Thanks, RT'd for later :P
<Xyz39808> o/
<ej5> you could also make more possible pulse widths instead of just 3
<ej5> so instead of 2x, 3x, and 4x, you could have 2x, 2.5x, 3x, 3.5x, and 4x
<cr1901_modern> http://www.mirrorservice.org/sites/www.bitsavers.org/pdf/shugart/_specs/SA850_450_Read_Channel_Analysis_Dec79.pdf This document is 40 years old lmao. But it's an interesting internal memo from Shugart.
<cr1901_modern> About the analog components of floppies
<cr1901_modern> I tried reaching out to Roger Stromsta. Found out he's been dead for a while :(.
<ej5> hmm, IBM all pass filter...
<cr1901_modern> One thing about this memo... even the Shugart engineers aren't really sure how to model the disk medium w/ equations
<cr1901_modern> they "handwave" it by calling it "gaussian pulses"
<ej5> interesting, i don't think they were able to model them even back in the 1950s
<ej5> i remember my grandfather talking about an all pass filter for pulse slimming the stuff coming off the disk
<cr1901_modern> I asked on vcfed a while back after reading the memo... someone who worked for IBM said "it was possible to model magnetics analytically, but it was tedious and the stuff of PhD theses".
<cr1901_modern> I would have to dig up that forum post tho
<cr1901_modern> I've never seen an all-pass filter in a non-DSP context tbh :P
<ej5> he built one for the RAMAC and was able to double its capacity just by crowding the bits closer together
* cr1901_modern needs to read about pulse slimming
<cr1901_modern> I'm sure it makes sense, but 10pm me can't visualize how changing just the phase creates slimmer pulses
<cr1901_modern> ej5: Is bitsavers mostly one person?
<ej5> yes
<cr1901_modern> I would be very curious to know how they got a hold of that document I linked... and whether anyone involved is still alive
<cr1901_modern> It's an utterly fascinating memo, a glimpse to a world of tech and design methodology that will never live again (well maybe :P)
<ej5> it does, but people use mathcad instead of manual algebra
<ej5> and also monte carlo simulations
<ej5> like all those pages of sensitivity analysis take lots of time, it's so much easier to run a monte carlo pass in spice
<cr1901_modern> Tongue in cheek, to the extent that you probably will learn how to do all this stuff by hand, even if you don't utilize it
<cr1901_modern> it's like doing RREF in linear algebra
<cr1901_modern> you should do it exactly once in your life by hand
<cr1901_modern> and then let the calculator do it forever otherwise
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
<cr1901_modern> "A-2 Linear phase analysis"
<cr1901_modern> (pdf page 50)
<cr1901_modern> huh, and I normally flippantly say "linear phase is overrated"
<cr1901_modern> apparently here it matters
<ej5> yep
<cr1901_modern> I think It would've been fun to work for Shugart in the 70s :P
<ej5> a little nuts, al was a bit hard to work with apparently, at least from the standpoint of an engineer
<ej5> my grandfather says he was a bit of a salesman
<cr1901_modern> Wonder if Jugi Tandon was better to work with. From the interviews I've seen, he's a pretty friendly guy
<cr1901_modern> But noted :P... I don't think I'd care for the "bit of a salesman" thing
<ej5> i met his grandson at a college party once, i think the apple didn't fall far from the tree lol
<cr1901_modern> If this is a bit obscure, sorry https://twitter.com/pg_kamiya/status/249735186936369153?lang=en
<cr1901_modern> But... when someone is compared to a salesman, this is what I think of
<ej5> i don't get the reference
<cr1901_modern> Inafune "created" a series called Mega Man.
<cr1901_modern> And then tried to create a spiritual successor called "Mighty No 9", which... well it was a disaster and he basically took the money and ran
<ej5> there are some interesting stories about shugart and the founding of seagate
<cr1901_modern> that linked tweet was made YEARS before mighty no 9, and I find it quite prescient
<cr1901_modern> Why was it called Seagate?
<ej5> it was originally called shugart technology
<ej5> good oral history here: http://webcache.googleusercontent.com/search?q=cache:mTHRbH3D6U4J:archive.computerhistory.org/resources/text/Oral_History/Iftikar_Syed/Iftikar_Syed_all.oral_history.2007.102658066.pdf+&cd=11&hl=en&ct=clnk&gl=us
<ej5> sorry for the awful URL but i had trouble getting the original
andlabs has joined ##yamahasynths
<cr1901_modern> I guess I should've asked a better question... why the name change to Seagate
<cr1901_modern> I'm guessing it's not a coincidence that Shugart and Seagate have the same number of syllables and each syllable begins with the same letter :P
* cr1901_modern keeps the tab open for light reading
<ej5> you'll enjoy the tractor story too
<cr1901_modern> Hahaha... can't wait
<cr1901_modern> Here's a funny urban legend I heard about... after Atari Pac Man failed, the programmer Todd Frye came in one day to see some grafitti that said "Why Frye?". According to legend, he added a bar on top of the "Frye". >>
<cr1901_modern> To represent "Why Not Frye" in boolean logic
<cr1901_modern> ej5: Jesus that tractor XD... wow, that's bold
<ej5> miniscribe was even crazier
<cr1901_modern> miniscribe always had reliability problems AIUI (like Kalok)
<ej5> at one point they shipped boxes of bricks to oem customers. the idea was that they'd sit in the oem's warehouse for months before being built into computers. so they'd take the money and finance the hardware production run, then recall the existing "hard drives" and swap them with the real thing
<cr1901_modern> That's Crazy Eddie level of crap right there
<ej5> problem: they fired the warehouse workers who packed the bricks, who went to the press
<ej5> problem: the vice president purchased said bricks from a home improvement store and put it on his credit card
<cr1901_modern> uhhh
<cr1901_modern> This is a gem
<ej5> yeah, they had lots of questionable accounting practices.
<cr1901_modern> (And the Crazy Eddie comparisons I'm making are b/c of the boldness of the fraud. Seems like Eddie was far more competent than the Miniscribe president)
andlabs has quit [Ping timeout: 258 seconds]
andlabs has joined ##yamahasynths
futarisIRCcloud has joined ##yamahasynths
andlabs has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
andlabs has joined ##yamahasynths
l_oliveira has quit [Quit: ChatZilla 0.9.92-rdmsoft [XULRunner 35.0.1/20150122214805]]
_whitelogger has joined ##yamahasynths
_whitelogger has joined ##yamahasynths
_whitelogger has joined ##yamahasynths
_whitelogger has joined ##yamahasynths
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
l_oliveira has joined ##yamahasynths
<fseidel> I have an AY-3-8910 at 1.5MHz
<fseidel> and music composed for a chip at 1.75MHz
<fseidel> I can adjust the note periods by the ratio of the clocks and those sound fine
<fseidel> but the envelopes sound like shit because there's not enough precision with the period values used
<fseidel> are there any good workarounds other than "use different music" or "don't compensate for frequency and play it lower than intended?"
<fseidel> I should note that the envelope is being used to generate a saw bassline, so it's quite audible when it's off.
l_oliveira has quit [Ping timeout: 258 seconds]
ejs__ has joined ##yamahasynths
ej5 has quit [Ping timeout: 248 seconds]
sixtysix has joined ##yamahasynths
ejs__ has quit [Quit: Leaving]
ej5 has joined ##yamahasynths
sixtysix has quit [Ping timeout: 268 seconds]