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: AverageMCP3008 VoltageMonitor mbed-rtos mbed mcp3008
Fork of KIK01_Proto05 by
Diff: main.cpp
- Revision:
- 10:79134dbb339d
- Parent:
- 9:d1e6eae9722b
- Child:
- 11:7e11404adca0
diff -r d1e6eae9722b -r 79134dbb339d main.cpp
--- a/main.cpp Sun Jun 04 11:39:50 2017 +0000
+++ b/main.cpp Tue Jun 06 11:00:12 2017 +0000
@@ -9,12 +9,14 @@
#include "mbed.h"
#include "rtos.h"
+#define UART_TRACE (1)
#define TITLE_STR1 ("KIK01 Kick Machine")
-#define TITLE_STR2 ("20170604")
+#define TITLE_STR2 ("20170606")
#define PI_F (3.1415926f)
#define SAMPLING_RATE (96000)
#define SAMPLING_PERIOD (1.0f/SAMPLING_RATE)
+#define UPDATE_RATE (1000)
AnalogOut Dac1(PA_5);
@@ -30,6 +32,7 @@
AnalogIn Ain8(PC_4);
AnalogIn Ain9(PB_1);
AnalogIn Ain10(PC_5);
+AnalogIn Ain11(PA_6);
class EnvelopeAR {
public:
@@ -143,7 +146,7 @@
if (phi >= 1.0f) {
phi -= 2.0f;
}
- float level = sinf(PI_F * phi) * amplitude;
+ float level = cosf(PI_F * phi) * amplitude;
Dac1.write((level * 0.7f + 1.0f) / 2.0f);
}
@@ -166,11 +169,11 @@
void update()
{
ticks++;
- if (ticks >= SAMPLING_RATE / 1000) {
+ if (ticks >= SAMPLING_RATE / UPDATE_RATE) {
ticks = 0;
// set envelope parameters
- envelopeLength = 60 * 1000 / bpm;
+ //envelopeLength = 60 * UPDATE_RATE / bpm;
envelopeAmplitude.setAttack(amplitudeParam.attack);
envelopeAmplitude.setRelease(amplitudeParam.release);
@@ -196,6 +199,7 @@
void setParams()
{
bpm = Ain0.read() * 180.0f + 60.0f;
+ envelopeLength = 60 * UPDATE_RATE / bpm;
amplitudeParam.attack = Ain1.read() * envelopeLength;
amplitudeParam.release = Ain2.read() * envelopeLength;
@@ -206,7 +210,7 @@
amplitudeParam.releaseTauRatio = Ain4.read() + 0.01f;
frequencyParam.attack = Ain8.read() * envelopeLength * 0.1f;
- frequencyParam.release = 300;
+ frequencyParam.release = Ain11.read() * envelopeLength + 1;
frequencyParam.v0 = Ain5.read() * 4000.0f;
frequencyParam.v1 = Ain6.read() * 400.0f;
frequencyParam.v2 = Ain7.read() * 400.0f;
@@ -233,6 +237,8 @@
for (;;) {
setParams();
+
+ #if UART_TRACE
printf("%.1f\t%d\t", bpm, envelopeLength);
printf("%d\t%d\t", amplitudeParam.attack, amplitudeParam.release);
@@ -242,6 +248,7 @@
printf("%d\t%d\t", frequencyParam.attack, frequencyParam.release);
printf("%.2f\t%.2f\t%.2f\t", frequencyParam.v0, frequencyParam.v1, frequencyParam.v2);
printf("%.2f\t%.2f\r\n", frequencyParam.attackTauRatio, frequencyParam.releaseTauRatio);
+ #endif
Thread::wait(100);
}
