110-kenichi / mame

MAmidiMEmo
Other
77 stars 5 forks source link

MAmidiMEmo 5.7.5.1 Itoken (c)2019, 2024 / GPL-2.0

What is the MAmidiMEmo?

MAmidiMEmo is a virtual chiptune sound MIDI module using a MAME sound engine. You can control various chips and make sound via MIDI I/F. So, you don't need to use dedicated tracker and so on anymore. You can use your favorite MIDI sequencer to make a chip sound.

See samples https://www.youtube.com/channel/UCGYO2bEPPIM2LTNDbBEDaAQ

MAmidiMEmo adopts multi timbre method. That mean you can play multi chords on MIDI 1ch if the chip has multi ch.

e.g.) YM2151 has 8ch FM sounds, so you can play 8 chords on MIDI 1ch or sharing 8ch with MIDI 16ch like a SC-55 and so on. As well, NES APU has 2ch for square wave, so you can play 2 chords on MIDI 1ch when select a square wave timbre. However, when you select a triangle wave timbre, you can play 1 chord on MIDI 1ch. Because NES APU has only 1ch for triangle wave.

How to use MAmidiMEmo

  1. Requirements

    *H/W

    CPU: Intel Core series CPU or equivalent, at least 2.0 GHz
    MEM: at least 4GB
    Sound: DirectSound capable sound card/onboard audio
    MIDI: MIDI IN I/F

    *S/W

    OS: Windows 10 or lator
    Runtime: .NET Framework 4.7 or lator
             VC++ 2012 Runtime https://www.microsoft.com/en-au/download/details.aspx?id=30679
  2. Extract downloaded zip file. Execute "DelZoneID.ps1" on PowerShell to remove "Zone.Identifier" flag.

    ★日本語フォルダには現状対応していません★

  3. Install VC++ runtime 2012 and .NET Framework 4.7 or lator.

  4. Launch MAmidiMEmo.exe

    Note: You can change the value of audio latency, sampling rate and audio output interface by [Tool] menu. PortAudio is a low latency sound engine. See http://www.portaudio.com/ Note: Allow ★firewall communication to MAmidiMEmo and your DAW.

  5. Select MIDI I/F from toolbar. MAmidiMEmo will recevie MIDI message from the selected MIDI I/F.

    Note: You can use the loopMIDI (See http://www.tobias-erichsen.de/software/loopmidi.html) to send MIDI message from this PC to MAmidiMEmo.

  6. Add your favorite chips from the [Instruments] menu on the toolbar.

    Note: Currently supported chips are the following.

    YM2151, YM2612, YM3812, YM2413, YM2610B, YMF262
    YM2601 ★★★ Place legitimate ym2608_adpcm_rom.bin file in the Mami dir ★★★
    SID, POKEY, GB APU, SN76496, NES APU, MSM5232(+TA7630), AY-3-8910
    NAMCO CUS30, SCC, HuC6280
    C140, SPC700
    MT-32 ★★★ Place legitimate MT32_CONTROL.ROM and MT32_PCM.ROM files in the Mami dir ★★★
    CM-32P This is an incomplete simulator, not an emulator.
           You can mod and add your custom sounds by editing tbl and sound font files.
           Please contact me if you can help me to create CM-32P and SN-U110 sound fonts.
    TMS5220, SP0256, SAM

    Note: You can add the chip up to 8 per same chip type and MAmidiMEmo eats more CPU power.

  7. Select the chip from the left pane and configure the chip on the right pane.

    *[Timbres] You can edit sound character from this property. It's selected by "Program Change" MIDI message. Please refer the following articles or MAME sources to understand these timbre parameters.

    YM2151: https://www16.atwiki.jp/mxdrv/pages/24.html

    YM2612: https://www.plutiedev.com/ym2612-registers http://www.smspower.org/maxim/Documents/YM2612

    NES APU: http://hp.vector.co.jp/authors/VA042397/nes/apu.html https://wiki.nesdev.com/w/index.php/APU https://wiki.nesdev.com/w/index.php/APU_DMC

    GB APU: http://bgb.bircd.org/pandocs.htm#soundcontrolregisters https://gbdev.gg8.se/wiki/articles/Gameboy_sound_hardware http://mydocuments.g2.xrea.com/ http://marc.rawer.de/Gameboy/Docs/GBCPUman.pdf http://www.devrs.com/gb/files/hosted/GBSOUND.txt

    NAMCO CUS30: https://www.walkofmind.com/programming/pie/wsg3.htm http://fpga.blog.shinobi.jp/fpga/おんげん

    SN76489: http://www.smspower.org/Development/SN76489 http://www.st.rim.or.jp/~nkomatsu/peripheral/SN76489.html

    SCC: http://bifi.msxnet.org/msxnet/tech/scc.html

    YM3812: http://www.oplx.com/opl2/docs/adlib_sb.txt

    YM2413: http://d4.princess.ne.jp/msx/datas/OPLL/YM2413AP.html#31 http://www.smspower.org/maxim/Documents/YM2413ApplicationManual http://hp.vector.co.jp/authors/VA054130/yamaha_curse.html

    MSM5232(+TA7630): http://www.citylan.it/wiki/images/3/3e/5232.pdf http://sr4.sakura.ne.jp/acsound/taito/taito5232.html

    AY-3-8910: http://ngs.no.coocan.jp/doc/wiki.cgi/TechHan?page=1%BE%CF+PSG%A4%C8%B2%BB%C0%BC%BD%D0%CE%CF https://w.atwiki.jp/msx-sdcc/pages/45.html http://f.rdw.se/AY-3-8910-datasheet.pdf

    SID: https://www.waitingforfriday.com/?p=661#6581_SID_Block_Diagram http://www.bellesondes.fr/wiki/doku.php?id=mos6581#mos6581_sound_interface_device_sid https://www.sfpgmr.net/blog/entry/mos-sid-6581を調べた.html

    HuC6280: http://www.magicengine.com/mkit/doc_hard_psg.html

    SPC700: https://wiki.superfamicom.org/spc700-reference

    POKEY: https://en.wikipedia.org/wiki/POKEY http://ftp.pigwa.net/stuff/collections/SIO2SD_DVD/PC/RMT%201.19/docs/rmt_en.htm https://www.atariarchives.org/dere/chapt07.php http://user.xmission.com/~trevin/atari/pokey_regs.html

    YM2610: http://www.ajworld.net/neogeodev/ym2610am2.html

    MT-32: https://sourceforge.net/projects/munt/ http://lib.roland.co.jp/support/jp/manuals/res/1809744/MT-32_j2.pdf

    CM-64: http://lib.roland.co.jp/support/jp/manuals/res/1809003/CM-64_j.pdf

    YMF262: http://map.grauw.nl/resources/sound/yamaha_ymf262.pdf

    YM2608: https://www.quarter-dev.info/archives/yamaha/YM2608_Applicatin_Manual.pdf

    TMS5220 https://www.dexsilicium.com/tms5220.pdf http://www.stuartconner.me.uk/ti_portable_speech_lab/ti_portable_speech_lab.htm

    SP0256 http://spatula-city.org/~im14u2c/sp0256-al2/Archer_SP0256-AL2.pdf

    SAM https://github.com/s-macke/SAM http://www.retrobits.net/atari/sam.shtml

    uPD1771 http://takeda-toshiya.my.coocan.jp/scv/scv.pdf

    *[Channels] Select which MIDI ch messages the chip receives.

  8. Play MIDI file by your favorite sequencer or player. Of course, you can connect your favrite keyboard to MAmidiMEmo for live performance.

    MAmidiMEmo currently supports the following MIDI messages.

    Note On with velocity Note Off Program Change Control Change Pitch and PitchRange Volume and Expression Panpot Modulation, Modulation Depth, Modulation Range, Modulation Delay Portamento, Portamento Time All Note Off, (All Sound Off) CC#126/127 Mono/Poly mode. Spec is almost same with FITOM. Sound Control (for modifying a Timbre properties dynamically) Effect Depth (for modifying a VST properties dynamically) General Purpose Control (for modifying an instrument properties dynamically)

  9. Also, you can set the following sound driver settings from Timbre settings.

    Arpeggio ADSR Effect (Pitch/Volue/Duty macro)

  10. You can modify current timbre parameters via Sound control MIDI Message (70-75,79) dynamically. You can modify VST parameters via Effect Depth control MIDI Message (91-95) dynamically. You can modify other parameters via General Purpose control MIDI Message (16-19,80-83) dynamically.

  11. You can modify receving MIDI ch for the specific instrument via NRPN MIDI Message.

    NRPN format is the following.

    Bx 63 41 Bx 62 ... Specify Device ID of existing instrument. Bx 26 ... Specify Unit No of the above Device ID of existing instrument. Bx 06 <Receiving MIDI ch(1-7) bit sets. 1=On, 0=Off>

     bit  6  5  4  3  2  1  0
      ch   7  6  5  4  3  2  1

    Bx 63 42 Bx 62 ... Specify Device ID of existing instrument. Bx 26 ... Specify Unit No of the above Device ID of existing instrument. Bx 06 <Receiving MIDI ch(8-14) bit sets. 1=On, 0=Off>

     bit  6  5  4  3  2  1  0
      ch  14 13 12 11 10  9  8

    Bx 63 43 Bx 62 ... Specify Device ID of existing instrument. Bx 26 ... Specify Unit No of the above Device ID of existing instrument. Bx 06 <Receiving MIDI ch(15-16) bit sets. 1=On, 0=Off>

     bit  6  5  4  3  2  1  0
      ch xx xx xx xx xx 16 15
  12. (TBD) You can modify current environment and all timbre parameters via System Exclusive MIDI Message.

    Master Volume: "F0 7F 7F 04 01 00 nn F7"

    YM2151:(TBD) YM2612:(TBD) NES APU:(TBD) GB APU:(TBD) NAMCO CUS30:(TBD) SN76489:(TBD) :::

  13. SPFM

    You can use a real sound chip instead of software emulation chip. Currently supported chips are YM2151 and YM2608 on SPFM. Before using the SPFM, you must setup SCCI by using the scciconfig.exe.

  14. VSIF

    You can use a real machine instead of software emulation chip. Please see tha manual. https://github.com/110-kenichi/mame/blob/master/docs/MAmidiMEmo/Manual.pdf

★Known issues and limitations★

  1. ★日本語フォルダには現状対応していません★
  2. You need to ★save the data ★manually on the DAW (Cubase and so on). Or, keep open the dummy editor window of the MAmidiMemo.
  3. Allow ★firewall communication to MAmidiMEmo and your DAW.
  4. MT-32 & CM32-P can not store/restore last settings.
  5. HuC6820 suddenly stop sounding. Please restart MAmi.
  6. MAmidiMEmo process stuck after sound interface changed if you used SCCI interface.

How to create build environment

  1. Install LATEST Visual Studio 2022 w/ VC++, C#, Windows Universal CRT SDK, .NET 4.7 SDK and Targeting Pack
  2. Install Windows 8.1 SDK and 10 SDK
  3. Install MinGW Development Environment(https://www.mamedev.org/tools/)
  4. Install vcpkg

Donate for supporting the MAmidiMEmo

Donate

*** Changes

Licenses

*Split700 - gocha https://github.com/gocha/split700/blob/master/LICENSE

*MathParserTK - Yerzhan Kalzhani https://github.com/kirnbas/MathParserTK

*PeakFilter - filoe https://github.com/filoe/cscore/blob/master/CSCore/DSP/PeakFilter.cs

*ymfm - Aaron Giles https://github.com/aaronsgiles/ymfm/tree/main License: BSD 3-Clause License https://github.com/aaronsgiles/ymfm/blob/main/LICENSE

*WinRing0 - hiyohiyo https://crystaldew.info/2010/02/28/winring0-end/ License: 修正 BSD ライセンス https://openlibsys.org/manual-ja/License.html

*c86ctl - honet http://c86box.com/software.html License: BSD-3-Clause license https://github.com/honet/c86ctl/blob/development/LICENSE

*oki - Copyright (c) 2001 Tetsuya Isaki. All rights reserved. http://www.pastel-flower.jp/~isaki/NetBSD/src/?sys/dev/ic/msm6258.c umjammer https://github.com/umjammer/vavi-sound/blob/master/src/main/java/vavi/sound/adpcm/oki/Oki.java

*airfont 380Final by Milton Paredes, mpj factory studios https://musical-artifacts.com/artifacts/635 License: Public Domain

*MDPlayer - kumatan https://github.com/kuma4649/MDPlayer License: MIT https://github.com/kuma4649/MDPlayer/blob/stable/LICENSE.txt

*C700 - osoumen https://github.com/osoumen/C700 License: LGPL2.1 https://github.com/osoumen/C700/blob/master/COPYING

*NAudio - Mark Heath https://github.com/naudio/NAudio License: MIT license https://github.com/naudio/NAudio?tab=MIT-1-ov-file#readme