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> also woo I just got a TI 99/4A mint condition for $20
<natarii> m4t: do you remember what seller sold you those fake 2612s?
<cr1901_modern> I have two specimens of the CPU used in the TI 99 (forget it's name)
<m4t> natarii: ya 1 sec
<natarii> same one that tried to rip me off then. thanks
<natarii> mine looked identical but "2017" date code
<andlabs> lol
<andlabs> I'll keep that in mind, thanks
andlabs has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
andlabs has joined ##yamahasynths
Xyz39808 has quit [Ping timeout: 265 seconds]
Xyz_39808 has joined ##yamahasynths
_whitelogger has joined ##yamahasynths
ej5 has quit [Quit: Leaving]
l_oliveira has quit [Quit: ChatZilla 0.9.92-rdmsoft [XULRunner 35.0.1/20150122214805]]
Xyz_39808 has quit [Read error: Connection reset by peer]
Xyz_39808 has joined ##yamahasynths
Xyz_39808 has quit [Read error: Connection reset by peer]
cr1901_modern1 has joined ##yamahasynths
cr1901_modern has quit [Ping timeout: 240 seconds]
l_oliveira has joined ##yamahasynths
andlabs has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
cr1901_modern has joined ##yamahasynths
cr1901_modern2 has joined ##yamahasynths
andlabs has joined ##yamahasynths
cr1901_modern1 has quit [Ping timeout: 245 seconds]
cr1901_modern has quit [Ping timeout: 240 seconds]
* cr1901_modern2 looks at nickname
<cr1901_modern2> Oh COME ON!
cr1901_modern2 has quit [Quit: Leaving.]
cr1901_modern has joined ##yamahasynths
<ZirconiumX> cr1901_modern: Perhaps you weren't modern enough?
<cr1901_modern> Well, "modern" when I first start using this handle was meant to distinguish the handles I have registered on vintage machines (CR1901_286, CR1901_8088)
<cr1901_modern> But seeing as this laptop is nearly 8 years old now, can it really be called "modern"?
<cr1901_modern> Maybe I should reuse "cr1901_semimodem".
<ZirconiumX> Mmm, the keming
<cr1901_modern> Indeed. Of course most ppl just think I'm half a modem
<ZirconiumX> cr1901_nullmodem
<KitsuWhooa> well...
<KitsuWhooa> weechat does cut it to cr1901_mode+
<KitsuWhooa> so my brain does thing it's modem :p
<ZirconiumX> So my username just barely fits?
* ZirconiumX hugs KitsuWhooa
<KitsuWhooa> yup
<KitsuWhooa> it's possible I tweaked the default
<KitsuWhooa> (and set it to long enough to fit your name >.>)
<ZirconiumX> Hahaha
<ZirconiumX> Well, I mean, "ZirconiumX" and "KitsuWhooa" are the same length
<KitsuWhooa> true :p
andlabs has quit [Ping timeout: 245 seconds]
UnluckyPony has joined ##yamahasynths
SceneCAT has quit [Ping timeout: 265 seconds]
andlabs has joined ##yamahasynths
Xyz_39808 has joined ##yamahasynths
<whitequark> ok so
<whitequark> ymf262 has four channel sound
<whitequark> who the fuck used four channel sound in 1980s and for what purpose
<whitequark> i can't come up with anything
<Ultrasauce> the dark side of the moon had a quadraphonic mix done in 1973
andlabs has quit [Ping timeout: 276 seconds]
<whitequark> wooooooow, i just added stereo support for ymf262
<whitequark> and
<whitequark> wow the difference is incredible
andlabs has joined ##yamahasynths
<andlabs> yes, surround sound
<andlabs> which was supported by... ??????
<andlabs> laserdisc, maybe???
<andlabs> does the ymf272 have PCM?
Xyz_39808 has quit [Ping timeout: 264 seconds]
<whitequark> ymf262 does not
<whitequark> fm only
<whitequark> which is why im so puzzled
<cr1901_modern> Surround sound w/ FM chips seems really goofy to me unless you're _really_ good at making sound effects w/ the chips.
<cr1901_modern> E.g. 4 speakers on each corner of the screen of an arcade cabinet. You could simulate, say, a helicopter flying by with the top 2
<cr1901_modern> whitequark, is the gateway up (and what's the link again)?
<cr1901_modern> I should actually bookmark it
<whitequark> well it's up but it doesn't work because webaudio is fucked
<cr1901_modern> ahhh
<cr1901_modern> maybe for the best, I of course was going to do some utterlyAccursedRegWrites
<whitequark> no
<whitequark> it's fine
<whitequark> the problem is network latency causing horrible stuttering
<cr1901_modern> A MIDI controller you build yourself. Using a cardboard box as an enclosure.
<cr1901_modern> whitequark: Is this a bug in the gateway that just surfaced b/c your latency was fine before today? All the files I created prior using the gateway sounded fine.
<whitequark> cr1901_modern: no
<whitequark> the *files* are fine
<whitequark> the *playback* via webaudio... is not
<cr1901_modern> ahhh
<whitequark> oh god
<whitequark> the morons who designed webaudio made it so that an asynchronous audio resampling api still uses the main thread
<whitequark> on which i'm trying to... well... schedule audio in real time
<whitequark> which i only have to do because the morons who designed webaudio did not conceive of giving me a "half empty" event so i have to do some stupid tricks with timelines and so on
<whitequark> which i only need to do because they don't let me reuse resampler state in the first place
<cr1901_modern> >asynchronous audio resampling api still uses the main thread
<cr1901_modern> Gotta consider those single core machines running web browsers /s
Xyz_39808 has joined ##yamahasynths
<whitequark> ok i think i fixed it
<whitequark> cr1901_modern: https://gateway.whitequark.org/yamaha/
<cr1901_modern> thanks, will do my cursed stuff after I eat
<andlabs> there are surround FM sound cards for computers
<andlabs> ...NOW
<andlabs> not in the 80s
<cr1901_modern> But why?
<andlabs> because adlib fanatics, I guess????
<andlabs> and yes, this does use the YMF262
<cr1901_modern> Huh, that makes 3 adlib clones I know about
<cr1901_modern> ej5's this one, and another one I can't remember the name of
<andlabs> this company sells one called the "radlib"
<andlabs> which is a proper clone
<andlabs> there's also OPL2LPT
<cr1901_modern> OPL2LPT kinda skeeves me a bit. You either have to patch games to use it, or run a TSR that's 286 and above only that traps I/O accesses to the sound card I/O reg and redirects to the LPT port
<cr1901_modern> you can guess that the latter method doesn't always do the writes in a timely manner.
<cr1901_modern> Also found the other two Adlib clones I know about: Sergey Malinov did one, and AApro also sells one
<cr1901_modern> And radlib makes 5
Xyz_39808 has quit [Ping timeout: 250 seconds]
Xyz_39808 has joined ##yamahasynths
<Foone> ej5's adlib clone is based on Sergey Malinov's, btw.
<Foone> tube tube just cleaned it up to look more like an adlib card
<whitequark> hey, what's the OPM clock divisor for master->dac?
<whitequark> 64?
<andlabs> is Zoey Goldstein one of you?
<cr1901_modern> whitequark: At the pin, the OPM clock is immediately divided by 2, and there are 16 bits for 2 channels, so 64 checks out
<cr1901_modern> Divind the clock by 64 also matches up with the approx correct sample rate of 56kHz
<cr1901_modern> Foone: Oh interesting I didn't know that
<cr1901_modern> andlabs: I've never heard of that name I'm afraid
<whitequark> 55930 Hz is what i get
<cr1901_modern> close enough :P. The important part I've always kept in the back of my head is that the sample rate on these chips exceeds the CD/mp3
<whitequark> do you know how to reset it correctly?
<cr1901_modern> bring /IC clear down for 32 cycles IIRC
<Foone> yeah, tube tube's page says as much. I'm not sure how much of it was cosmetic changes and how much was functional changes, but he says he started with Sergey's OPL2 and changed it based on pictures of the adlib: http://tubetime.us/index.php/2016/07/22/a-reproduction-adlib-sound-card/
<whitequark> bleh
<whitequark> i guess i can't reset it via registers alone?
<whitequark> i get some sort of glitch at the very start
<cr1901_modern> sure you can do that too- zero out the regs, just takes longer
<whitequark> yeah but two notes at the very start are nondeterministically corrupted for some reason
<cr1901_modern> There's no "reset the core" bit you can set
<cr1901_modern> Incidentally, when I used the JT51 core, I _had_ to zero out the regs. I never determined whether that was a core bug, or /IC does a half-assed job of clearing the regs
<whitequark> are you sure zeroing the regs actually works
<whitequark> because it doesn't work for me.
<whitequark> yeah no
<whitequark> i added some silence at the start of the file
<cr1901_modern> I only tested zeroing the regs on an FPGA core.
<whitequark> i get some VERY LOUD shit
<cr1901_modern> oh shit
<cr1901_modern> I forgot something important
<cr1901_modern> zero would mean ZERO attenuation
<whitequark> gaaaaah
<whitequark> i THOUGHT something like this
<whitequark> this almost works
<whitequark> i get one off-key note at the start
<whitequark> again, only sometimes
<whitequark> and one slightly wrong percussive note too
<whitequark> oh btw
<cr1901_modern> hmm interesting
<whitequark> what's the address wait time?
<cr1901_modern> I don't remember offhand. There is a busy bit you can query on OPM.
<whitequark> yeah but i don't do that on glasgow because it's annoying that they have it only on some chips
<whitequark> they provide latency for data writes, 68
<cr1901_modern> In my own FPGA core code (the JT51 was created from logic analyzer traces), I wait for the busy bit for both addr and data: https://github.com/cr1901/ymsoc/blob/master/ymsoc/firmware/libym2151/ym2151.c#L79-L84
<cr1901_modern> >yeah but i don't do that on glasgow because it's annoying that they have it only on some chips
<cr1901_modern> Oh I see... uhh, Idk offhand. The application manual indeed provides a data latency, but not one for addresses.
<whitequark> using 12 clocks like OPL2 seems to work
<whitequark> 8 does not work
<cr1901_modern> 68 would be a safe, likely very conservative number ;)
<cr1901_modern> ahhh
<cr1901_modern> Curious, could you hold the /IC pin down on power on and keep it held and listen if any sounds come out?
<cr1901_modern> (if you have a way to cut power to the chip and power it back on)
<whitequark> can't check right now
<whitequark> maybe later
<whitequark> cr1901_modern: try this https://gateway.whitequark.org/yamaha/
<whitequark> since i dont implement any of the PCM chips
<cr1901_modern> Sure. And just checked my copy of the manual- there's no timing info for /IC (because why put important information like that in the manual?)
<cr1901_modern> I know just the song to try :)
<whitequark> which?
* cr1901_modern is looking for it
<cr1901_modern> Shit, it looks like a pack hasn't been released yet
<cr1901_modern> Trying now
<cr1901_modern> whitequark: Sounds good
<whitequark> hm
<whitequark> have you captured that from your own core or something?
<whitequark> ah
<whitequark> it zeroes every register
<whitequark> even the undefined ones
<whitequark> (i have debug info for this in my player)
<cr1901_modern> And I forgot to loop it, so I was wondering why it cut off lmao
<cr1901_modern> Well, /IC might only reset internal state and not the registers. In practice, the register contents are undefined, but some bits seem to like to tend towards zero >>
<whitequark> oh.
<Foone> I'm ordering some cheap PCBs of the ISA OPL2, and I'll have some spares if anybody wants one
<cr1901_modern> e.g. CT1 and CT2 are GPOs, and I've never seen them stuck to one after reset in my own testing
* cr1901_modern waves to Foone
<cr1901_modern> (err, GPIOs*, but you can only use them as outputs)
<whitequark> GPOs yeah
<cr1901_modern> The song I _wanted_ to play was Drastic Days Will Come, but I forgot that nobody actually ripped that to VGM yet: https://youtu.be/X2bLh6M6VLU?t=120
<Foone> cr1901_modern:can do! I'll let you know when it shows up. probably within ~2 weeks
<cr1901_modern> Not to mention, Idk if it uses the PCM chip or not
<cr1901_modern> Foone: Tyvm
<cr1901_modern> (Same composer as Spindizzy...)
<whitequark> i really should make a board with every chip I have
<whitequark> and just make them addressable
<whitequark> but i need some sort of common bus for that
<whitequark> ... isa?
<Foone> ISA!
<cr1901_modern> Did somebody say ISA?
<Foone> I've thought about doing something like that: building an ISA board that I can stick every audio card into
<TD-Linux> ugggh I haven't touched glasgisa in weeks ;_;
<Foone> I was also thinking of a building a sort of Smart ISA Backplane where I can have multiple ISA slots and remotely turn them on and off, using a microcontroller
<TD-Linux> still something I want to do eventually, but does anyone want to take up the mantle?
<whitequark> TD-Linux: oh no ;w;
<Foone> then I could do some comparative card testing (for video cards, for example) by doing a "turn of slots 1-5, turn on slot 6" and then rebooting the PC
<TD-Linux> whitequark, I will still do it, I just feel bad about being slow about it. if you are patient enough it'll still get done
<cr1901_modern> I am interested in the project as a spectator, but designing a board like that is not something I can really do right now.
<TD-Linux> what actually happened is I took apart a CRT and now I'm building a glasgCRT
<whitequark> TD-Linux: oh, that's totally fine then
<whitequark> if it gets done within like
<whitequark> a year or whatever
<whitequark> im happy
<cr1901_modern> TD-Linux: turning a raster scan monitor into a vector scan monitor :P?
<TD-Linux> no, but hopefully making it multiscan
<TD-Linux> driving a raster scan yoke vector style exceeds the abilities of current power electronics
<TD-Linux> (at least without multi-kilowatt levels of dissipation)
<Foone> it's a CRT and a space heater!
<cr1901_modern> I see
<cr1901_modern> It's the combination CRT and space heater
<cr1901_modern> okay I fucked up that meme
<cr1901_modern> whitequark: Did you detach the chip? Undervolting to 3.3 produces silence lol
<cr1901_modern> 4.0 is fine
<cr1901_modern> BISECTION TIME!
<whitequark> cr1901_modern: haven't touched the chip
<whitequark> 3.4 is usually around where they start to misbehave
<whitequark> oh, note that it's overclocked to 6 MHz right now
<cr1901_modern> 3.65 produces glitchy output, but it's not fun to listen to... owww
<TD-Linux> Foone, anyway such a smart backplane would be an excellent companion to glasgisa. I currently planned to rely on ebay backplanes.
<TD-Linux> Foone, bonus points if it itself is an isa peripheral with an io port for switching the card
<TD-Linux> (though really I'd be happy with a rotary knob)
<cr1901_modern> I need someone to print me one for the Super Blooper
<whitequark> ugh i need to add timeouts
<whitequark> people keep crashing the chip by undervolting it too muc
<cr1901_modern> Oops
<whitequark> yep added
<cr1901_modern> 3.5 sounds much better
<cr1901_modern> and by better I mean far more mangled
<whitequark> ha
<cr1901_modern> the left channel is completely gone, and the guitarist decided to do a solo at the end
<cr1901_modern> 3.4 is unrecognizable :P
<whitequark> lol
<cr1901_modern> It's like the FM version of Crazy Bus: https://www.youtube.com/watch?v=sC0cvwnG0Ik
<cr1901_modern> (Btw, spoiler alert: This is a troll game. I was so disappointed to learn this, rather than it being a sincere attempt at a Genesis game in BASIC)
<cr1901_modern> http://gopher.wdj-consulting.com:70/store/spindizzy.wav For those who wish to listen
<TD-Linux> slightly concerned that I've already viewed this youtube video
<TD-Linux> is there a vgm of that crazy bus song. maybe if you undervolt it, it will be good
<Foone> maybe if you overvolt it the song will die and no one will have to listen to it again
<whitequark> cr1901_modern: so one idea i had was to make "ymasm"
<whitequark> a way to enter register writes using a convenient symbolic syntax
<whitequark> "ymdisasm" too of course