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…]
Xyz_39808 has joined ##yamahasynths
andlabs has joined ##yamahasynths
<cr1901_modern>
Lord_Nightmare: (The reality is, my STM dev boards are fast enough to emulate the DAC in software and return the retrieved values over USB... (55000 Hz * 16 bits/Hz * 2 channels is about ~1/8 USB FS B/W). I just think that's aesthetically displeasing".
<cr1901_modern>
Err 62500 since I'd run it at 4MHz
cr1901_modern1 has joined ##yamahasynths
<cr1901_modern1>
Actually, I retract that statement... need to read more about the I2S peripheral
cr1901_modern has quit [Ping timeout: 244 seconds]
cr1901_modern1 has quit [Quit: Leaving.]
cr1901_modern has joined ##yamahasynths
ej5 has quit [Quit: Leaving]
<natarii>
it would be cool to see that working. i tried to do the same with an opl2 and the i2s peripheral on esp32 but didn't have much luck
<cr1901_modern>
natarii: If willing to elaborate, where did you run into problems?
<cr1901_modern>
My snag thus far is the opl2 format is "psuedo i2s"
<cr1901_modern>
err opm (just woke up)
l_oliveira has joined ##yamahasynths
andlabs has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
andlabs has joined ##yamahasynths
andlabs has quit [Client Quit]
andlabs has joined ##yamahasynths
andlabs has quit [Ping timeout: 276 seconds]
<natarii>
cr1901_modern: same issue basically, it was a while ago but i think it wasn't happy with my word select timing
<andlabs>
okay I think I may be convinced to get a ppc mac with classic...
<andlabs>
well I wound up buying an Opcode Studio 128X MIDI interface (8 in 9 out, like the MOTU MIDI Express but I got it for $40 instead of $200 =P )
Xyz_39808 has quit [Read error: Connection reset by peer]
Xyz_39808 has joined ##yamahasynths
<cr1901_modern>
andlabs: Does it work on modern systems?
<cr1901_modern>
natarii: There should be, like, a shift register peripheral on microcontrollers that you can program to accept arbitrary shift register data
<natarii>
i thought about using the esp32's second core to just run a tight loop that reads gpio, but that's kind of messy ;p
<natarii>
and of course there's way too much latency in interrupts to use them, at least for the bit clock
<cr1901_modern>
1.6 million interrupts per second is a bit too much I imagine, even for an ARM core
<natarii>
ive been meaning to look at the PRUs on beaglebones for stuff like this
<cr1901_modern>
Oh, I'm sure a PRU would be fine for this. PRUs can do MFM hard drive decoding in real time. Just difficult to program and attached to a whole freakin' Linux system most of the time :P
<natarii>
that's cool re: mfm
<cr1901_modern>
Don't remember the project name (cc: balrog)
<natarii>
i was wondering if prus would work for rom emulation for the yamaha chips with adpcm
<cr1901_modern>
natarii: Interesting idea, I have no idea how to test it tho :P
<cr1901_modern>
I should get a modern Beagle at some point
<natarii>
yeah same
<cr1901_modern>
One thing I've learned since being in this room: ADPCM is pretty involved
<cr1901_modern>
Did not appreciate it before Lord_Nightmare explained how there's at least 2 mutually incompatible ways to do ADPCM, and that it's difficult to emulate corectly
<natarii>
well, i'd just be using data from vgms so i wouldn't have to worry about encoding it or anything. my issue is just emulating the rom/ram it's stored in
<natarii>
basically i was challenged to build a vgm player around the ym2610 ;p
<natarii>
and availability of big srams and things like that is an issue
<cr1901_modern>
Cypress still makes SRAMs up to 512kB IIRC, but they are not DIPs
<cr1901_modern>
Can the 2610 handle DRAM?
<natarii>
i don't think so. 2608 can though iirc
<andlabs>
answer: I see no reason why it shouldn't
<cr1901_modern>
Well I guess it doesn't matter as long as refresh period is less 1/55000 seconds or whatever
<cr1901_modern>
(i.e. enough time to avoid missing a sample)
<natarii>
hm, yeah
<Lord_Nightmare>
adpcm is complex but if its actually documented and CORRECTLY documented it isn't so bad
<cr1901_modern>
This is speculation of course. I'd like to create a VGM player too at some point. TheaValkyrie's is really cool
<Lord_Nightmare>
there are many cases where we're dealing with entirely undocumented or badly-flat-out-wrongly documented adpcm stuff
<cr1901_modern>
>entirely undocumented or badly-flat-out-wrongly documented
<cr1901_modern>
Oh, so basically 80's and 90's computers in a nutshell
<natarii>
doing a 2612 player has been fun
<cr1901_modern>
Do you have pics/schem for that? I don't have any 2612s
<cr1901_modern>
So re: the DAC required on some of the chips, a greenpak 4 IMO is too small. Greenpak 5 might be able to do it. The smallest MachXO2 or a Xilinx CPLD can absolutely emulate the DAC without completely destroying board real estate
<cr1901_modern>
But of course you have to deal with... toolchains.
<cr1901_modern>
natarii: In case you were wondering- I got a MIDI controller for my bday I haven't opened, and I've gotten pretty familiar w/ an easy-to-use USB stack, so I'm curious: how difficult is it to control a Yamaha chip over MIDI and create my own instruments?
* cr1901_modern
sucks at creating his own instruments in a tracker. He doesn't expect this to go any better
<ZirconiumX>
MIDI itself is just serial
<ZirconiumX>
It's actually quite simple as a protocol
<natarii>
with regards to actually making fm patches, i'm told it is Hard. how hard exactly i don't know
<cr1901_modern>
Oh cool, Aidan made a thing again
<cr1901_modern>
I've emailed him before re: one of his older boards but I don't remember the context
<Lord_Nightmare>
making fm patches is tricky but not impossible
<cr1901_modern>
And Idk if it's hard. But time consuming? Indeed. I think making patches is an art
<Lord_Nightmare>
you have to think of the 8 algorithms as entirely separate 'palettes' or 'styles'
<Lord_Nightmare>
though a few of them cross over a bit
<cr1901_modern>
Use algorithm 0 if you want your listener to lose their hearing :3
<natarii>
most people using aidan's synth are using patches ripped from games fwiw
<cr1901_modern>
use algorithm 7 if you want a pipe organ and/or to be boring
<Lord_Nightmare>
read the chipsynth MD manual, plgdavid and madbr wrote some good tips on how to make patches
<Lord_Nightmare>
chipsynth MD allows you to rip patches easily too, and tweak them
<Lord_Nightmare>
you can literally drag and drop vgm or vgz files onto it and it will play them and you can isolate channels and copy the settings
<Lord_Nightmare>
this doesn't help for games which did fun stuff like software lfo/vibrato or varying patch parameters over time (I believe gunstar heroes does this)
<Lord_Nightmare>
but you can get the base patch and MD does allow you to do your own 'software lfo' stuff using the automatic mod/sequence stuff