Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: Amp AverageAnalogIn BaseMachineUIController Envelope ExioBufferdController FilterController MCP23S17 PinDetect RotaryEncoder Sequence SequencerDisplay mbed-rtos mbed st7567LCD AT24C1024 OscController
Revision 29:5ca5aef9e7ca, committed 2017-05-22
- Comitter:
- ryood
- Date:
- Mon May 22 23:00:08 2017 +0000
- Branch:
- FilterEnvelope
- Parent:
- 28:407c9f46a07c
- Commit message:
- Impl. FilterEnvelope
Changed in this revision
diff -r 407c9f46a07c -r 5ca5aef9e7ca BaseMachineCommon.h
--- a/BaseMachineCommon.h Mon May 22 14:26:31 2017 +0000
+++ b/BaseMachineCommon.h Mon May 22 23:00:08 2017 +0000
@@ -8,11 +8,11 @@
#ifndef _BASEMACHINE_COMMON_H_
#define _BASEMACHINE_COMMON_H_
-#define USE_VCVS 1
-//#define USE_SVF 1
+//#define USE_VCVS 1
+#define USE_SVF 1
#define TITLE_STR1 ("BaseMachine Test")
-#define TITLE_STR2 ("2017.05.04")
+#define TITLE_STR2 ("2017.05.23")
#if USE_VCVS
#define TITLE_STR3 ("VCVS LPF Version")
diff -r 407c9f46a07c -r 5ca5aef9e7ca Envelope.lib --- a/Envelope.lib Mon May 22 14:26:31 2017 +0000 +++ b/Envelope.lib Mon May 22 23:00:08 2017 +0000 @@ -1,1 +1,1 @@ -https://developer.mbed.org/users/ryood/code/Envelope/#f1094f102701 +https://developer.mbed.org/users/ryood/code/Envelope/#e2e50902edee
diff -r 407c9f46a07c -r 5ca5aef9e7ca FilterController.lib --- a/FilterController.lib Mon May 22 14:26:31 2017 +0000 +++ b/FilterController.lib Mon May 22 23:00:08 2017 +0000 @@ -1,1 +1,1 @@ -https://developer.mbed.org/users/ryood/code/FilterController/#01a7e00317be +https://developer.mbed.org/users/ryood/code/FilterController/#5be9dcebbd62
diff -r 407c9f46a07c -r 5ca5aef9e7ca main.cpp
--- a/main.cpp Mon May 22 14:26:31 2017 +0000
+++ b/main.cpp Mon May 22 23:00:08 2017 +0000
@@ -49,7 +49,7 @@
#if USE_VCVS
SpiVcvsLpfController FilterController(&SpiMaster, D10);
-#else if USE_SVF
+#elif USE_SVF
SpiSvfController FilterController(&SpiMaster, D10);
#endif
@@ -67,26 +67,38 @@
//------------------------------------------------------------------------
void updateTicks(int ticks)
{
+ uint16_t level = EnvelopeGenerator.update(sequences[SequenceSender.getStep()].isTie());
+
+ // Amp
+ uint16_t ampLevel = level;
if (sequences[SequenceSender.getStep()].isNoteOn())
{
- uint16_t level = EnvelopeGenerator.update(sequences[SequenceSender.getStep()].isTie());
- level = level >> 1;
+ ampLevel = ampLevel >> 1;
if (sequences[SequenceSender.getStep()].isAccent())
{
- // Todo: 小数点演算を整数に
- level *= 1.0f + ((float)UIController.getAccentLevel()) / 128.0f;
+ ampLevel = ampLevel * (1.0f + ((float)UIController.getAccentLevel()) / 128.0f);
}
- AmpController.outDca(level);
}
else
{
- AmpController.outDca(0);
+ ampLevel = 0;
}
+ AmpController.outDca(ampLevel);
+ // Oscillator
OscController.setFrequency10(SequenceSender.getFrequency10());
OscController.outDco();
- FilterController.outDcf();
+ // Filter Env Mod
+ uint16_t cutoff16 = FilterController.getCutoff();
+ uint8_t resonance = FilterController.getResonance();
+ uint8_t mod = FilterController.getModLevel();
+ float modCoeff = (float)mod / (float)(cutoff16 << 1);
+ cutoff16 = cutoff16 * (1.0f + ((float)level / 0x8000) * modCoeff);
+ if (cutoff16 > 255) {
+ cutoff16 = 255;
+ }
+ FilterController.outDcf(cutoff16, resonance);
if (ticks == 0)
{
@@ -117,7 +129,8 @@
EnvelopeParam env;
UIController.getEnvelopeParam(&env);
- envelope.setLevel(env.level << 5);
+ //envelope.setLevel(env.level << 5);
+ FilterController.setModLevel(env.level << 1);
//ToDo: Impl. envelope length
envelope.setLength(envelopeLength);
envelope.setDuration((float)env.duration / 128.0f * envelopeLength);