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
<ZirconiumX>
I feel if anybody knows how to help Byuu it'd be one of you guys.
<ZirconiumX>
(possibly nukeykt when they're next around?)
<cr1901_modern>
byuu and I don't really talk anymore, sorry to say. Not really sure what happened
<cr1901_modern>
But additionally, he knows (correctly) from past experience that I have a tendency of starting stuff but not finishing it, so... :P
<superctr>
unless byuu is super NIH, why not just use MAME's YM2151 core
<superctr>
It doesn't take a lot of modifications to port it to any platform
<cr1901_modern>
because byuu IS super NIH
<cr1901_modern>
He wrote his own text editor and C++ STL replacement for God's sake XD
<whitequark>
christ
<cr1901_modern>
err, GUI library*... text editor is a new thing
<whitequark>
that's depressing
<cr1901_modern>
depressing?
<cr1901_modern>
>Not really sure what happened <-- To be clear, _I_ don't have an issue w/ him and would be happy to pick up where things left off. I have my own theories lol :P
* Sarayan
waves
<cr1901_modern>
hello! :3
<Sarayan>
cr1901: I'm very fucking close on wanting to write my own text editor/IDE
<Sarayan>
barely managed to avoid it up to this point
<cr1901_modern>
Sarayan: I use Atom and am happy with it despite the bloat.
<cr1901_modern>
"Sublime text for plebs"
<cr1901_modern>
I use Geany or Kate as a fallback if I have to.
<whitequark>
atom is fine if none of the files you open are larger than like 20k lines
<cr1901_modern>
turn off spellcheck :P?
<whitequark>
no
<whitequark>
it's a fundamental limitation of stuffing everything into DOM
<Sarayan>
wq: ouch, my files go from a handful of lines to a million
<whitequark>
sublime will happily open files of tens of millions of lines though
<Sarayan>
emacs manages, thankfully
<whitequark>
up to... about 10 GB I'd say?
<whitequark>
search works too, though regex search tends to choke on these
<Sarayan>
wq: that's good enough
<superctr>
I mostly use vim nowadays
<cr1901_modern>
I just shell out to less/vi if I need to look at a file that big
<cr1901_modern>
vi keybindings are bad... emacs are worse (on a standard pc keyboard. No I'm not repurposing my Caps lock key)
<Sarayan>
mu100.txt is 442K lines, that's typical
<Sarayan>
disassembly of the bios
<superctr>
i think vi keybindings are fine, though Esc is a bit too far on a normal keyboard, it's fine on laptops though
<whitequark>
yeah, my huge files are usually glasgow losg
<whitequark>
eg verbose logs of reading 1 GB of flash
<whitequark>
with a bug somewhere in it
<superctr>
so i map 'jj' to Esc
<cr1901_modern>
I mainly like Atom for it's build, project manager, and console plugins (but particularly the first two)
<superctr>
I keep a session.vim in my project directories, that's my "project management"
<cr1901_modern>
it's not a sophisticated plugin; mainly it does _just_ what I want in the way I want it :P. I'm sure there's a similar vim and sublime plugin (or I could write one)
<cr1901_modern>
Sarayan: What would your text editor look like? Tailored specifically for your workflow ;)?
<Sarayan>
hmmm
<Sarayan>
Things I like in xemacs: low latency in general, can do pretty much everything without touching the mouse, very efficient window management, can cope with any type of file, including binaries
<Sarayan>
also efficient switching between buffers
<cr1901_modern>
mmmm interesting
<Sarayan>
and not trying to steal the focus/moving the window/raising the window
<Sarayan>
oh, also, minimal space used by anything non-editor
<Sarayan>
especially vertical space
<Sarayan>
but even horizontal
<whitequark>
i wonder if you will like sublime
<cr1901_modern>
There's a law of diminishing returns for increasing horizontal space for me
<whitequark>
it's not quite there
<Sarayan>
I hte editing in a postage stamp, yes I'm looking at you eclipse
<whitequark>
fuck eclipse and idea
<cr1901_modern>
Even on a 1600x900 screen, I have a lot of dead space on the right side of my editor
<cr1901_modern>
(there's a terminal, but it acts as a pop-under
<superctr>
heh, not using the mouse is the reason i switched to vim
<superctr>
it made editing bearable on a laptop
<cr1901_modern>
so I can remove it at will if I need more vertical space
<cr1901_modern>
If I upgrade to a HD or 4k monitor, I'll likely have enough room to put an editor and web browser side by side
<cr1901_modern>
perhaps removing my need for a second monitor
<cr1901_modern>
(Well I can _tolerate_ side by side even right now)
<superctr>
soon you'll switch to a tiling WM too
<cr1901_modern>
Yes I like them in principle
<cr1901_modern>
bug.n is, well, buggy
<superctr>
having editor and browser on respective halves of the screen is nice
<superctr>
if the site has a crappy layout, can always zoom out...
<cr1901_modern>
Lots of ppl seem to like i3wm and xmonad
_whitelogger has joined ##yamahasynths
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
<cr1901_modern>
Okay, just to confirm my understanding of the ym2151 manual... the LFO affects both the phase generator (shared between all operators on a channel) _and_ the envelope generator (which is on a per-operator basis)
<cr1901_modern>
You can enable/disable the LFO's effects for both the phase generator and the envelope generator independently, but the LFO's frequency is hardcoded for both the phase and envelope generators.
<cr1901_modern>
Is all of the above correct?
<superctr>
the LFO has a global rate, AM depth and PM depth
<cr1901_modern>
global rate == frequency?
<superctr>
yes
<superctr>
Each operator has a bit to enable AM sensitivity and each channel has bits to set AMS and PMS for that channel (modifying the global depth)
<cr1901_modern>
where is "PM-disable"?
<superctr>
There is none
<superctr>
Set PMS for that channel to 0 to disable it on that channel
<cr1901_modern>
... oh, right there in the manual
<cr1901_modern>
AMS is measured in dBs, so I think that must be where there's an AM-disable
<cr1901_modern>
why* not where
<superctr>
You can toggle LFO amplitude modulation on a per-operator basis, and you can set the sensitivity of LFO modulation on a per-channel basis for both amplitude and phase modulation
<superctr>
and finally you set the global LFO rate and amplitude, which affects the LFO on all channels
<cr1901_modern>
where is "global LFO amplitude"?
<cr1901_modern>
I don't see a register for it
<superctr>
Register 19
<superctr>
Bit 7 selects whether the write affects amplitude or phase depth
<superctr>
so you write 0x00 + 0x00..0x7f to set AM depth and 0x80 + 0x00..0x7f to set PM depth
<cr1901_modern>
"The value indicated here obtains (sic) when the LFO output is at its maximum value"
<cr1901_modern>
I assume that refers to the "maximum value the LFO takes when the PM depth is set to the maximum possible value"
<superctr>
that's when you read the status flag i suppose?
<superctr>
I don't usually do that
<cr1901_modern>
Oh this was under the LFO section
<cr1901_modern>
I'm just trying to get a feel for the sensitivity tables
<superctr>
ah
<cr1901_modern>
Oh, and to make things more fun, it looks like "PMD" is signed/twos complement
<superctr>
page 12 shows the lfo waveforms
<cr1901_modern>
>(10:21:16 AM) cr1901_modern: I assume that refers to the "maximum value the LFO takes when the PM depth is set to the maximum possible value"
<cr1901_modern>
E.g. Figure 2.8 says "if PMS=7, the maximum modulation of the current frequency is 700 cents when the LFO reaches its maximum amplitude". >>
<cr1901_modern>
I assume the LFO only ever reaches its maximum amplitude when you set the AMD/PMD correctly (i.e. 0x7F)
<cr1901_modern>
Anyways, with the LFO grokked, I think I at last understand all the major components of OPM. I kept putting it off and putting it off lmao
<superctr>
the OPM is the most simple of the 4op Yamaha synths
<superctr>
It sits somewhere between the OPL and OPN (though closer to the latter) I'd say
<superctr>
the only real unique part of the 2151 would be the noise generator. DT2 is also unique but not that special (you'll probably never use it)
<cr1901_modern>
I mainly chose to study the OPM b/c it seemed underappreciated LOL
<cr1901_modern>
well, it's the "most underappreciated of the popular Yamaha synths"
<cr1901_modern>
Everybody and their dog knows about OPN thanks to Genesis
<superctr>
i'd say OPL series is most underappreciated. It has an unfair reputation thanks to "Fartlib"
<superctr>
OPM has good reputation thanks to all the X68k and arcade boards that used it properly
<cr1901_modern>
? Lots of ppl remember DOS games :P. And fartlib is hardly unique to OPL
* cr1901_modern
glares at the GEMS defaults
<superctr>
though something that not everyone will notice is that the OPM is almost pin-compatible to the OPL2
<superctr>
lots of OPL2 projects that could be repurposed for OPM with minor changes
<cr1901_modern>
does OPL2 have GPO ports?
<cr1901_modern>
err pins*
<superctr>
those are N/C
<cr1901_modern>
huh interesting
<superctr>
the difference is that pin 11 and 12 are swapped and pin 1 is GND on OPM and Vcc on OPL2
<superctr>
pin 22 is N/C on OPL2
<cr1901_modern>
Sometimes I'm convinced Yamaha picked lottery numbers to decide the pinouts
<superctr>
the pinouts usually make more sense when you look at the die shots
<superctr>
the data pins are all next to each other after all, they'd be lined up on the die
<cr1901_modern>
Even on z80, which permutes the data pin order, data pins are next to each other
cr1901_modern1 has joined ##yamahasynths
cr1901_modern has quit [Ping timeout: 268 seconds]