digital-sound-antiques / emu2413 Goto Github PK
View Code? Open in Web Editor NEWA YM2413 emulator written in C.
License: MIT License
A YM2413 emulator written in C.
License: MIT License
Grettings,
would you consider to test this on the real hardware, on how the modulator should behave?
First is the modulator envelope precision, and the envelope behavior when key is off after key on.
This file containing .nsf and the .wav of what this API sounded like.
mod release test.zip
Need cherry picking this patch. https://github.com/rururutan/emu2413/commit/5e7b729b3aa218222fdabda1f1f366da94799e17
High frequency noise like top-cym sound tend to be corrupted as 44KHz or lower playback rate, may be because of sample rate conversion.
emu2413 v1.5.7 can not correctly perform ar0test.vgm.zip.
ar0test.vgm.zip is genarated from the following MGSDRV MML.
#opll_mode 1
#tempo 150
@v15 = { ;
; TL FB
63, 7,
; AR DR SL RR KL MT AM VB EG KR DT
15, 0, 0,10, 0,15, 0, 0, 1, 0, 0,
15, 0, 0,10, 0, 1, 0, 0, 1, 0, 0 }
@v16 = { ;
; TL FB
63, 7,
; AR DR SL RR KL MT AM VB EG KR DT
0, 0, 0,10, 0,15, 0, 0, 1, 0, 0,
15, 0, 0,10, 0, 1, 0, 0, 1, 0, 0 }
9 v15
9 @15 o4 c4 r4 c4 r4 @16 c4 r4 c4 r4
The intention of the MML above is to change the tone from the 3rd note.
The behavior of the real chip is counter-intuitive, but this should be emulated for accuracy.
I'm not too familiar with emu2413, but am working on developing a new tracker which will support VRC7 FM in the future. 0CC-FamiTracker includes a copy of emu2413 from 2004, but I found this repo which seems to be updated.
Lines 1371 to 1388 in a0b0c61
Looking at master OPLL_calc()
, it seems like if opll->quality != 0
, you run an unknown number of OPLL cycles (varies with sampling rate), then return the latest sample. Because you do not perform resampling, this will drop synthesized samples (or duplicate them if the speaker sampling rate is over 49716 Hz). Is this right?
Dropping/duplicating audio samples will seriously degrade audio quality. As a resampling method, it converts each discrete-time sample into a continuous-time rectangular non-bandlimited pulse (creating frequency imaging), then samples from that rectangle train (turning the images into aliases). This process generates many unwanted frequencies in the outputted audio.
Lines 1456 to 1472 in 3226177
By comparison, the 2004 version of the library (related to that found in 0CC-FamiTracker) appears to perform linear interpolation, which is less bad for audio quality.
(I think 0CC runs the synth at quality=0, which runs emu2413 at the PC sampling rate, rather than the chip's original rate.)
Also I may use https://www.vogons.org/viewtopic.php?f=9&t=37782 instead. Is that code fast enough for real-time usage?
Degraded from #6. min/max function conflicts with Visual Studio's min/max definition.
These confliction possibly occurs on other platform that defines min/max as macro.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.