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
<TD-Linux> ej5, don't forget MOV and MP4
<ej5> ahh right
<Lord_Nightmare> IFF is big endian, RIFF is little endian; riff technically requires there to be an outer container, while MID, being a RIFF format, doesn't have one. so .rmi exists, which is a MID file placed as (more or less) a subsection of a file, which allowed for embedding .dls samples, karaoke info, and other stuff inside a single file
<Lord_Nightmare> then microsoft got annoyed with the .rmi format and created a very short lived format called .sgt which is like midi on crack, which is used by la mulana, final fantasy 8, and maybe a dozen other games
<Lord_Nightmare> its basically a more convoluted version of .rmi
<Lord_Nightmare> and of course completely incompatible, and very annoying to play back
<Lord_Nightmare> i assume it was created to allow a singular file to have loop points, an intro, and an outro, and still be a midi file
<Lord_Nightmare> sgt files also can use external .dls sample files relative to their own path, and not have to embed them
<Lord_Nightmare> la mulana uses this extensively for its "SCC++" mode
<Lord_Nightmare> and this is why its so difficult to play back the ff8 and la mulana musics accurately outside their respective programs
<Lord_Nightmare> if you can find the directx sdk that's old enough you can use the directmusic headers/etc in there to play them
<Lord_Nightmare> but since so few games actually USE .sgt, there's very little 3rd party/open source support
<Lord_Nightmare> its a very complex format. probably not as complicated as yamaha's .smaf format (which is IFF, not RIFF! big endian) but pretty complex
<Lord_Nightmare> i don't even want to get in to the .smaf format. its very poorly preserved, meant for ringtones in the early 2000s
<Lord_Nightmare> but its spec documentation is out there and it seriously scares me
<Lord_Nightmare> its probably not the worst out there but one of the worst designed-by-committee file formats i've ever seen
m4t has quit [*.net *.split]
ValleyBell has quit [*.net *.split]
m4t has joined ##yamahasynths
ValleyBell has joined ##yamahasynths
<cr1901_modern> ej5: That fake USBC connector is very deep into Poe's Law territory
<Lord_Nightmare> you missed an opportunty to make the connector have 2 prongs the exact distance apart as a standard us 2 prong wall jack
<Lord_Nightmare> and width
<ej5> yeah i know lol
<TD-Linux> I've used a table at a hotel where USB-A was perfectly the right width and plugged my laptop right in
<Lord_Nightmare> maybe it could be a documented 'fast charge' mode :P
<TD-Linux> ej5, come to the dark side of magnetic deflection
andlabs has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
Xyz_39808 has quit [Ping timeout: 245 seconds]
cr1901_modern1 has joined ##yamahasynths
cr1901_modern has quit [Ping timeout: 245 seconds]
<cr1901_modern1> https://twitter.com/yuzokoshiro/status/1189196458936823808 Alternate universe StarLight music
cr1901_modern1 has quit [Client Quit]
andlabs has joined ##yamahasynths
cr1901_modern has joined ##yamahasynths
andlabs has quit [Ping timeout: 245 seconds]
<m4t> https://www.youtube.com/watch?v=dOvfINPELDg ym2608 "oscilloscope" view
andlabs has joined ##yamahasynths
andlabs has quit [Ping timeout: 245 seconds]
andlabs has joined ##yamahasynths
andlabs has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
ej5 has quit [Read error: Connection reset by peer]
andlabs has joined ##yamahasynths
_whitelogger has joined ##yamahasynths
andlabs has quit [Quit: Textual IRC Client: www.textualapp.com]
andlabs has joined ##yamahasynths
Xyz_39808 has joined ##yamahasynths
<cr1901_modern> Lord_Nightmare: "midi on crack" is an interesting phrase... I'm morbidly curious now
<Lord_Nightmare> https://ccrma.stanford.edu/~sywon/courses/asf/asf.htm has some random sgt files and source code
<Lord_Nightmare> I'm trying to find the sgt spec, it WAS on microsoft's msdn at one point
<Lord_Nightmare> there it is
<cr1901_modern> https://ccrma.stanford.edu/~sywon/courses/asf/11.jpg A slider whose two ends are "original" and "queer"
<cr1901_modern> I... got nothing
<cr1901_modern> "The greater value of slider is, the more original chord pattern convert to queer chord."
<Lord_Nightmare> I can't vouch that people at ccrma had the best taste or tact back in 2002 or whenever that was written
<Lord_Nightmare> also note the levels are 'week' and strong
<cr1901_modern> Yea, this GUI is a lot to take in tbh lol
<cr1901_modern> Anyways "midi on crack" makes me think of something truly horrifying
<cr1901_modern> Having had trouble understanding MIDI even tho it's supposed to be easy
_whitelogger has joined ##yamahasynths
<Lord_Nightmare> ok, maybe 'midi on crack' is a bit extreme for describing the sgt format
<Lord_Nightmare> its more like an unnecessary design iteration
<ValleyBell> That reminds me that I wanted to write an SGT -> MIDI converter once. (because DirectMuusic Producer's MIDI export is "meh")
<ValleyBell> Too bad I never got around doing it.
_whitelogger has joined ##yamahasynths
<KitsuWhooa> ValleyBell: the FW for the CM-32P accesses an LCD screen? That's really neat
* KitsuWhooa wonders if we can bodge one on the real thing :p
<ValleyBell> see CM-64 service notes, page 10
<KitsuWhooa> Ooooh yeah
<KitsuWhooa> http://llamamusic.com/d110/d-110_info.html#OLED apparently there are compatible displays out there
<KitsuWhooa> I wonder if a datasheet would help figure out why it hangs :p
<KitsuWhooa> although it wouldn't make sense because it runs without it
<ValleyBell> I'm pretty sure it wait for some interrupt that doesn't trigger.
<ValleyBell> *waits
<KitsuWhooa> I do wonder why they'd use an LCD and not just serial out
<ValleyBell> According to MAME, the D-110 FW reads the status flags. But the 32P FW doesn't seem to do that at all.
<KitsuWhooa> the status comes from the screen, right?
<ValleyBell> I think so.
<KitsuWhooa> I'd assume that they mask it somehow
<KitsuWhooa> maybe one of the asics returns bogus data
<KitsuWhooa> actually, no
<KitsuWhooa> you said it doesn't read
<KitsuWhooa> hm
<KitsuWhooa> a logic analyser would've been handy :p
<ValleyBell> It sort of makes sense because the LCD is optional.
<KitsuWhooa> yeah
<KitsuWhooa> but why would it hang
<KitsuWhooa> unless something else fires the interrupt
<KitsuWhooa> I just realised, that's what the unpopulated CN4 was for
<KitsuWhooa> https://i.gyazo.com/8ed9ddbd9b9790ac1c151da1a7e0326b.jpg on the CM-64 the socket is populated (white socket on the top left)
<ValleyBell> maybe it's some sort of timer
<KitsuWhooa> Interesting
<KitsuWhooa> The CM-32P doesn't even have the connector labelled
<KitsuWhooa> it just has holes in the PCB
<KitsuWhooa> CN4 is probably something else
<KitsuWhooa> the switchboard connector is also not populated
<KitsuWhooa> Either way, both the LCD data and switchboard connections go through IC8, so maybe that's related. /shrug
<ValleyBell> ... okay, the missing interrupt source is "HSI.0"
<KitsuWhooa> fair enough
<KitsuWhooa> if I had to guess, pin 3 seems to also go to IC8
<KitsuWhooa> er, nope, wrong side of the IC
<KitsuWhooa> I should've taken pictures of the bottom side of the pcb... Oh well
<ValleyBell> According to the CM64 service notes HSI0 is indeed connected to "INT" of IC8.
<KitsuWhooa> makes sense
<KitsuWhooa> I keep forgetting we have schematics :p
<KitsuWhooa> I should take snapshots of that video and convert them to a pdf or something
<KitsuWhooa> I just did it, damn it :p
<ValleyBell> I got the video with youtube-dl, but the JPGs seems to be of a less-good quality than one that was posted here earlier.
<KitsuWhooa> I extrcated pngs from the video, and they seem pretty good
<ValleyBell> so I'm not 100% sure whether or not I got everything right
<KitsuWhooa> I trimmed them using imagemagick
<KitsuWhooa> I guess it's possible IC8 fires interrupts after every write or something dumb like that
<cr1901_modern> That's dedication... I like!
andlabs has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
andlabs has joined ##yamahasynths
andlabs has quit [Ping timeout: 246 seconds]
andlabs has joined ##yamahasynths
andlabs has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
andlabs has joined ##yamahasynths
andlabs has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
andlabs has joined ##yamahasynths
Xyz39808 has joined ##yamahasynths
Xyz_39808 has quit [Ping timeout: 250 seconds]
ej5 has joined ##yamahasynths
<ValleyBell> http://vgmrips.net/misc/CM32P-TestMode.png Thanks to a small hack, I got it to sort of work.
<ValleyBell> It boots into test mode when some checks during the init phase fail.
<Lord_Nightmare> what i'm fearing is that emulating the dsp on the mt32 will be much harder than expected. I know sergm figured out how it worked but he wasnt' able to explain it well, just pulling the various IIR factors out of its code
<Lord_Nightmare> its a fixed function BOSS 'reverb' dsp, intended for the BOSS(roland sub brand) rv-2 pedal
<Lord_Nightmare> it ended up getting used in a lot of mt-32 series stuff; the d-50 uses a different reverb chip, which might be a similar dsp but with on-chip mask rom; that one is NOT dumped
<Lord_Nightmare> but the mt-32, cm-32l, d-10, d-110, d-20, d-220 all use the BOSS chip
<Lord_Nightmare> its a weird dsp: it uses 256-word, 32(?) bit wide opcodes read in an endless cycle from the ROM
<Lord_Nightmare> or maybe its 64 word 'programs' each 256 bytes long
<Lord_Nightmare> i forget
<Lord_Nightmare> i know when you're changing the dsp parameters you're literally changing the upper address bits of the reverb ROM
<Lord_Nightmare> it has i think 64k of its own DRAM which its responsible for refreshing
<Lord_Nightmare> if i recall correctly it uses a similar 'approximation' for multiplication to the la32 itself internally
andlabs has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]