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
<cr1901_modern> does vgmrips accept single tracks?
<cr1901_modern> https://www.youtube.com/watch?v=3C9YKdLDUkQ Could anyone possibly get me a VGM of the title theme (1st track)?
<cr1901_modern> this variant is _not_ on VGM rips
<cr1901_modern> the (better IMO) OPM version is, but I've been in the mood for the Genesis version
<l_oliveira> Mega Drive version
<l_oliveira> As far as I know the game never released in USA so there is no Genesis version I suppose (hehe)
<cr1901_modern> thanks I forgot about that site
<l_oliveira> np
andlabs has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
andlabs has joined ##yamahasynths
<fseidel> do any of you have a copy of the "which soundchip are you?" meme?
<fseidel> IIRC there was a part 2 as well
<cr1901_modern> I'm afraid I've never heard of that :o
andlabs has quit [Ping timeout: 259 seconds]
andlabs has joined ##yamahasynths
andlabs has quit [Ping timeout: 272 seconds]
andlabs has joined ##yamahasynths
ej5 has quit [Read error: Connection reset by peer]
<whitequark> I: glasgow.applet.yamaha_opl: web: 06492d54063081af: sample rate: input 49715, preferred 192000, output 192000
<whitequark> who the hell requests 192 kbps output?!
<whitequark> Windows 10, apparently
<cr1901_modern> isn't that DVD quality audio?
<whitequark> errrr
<whitequark> 192 khz output
<whitequark> like 96 is excessive
<whitequark> 192 khz is absurd
<whitequark> why are you trying to accurately reproduce ultrasound
andlabs has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
andlabs has joined ##yamahasynths
<cr1901_modern> >why are you trying to accurately reproduce ultrasound? Good question I don't have the answer to. 44100 is in fact reasonable to avoid bullshit w/ filtering that happens if you sample too close to Nyquist
<cr1901_modern> I wonder if 192khz is audiophile snake oil
<fseidel> From the people who brought you "directional cat5 cables," it's "192KHz audio"
<Wohali> i've only ever found it useful for studio masters where you know you're going to get downsampled a bunch, so you pack that shit in up front to guard against it
l_oliveira has quit [Quit: ChatZilla 0.9.92-rdmsoft [XULRunner 35.0.1/20150122214805]]
<TD-Linux> "yes"
<TD-Linux> if you think that's bad, you should check out DSD
<fseidel> and who could forget "bluespec CD"
<fseidel> "better CD audio except it's a normal CD but we used a blue laser to record it"
<Wohali> heheh
cr1901_modern1 has joined ##yamahasynths
cr1901_modern has quit [Ping timeout: 246 seconds]
andlabs has quit [Ping timeout: 272 seconds]
_whitelogger has joined ##yamahasynths
cr1901_modern1 has quit [Quit: Leaving.]
cr1901_modern has joined ##yamahasynths
ahihi has quit [Read error: Connection reset by peer]
Patater has quit [Remote host closed the connection]
Patater has joined ##yamahasynths
ahihi has joined ##yamahasynths
<cr1901_modern> whitequark (this is actually on topic, I swear): What daemon do you use for your library, and can it be run w/o any container crap (my VPS runs FreeBSD)?
<cr1901_modern> your document* library
<cr1901_modern> and random files you upload
<cr1901_modern> I have a cute idea for an IRC bot...
<cr1901_modern> Doesn't need to run on Glasgow, but the idea is... you can set up an IRC string w/ FM instrument parameters, and a real chip will create a sound byte which you can then listen to. Might be useful if anyone in here wants to try making instruments and discuss them
<cr1901_modern> Because- Making. Instruments. Is. Hard. T_T
<ValleyBell> cr1901_modern: We accept packs with only a single track, but only if the game has just one song.
<ValleyBell> i.e. we want to whole game OST
<ValleyBell> (or whatever part of it can be logged with VGM)
<cr1901_modern> I see
<ValleyBell> It still needs to be a proper "pack" (with .m3u playlist, .txt file and .png screenshot)
<ValleyBell> btw: There IS an S98 -> VGM converter. It's somewhere in the "General VGM Discussion" subforum on vgmrips.
<ValleyBell> (aaand now back to work ...)
cr1901_modern1 has joined ##yamahasynths
cr1901_modern has quit [Disconnected by services]
<cr1901_modern1> WHY does the nick command no longer work in pidgin?! Gah...
cr1901_modern1 has quit [Client Quit]
cr1901_modern has joined ##yamahasynths
Foone_ has joined ##yamahasynths
Foone has quit [Ping timeout: 255 seconds]
l_oliveira has joined ##yamahasynths
<ylamarre> whitequark: You're not trying to sample ultrasound, you're trying to avoid ultrasound aliased in audible gap...
<ylamarre> If you're sampling a microphone that does pickup ultrasound and/or is just noisy, it makes tons of sense!
<cr1901_modern> Ewww... but make sense
<ylamarre> If say, you keep sampling rate at 44kHz, anything above 22kHz will be in audible range.
<Sarayan> you're supposed to analog lowpass before sampling
<Sarayan> ylmarre: about 27-30K actually :-)
<ylamarre> Sarayan: Ok, but you wanna keep everything below say 20K... which gives you a range between 20k to 24k... which is pretty narrow.
<ylamarre> Your analog filter has to be pretty much perfect, no noisem no nothing.
<Sarayan> ylmarre: human audiotion rarely hits over 15K or so, worse if you're older
<Sarayan> audition
<ylamarre> Agreed, but some do
<l_oliveira> morning guys
<ylamarre> And if you are mastering, down sampling, resample, mixing...
<Sarayan> in any case, a normal mic won't pick anything over 20K, but electric noise exists
<cr1901_modern> 20k to 24k isn't a lowpass...
<cr1901_modern> it's a bandstop
<Sarayan> cr1901: He's saying you want your -3dB at 20K, and -afucklotofdb at 24K
<ylamarre> It's easier to sample at higher frequencies, have cheaper analog filter, and process in digital space.
<cr1901_modern> oh oops
<ylamarre> Sarayan: Exactly, thanks for the precision
<Sarayan> so that wrapping down doesn't give you hearable stuff
<Sarayan> ylmarre: sure
<Sarayan> hence the 96 and 192KHz
<cr1901_modern> what do production-quality analog filters look like nowadays?
<cr1901_modern> obviously not an RC network :)
<ylamarre> But yeah, I had the exact same comment in an engineering signal processing class, in which case the professor was kind enough to give this explanation I'm giving back
<Sarayan> I'm tempted to do analog simulation at 192KHz and downsample, that should give a good temporal positioning for triggers
<Sarayan> it makes filters more expensive and harder to design though
<Sarayan> the filter shape breaks down when the cutoff frequency of the analog filter you're simulating is too far from niquist
<ylamarre> Analog filtering is hard, also remember that your ADC also picks up noise...
<Sarayan> analog filtering is a little harder when you have some room and don't need to brickwall though
<Sarayan> hence high freq and digital postprocess
<Sarayan> s/harder/simpler/
<Sarayan> geee
<ylamarre> Also, to have such a steep filter, you have to make higher order filter which in turn gives you more dephasing (or whatever it's called in english)
<ylamarre> and definitely not flat in the low frequency band.
<cr1901_modern> >the filter shape breaks down when the cutoff frequency of the analog filter you're simulating is too far from niquist
<cr1901_modern> This applies to digital too IME
<cr1901_modern> try making a 20-40Hz passband for an equalizer at 44100 sample rate
<cr1901_modern> hard mode: FIR, order less than 100
<Sarayan> cr1901: I was talking about digital
<cr1901_modern> oh parse fail
<cr1901_modern> yes I agree. Making an equalizer w/ good digital filters stinks
<Sarayan> yamaha does that with 5-point iir filters :-)
<cr1901_modern> Sarayan: open up scipy, and design a chebyshev type 1 with passband between 0.001 and 0.002 normalized frequency units. And the first sidelobe's maximum amplitudes are -20db.
<cr1901_modern> Have fun
<cr1901_modern> with the ridiculous orders you get
<Sarayan> cr1901: I'm just saying what yamaha does you know :-)
<Sarayan> their eq is five consecutive order-5 iir filters
<cr1901_modern> what's the freq range for each filter
<Sarayan> one per band, obviously
<cr1901_modern> >And the first sidelobe's maximum amplitudes are -20db.
<cr1901_modern> Type 1 has passband ripple, not stopband ripple
<cr1901_modern> shows how much I know
<whitequark> cr1901_modern: re library: nextcloud
<whitequark> i don't do containers, it's just php and mysql
<whitequark> cr1901_modern: re irc bot: sure
<cr1901_modern> cr1901.push("ircbot")
<cr1901_modern> Finally my browser tabs are manageable
andlabs has joined ##yamahasynths
<cr1901_modern> ValleyBell: If I want to embed an FM synth core into an application, and just run a small program to do writes and reads to said core, is libvgm appropriate at this point (or still to the vgmplay repo)?
<cr1901_modern> "this FM synthesizer does not aim to emulate or replicate a particular synth (like DX7) or FM chip."
<Sarayan> Yes, it's a modern FM core
<ylamarre> Couldn't you use the code from Mame?
<Sarayan> mame's current fm code is... not a good example
<cr1901_modern> I think mame might've been a bit too raw last I checked
<cr1901_modern> there's no "write reg" "read reg" "simulate"
<Sarayan> it needs heavy duty modernization
<ylamarre> ?
<Sarayan> cr1901: yes there is, it's called read, write and stream_update
<ylamarre> There's an emulation of read/write reg..
<cr1901_modern> then I guess ripping out the MAME core is fine
<Sarayan> No it's not, the mame core is horrible
<ylamarre> It's not necessarly plogue level, but you could rip the fm.cpp part?
<ylamarre> Just the device emulation, but then you'd have to re-wrap the thing.
<Sarayan> but the question is, do you want to do FM, or do you want to simulate a specific fm chip?
<ylamarre> Or... this is convoluted, but hear me out...
<ylamarre> You could run this emulated opl3 verilog core in a simulator and hook yourself to it,,
<cr1901_modern> it's in systemverilog IIRC
* ylamarre is just brainstorming dumb ideas.
<ylamarre> Could be...
<Sarayan> yamaha registers are extremely opaque
<ylamarre> So the idea is to make a soft sound chip
<ylamarre> ?
<cr1901_modern> Do the MAME functions just schedule a write as opposed to "advance the global clock until timing is satisfied for the read/write"?
<ylamarre> soft being either soft logic or software...
<ylamarre> Not sure it emulated chip level clock...
<ylamarre> At least not at "device" level...
<ylamarre> At least not the fm.cpp one...
<whitequark> cr1901_modern: i mean
<whitequark> i could just add irc to glasgow yamaha-opl
<whitequark> like tell me how the irc command stream should look like
<cr1901_modern> whitequark: I haven't finalized the command stream. And that's fine.
<cr1901_modern> I want the option for a software solution for other chip families and _maybe_ for comparison purposes with the real deal.
<cr1901_modern> whitequark: Actually, I'm gonna skip the software solution. I'm gonna mull over the command stream.
<cr1901_modern> Should fit in a single IRC message, so limit to 1 channel and maybe either a "test tune" (scale?) or just a single note...
andlabs has quit [Ping timeout: 244 seconds]
<ValleyBell> cr1901_modern: libvgm is definitely the better choice.
<ValleyBell> (than using parts of the current vgmplay repo)
<ValleyBell> You can use this as an example of how to emulate a few sound chips and output the sound using the default device: https://github.com/ValleyBell/libvgm/blob/master/audemutest.c
<ValleyBell> (FM cores are mostly from MAME, but with a C-style API)
<ValleyBell> And just for reference: "write" in the software FM cores means "execute the write immediately with a cost of 0 time" (with exception of NukedOPN2, which has a command queue)
andlabs has joined ##yamahasynths
andlabs has quit [Quit: Textual IRC Client: www.textualapp.com]
<cr1901_modern> Idk if I'd call this a queue, but in a software core I write, a write would go into a staging area to mimic the time it takes for dynamic/static cells to latch the value
<cr1901_modern> and then the pipeline would eventually pick up the write to the correct register when the pipeline is properly aligned w/ the write port
<cr1901_modern> aligned w/ the staging area*
andlabs has joined ##yamahasynths
Cerpin has joined ##yamahasynths
natarii has joined ##yamahasynths