Skip to content

Commit

Permalink
V0.6
Browse files Browse the repository at this point in the history
  • Loading branch information
110-kenichi committed Sep 8, 2019
1 parent 5070517 commit 76c1c4d
Show file tree
Hide file tree
Showing 6 changed files with 99 additions and 65 deletions.
20 changes: 16 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -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? ***

Expand Down Expand Up @@ -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.
Expand All @@ -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:
Expand All @@ -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
2 changes: 1 addition & 1 deletion src/mamidimemo/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public static class Program
/// <summary>
///
/// </summary>
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 };

Expand Down
2 changes: 1 addition & 1 deletion src/mamidimemo/instruments/ArpSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions src/mamidimemo/instruments/BasicFxSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand Down Expand Up @@ -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
{
Expand Down
134 changes: 78 additions & 56 deletions src/mamidimemo/instruments/GBAPU.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down Expand Up @@ -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]
Expand Down Expand Up @@ -911,7 +860,6 @@ public byte EnableLength
}
}


private byte f_EnvInitialVolume = 15;

[DataMember]
Expand Down Expand Up @@ -1088,9 +1036,24 @@ public string WsgDataSerializeData
}



/// <summary>
///
/// </summary>
[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();
}


Expand Down Expand Up @@ -1119,6 +1082,65 @@ public override void RestoreFrom(string serializeData)
}


[JsonConverter(typeof(NoTypeConverterJsonConverter<SPSGSweepSettings>))]
[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<BasicFxSettings>))]
[TypeConverter(typeof(CustomExpandableObjectConverter))]
[DataContract]
Expand All @@ -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
{
Expand Down
2 changes: 1 addition & 1 deletion src/mamidimemo/instruments/RP2A03.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand Down

0 comments on commit 76c1c4d

Please sign in to comment.