From 76c1c4ddb7738ee5a6c4bce340aae0b24a806fba Mon Sep 17 00:00:00 2001
From: 110-kenichi <110.kenichi@gmail.com>
Date: Sun, 8 Sep 2019 19:38:52 +0900
Subject: [PATCH] V0.6
---
README.md | 20 ++-
src/mamidimemo/Program.cs | 2 +-
src/mamidimemo/instruments/ArpSettings.cs | 2 +-
src/mamidimemo/instruments/BasicFxSettings.cs | 4 +-
src/mamidimemo/instruments/GBAPU.cs | 134 ++++++++++--------
src/mamidimemo/instruments/RP2A03.cs | 2 +-
6 files changed, 99 insertions(+), 65 deletions(-)
diff --git a/README.md b/README.md
index 64017564d0d32..6d02f923f5d8a 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-MAmidiMEmo V0.1.0.0 / Itoken (c)2019 / GPL-2.0
+MAmidiMEmo V0.6.0.0 / Itoken (c)2019 / GPL-2.0
*** What is the MAmidiMEmo? ***
@@ -84,7 +84,7 @@ e.g.) YM2151 has 8ch FM sounds, so you can play 8 chords on MIDI 1ch or sharing
http://f.rdw.se/AY-3-8910-datasheet.pdf
*[Channels]
- Select which MIDI ch messages the chip receive.
+ Select which MIDI ch messages the chip receives.
5. Play MIDI file by youe favorite sequencer or player.
Of course, you can connect your favrite keyboard to MAmidiMEmo for live performance.
@@ -99,7 +99,13 @@ e.g.) YM2151 has 8ch FM sounds, so you can play 8 chords on MIDI 1ch or sharing
Modulation, Modulation Depth, Modulation Range, Modulation Delay
Portamento, Portamento Time
-6. (TBD)
+6. Also, you can set the following sound driver settings from Timbre settings.
+
+ Arpeggio
+ ADSR
+ Effect(Pitch/Volue/Duty macro)
+
+7. (TBD)
You can modify current environment and all timbre parameters via System Exclusive MIDI Message.
SysEx format:
@@ -112,6 +118,12 @@ e.g.) YM2151 has 8ch FM sounds, so you can play 8 chords on MIDI 1ch or sharing
SN76489:(TBD)
:::
- 7. Donate for supporting the MAmidiMEmo
+8. Donate for supporting the MAmidiMEmo
[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=SNQ9JE3JAQMNQ)
+
+9. Changes
+
+0.6.0.0 Added sound driver effects and portamento feature
+0.5.0.0 Added several chips
+0.1.0.0 First release
diff --git a/src/mamidimemo/Program.cs b/src/mamidimemo/Program.cs
index 1bac1594f43b7..0d9466fce5ace 100644
--- a/src/mamidimemo/Program.cs
+++ b/src/mamidimemo/Program.cs
@@ -31,7 +31,7 @@ public static class Program
///
///
///
- public const string FILE_VERSION = "0.5.0.0";
+ public const string FILE_VERSION = "0.6.0.0";
public static readonly JsonSerializerSettings JsonAutoSettings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Auto, DefaultValueHandling = DefaultValueHandling.Ignore };
diff --git a/src/mamidimemo/instruments/ArpSettings.cs b/src/mamidimemo/instruments/ArpSettings.cs
index b9904a04771ba..4501b6245c4a8 100644
--- a/src/mamidimemo/instruments/ArpSettings.cs
+++ b/src/mamidimemo/instruments/ArpSettings.cs
@@ -229,7 +229,7 @@ public bool KeySync
public string f_StaticArpSteps;
[DataMember]
- [Description("Set static arp steps by text. Input note number and split it with space.\r\n" +
+ [Description("Set static arp steps by text. Input note number and split it with space like the Famitracker.\r\n" +
"Absolute/Relative -64~0~+63\r\n" +
"Fixed is 0~127")]
public string StaticArpSteps
diff --git a/src/mamidimemo/instruments/BasicFxSettings.cs b/src/mamidimemo/instruments/BasicFxSettings.cs
index 7fc074fb91dcd..8c1319a308957 100644
--- a/src/mamidimemo/instruments/BasicFxSettings.cs
+++ b/src/mamidimemo/instruments/BasicFxSettings.cs
@@ -24,7 +24,7 @@ public class BasicFxSettings : AbstractFxSettingsBase
public string f_VolumeEnvelopes;
[DataMember]
- [Description("Set volume envelop by text. Input volume value and split it with space.\r\n" +
+ [Description("Set volume envelop by text. Input volume value and split it with space like the Famitracker.\r\n" +
"0(0%)-128(100%) \"|\" is repeat point. \"/\" is release point. ")]
public string VolumeEnvelopes
{
@@ -105,7 +105,7 @@ public string VolumeEnvelopes
private string f_PitchEnvelopes;
[DataMember]
- [Description("Set pitch envelop by text. Input pitch relative value and split it with space.\r\n" +
+ [Description("Set pitch envelop by text. Input pitch relative value and split it with space like the Famitracker.\r\n" +
"-8193 ~ 0 ~ 8192")]
public string PitchEnvelopes
{
diff --git a/src/mamidimemo/instruments/GBAPU.cs b/src/mamidimemo/instruments/GBAPU.cs
index 62bcb5cad5942..2138f07713c12 100644
--- a/src/mamidimemo/instruments/GBAPU.cs
+++ b/src/mamidimemo/instruments/GBAPU.cs
@@ -483,7 +483,7 @@ public override void KeyOn()
uint reg = (uint)(Slot * 5);
if (lastSoundType == SoundType.SPSG)
- GbApuWriteData(parentModule.UnitNumber, reg, (byte)(timbre.SweepTime << 4 | timbre.SweepDir << 3 | timbre.SweepNumber));
+ GbApuWriteData(parentModule.UnitNumber, reg, (byte)(timbre.SPSGSweep.Time << 4 | timbre.SPSGSweep.Dir << 3 | timbre.SPSGSweep.Speed));
else
GbApuWriteData(parentModule.UnitNumber, reg, 0x00);
@@ -798,58 +798,7 @@ public SoundType SoundType
get;
set;
}
-
- private byte f_SweepTime;
-
- [DataMember]
- [Category("Sound(Sweep)")]
- [Description("Sweep Time (0:OFF 1-7:N/128Hz)")]
- public byte SweepTime
- {
- get
- {
- return f_SweepTime;
- }
- set
- {
- f_SweepTime = (byte)(value & 7);
- }
- }
-
- private byte f_SweepDir;
-
- [DataMember]
- [Category("Sound(Sweep)")]
- [Description("Sweep Increase/Decrease (0: Addition 1: Subtraction)")]
- public byte SweepDir
- {
- get
- {
- return f_SweepDir;
- }
- set
- {
- f_SweepDir = (byte)(value & 1);
- }
- }
-
- private byte f_SweepNumber;
-
- [DataMember]
- [Category("Sound(Sweep)")]
- [Description("Number of sweep shift (0-7)")]
- public byte SweepNumber
- {
- get
- {
- return f_SweepNumber;
- }
- set
- {
- f_SweepNumber = (byte)(value & 7);
- }
- }
-
+
private byte f_Duty = 2;
[DataMember]
@@ -911,7 +860,6 @@ public byte EnableLength
}
}
-
private byte f_EnvInitialVolume = 15;
[DataMember]
@@ -1088,9 +1036,24 @@ public string WsgDataSerializeData
}
+
+ ///
+ ///
+ ///
+ [DataMember]
+ [Category("Sound(SQ)")]
+ [Description("SPSG Sweep Settings")]
+ public SPSGSweepSettings SPSGSweep
+ {
+ get;
+ private set;
+ }
+
+
public GBAPUTimbre()
{
- this.SDS.FxS = new GbFxSettings();
+ SDS.FxS = new GbFxSettings();
+ SPSGSweep = new SPSGSweepSettings();
}
@@ -1119,6 +1082,65 @@ public override void RestoreFrom(string serializeData)
}
+ [JsonConverter(typeof(NoTypeConverterJsonConverter))]
+ [TypeConverter(typeof(CustomExpandableObjectConverter))]
+ [DataContract]
+ [MidiHook]
+ public class SPSGSweepSettings : ContextBoundObject
+ {
+
+ private byte f_SweepTime;
+
+ [DataMember]
+ [Category("Sound(Sweep)")]
+ [Description("SPSG Sweep Time (0:OFF 1-7:N/128Hz)")]
+ public byte Time
+ {
+ get
+ {
+ return f_SweepTime;
+ }
+ set
+ {
+ f_SweepTime = (byte)(value & 7);
+ }
+ }
+
+ private byte f_SweepDir;
+
+ [DataMember]
+ [Category("Sound(Sweep)")]
+ [Description("SPSG Sweep Increase/Decrease (0: Addition 1: Subtraction)")]
+ public byte Dir
+ {
+ get
+ {
+ return f_SweepDir;
+ }
+ set
+ {
+ f_SweepDir = (byte)(value & 1);
+ }
+ }
+
+ private byte f_SweepNumber;
+
+ [DataMember]
+ [Category("Sound(Sweep)")]
+ [Description("SPSG Number of sweep shift (0-7)")]
+ public byte Speed
+ {
+ get
+ {
+ return f_SweepNumber;
+ }
+ set
+ {
+ f_SweepNumber = (byte)(value & 7);
+ }
+ }
+ }
+
[JsonConverter(typeof(NoTypeConverterJsonConverter))]
[TypeConverter(typeof(CustomExpandableObjectConverter))]
[DataContract]
@@ -1128,7 +1150,7 @@ public class GbFxSettings : BasicFxSettings
private string f_DutyEnvelopes;
[DataMember]
- [Description("Set duty/noise envelop by text. Input duty/noise value and split it with space.\r\n" +
+ [Description("Set duty/noise envelop by text. Input duty/noise value and split it with space like the Famitracker.\r\n" +
"0 ~ 3")]
public string DutyEnvelopes
{
diff --git a/src/mamidimemo/instruments/RP2A03.cs b/src/mamidimemo/instruments/RP2A03.cs
index caa52b0a56677..b92a06334d507 100644
--- a/src/mamidimemo/instruments/RP2A03.cs
+++ b/src/mamidimemo/instruments/RP2A03.cs
@@ -977,7 +977,7 @@ public class NesFxSettings : BasicFxSettings
private string f_DutyEnvelopes;
[DataMember]
- [Description("Set duty/noise envelop by text. Input duty/noise value and split it with space.\r\n" +
+ [Description("Set duty/noise envelop by text. Input duty/noise value and split it with space like the Famitracker.\r\n" +
"0 ~ 3")]
public string DutyEnvelopes
{