Jump to content

TekkStar - Midification of a Tama Techstar 306


Phatline
 Share

Recommended Posts

TekkStar formerly "Tama Techstar 306"



https://vimeo.com/113875738

once in the 80Å› this was a brainless Drumexpander for Electronic Drum Kits...
30years later it gets a brain, no sequencing @ all, but note processing, and with note processing you can do a lot by doing less... wile a korg electribe rythm is sequencing, you can takt that and Kill, invert, roll, reroute, Offsets the notes and make trigger out of it...

this drumexpander is velocity sensitive that meens, i could use a AOUT Board for this.... BUT i think that is a little bit overkill --- i decidet to take a DINX4, change the Resistors and make a 4Stage Veloctiy Trigger.
I know that is enough because, i have already programmed a groovebox in max msp, that uses 3 Velocitys (3 Colours in the button matrix) - so 4 of it- enough...

A AOUT board is still a plan - but not for trigger, - more for a VCA and VCF @ the Master > from my livesetup with other drumachines, i saw that it is very "doing less sounding much" if you can change the Release time of the Master --- by trigger a VCA (the trigger is selectable)... and VCF -without words!

As you see this Case holds:
4 Analog Tom - Board
1 Analog Synth -Board
1 Analog Clap -Board
-a Mixboard, which i dont use anymore, i need place for 2xDoutX4 and a DinX4!



From Behind, already installed:
The Core, and a modified DOUTX4 Board, A Core-Powerswitch (to reboot), and a PowerConnect where before was a Cable.



Finding the best Resistor Values for the DoutX4 Board, by using 5K Trimpots
As you see I used 4 Off it, so one Trigger has 4 Velocity-Stages.



After finding the correct Values, and then testing fixed resistors in the near of the Pot Values (by ear),
its time to solder a bit...



well 2h 40min Later





found a place for it, and wired the trigger outputs to the Drumvoices



The 7th Board - the "Mix Board" a useless device that do not very much, ok, it makes headphone output a symmetric audio and so on, but how cares, I NEED PLACE for the UI and for the Midibox Boards (DOUTX4 DINX4 and so on), but bevore I had to solder a Adapter, because the Connecter pins are swapping on this board before it goes to the powersupply



The Powersupply, supply me with +6VDC, and the coolest: -15 +15VDC!!!! yes I have planes... but The CORE wants 5V, so find a place for a 7805



found it!

http://midibox.org/forums/gallery/image/2597-tekkstar_make_021_ps_drill-holesjpg/


http://midibox.org/forums/gallery/image/2598-tekkstar_make_022_ps_solderingjpg/


http://midibox.org/forums/gallery/image/2600-tekkstar_make_024_ps_donejpg/



The core fits well behind the Trafo, but the Powercord sucks!

http://midibox.org/forums/gallery/image/2605-tekkstar_make_029_core-mountingjpg/



Away with that ugly grey chord - a real Power Connector a "Kaltgerätebuchse" - hell yeah!

http://midibox.org/forums/gallery/image/2601-tekkstar_make_025_ps_ad-power-connectorjpg/



But hey Core should be shieldet against the trafo, i searched my metal cases, and i found a very soft flexible Metall which is great for such ferromagnetic shielding stuff...

http://midibox.org/forums/gallery/image/2603-tekkstar_make_027_ps_core-shieldjpg/




Programming and testing Functions on Prototype Connector Boards "PressFitPCB"

http://midibox.org/forums/gallery/image/2610-tekkstar_make_034_ui-program-btn-ledsjpg/



Because the TOM4 Board was Broken "Haarriss" the PCB-was broken, i had to solder something by the way i made my own first mods for this (by looking @ the shematic, which is very good to understand) Edited by Phatline
Link to comment
Share on other sites

also in desktop-mode nice

 
The trigger input of an drumvoice

Solder the Trigger-Cable to this Potentiometer

cut the the trace - located behind the switch - right to the led - @the top of the PCB. > this because, the unpluged 6,3er socket is switched to ground - and @ ground - no trigger accours...
... it might be a good idea, to cut remove the Plug to get more free space 4 UI! or a big display, or maybe 16 Buttons 4 a sequencer... well i dont know - time will tell
 
this is short & the hot clue is Chord-Clip again!

 
From TriggerX8 to DoutX4

 
Huuu the idea

I had an idea: rotate the the Routing "Trigger-Matrix" 45°
& you have a ergonomic UI for your hands! - You better play it like an instrument then - in theory.
 
lets look in the detail --- ah on every side to the Matrix should be Faders to change Kill, VelocityOffset, VCA-Release & maybe Cutoff

 
now differnt tools - Doing by doing

 
more space 4 Fingers, but way to big 4 this project

 

hmm difficult to play like an instrument but better maybe with "blindenschrift" onit....
 
well then thats the way...

 
and thats not! (from old SID)
 
The big spacer is to big!!!! the small maybe a bit to small - so i will order 100 small ones, and 100 1mm bigger...
 
 
THATS IT FOR A WHILE... have to order some parts
  • Like 1
Link to comment
Share on other sites

well this 3rd post will keep the main.c uptodate, the code is simple but may be interesting

/* main.c
 * TekkStar
 *
 * build 2 Midimize a Tama Techstar 306 >>> Do something usefull with it...
 * 4 Velocity per Voice, 8 Voices (6 Drums + 1Filter +1 Amp).
 * 4 Velocity Depending Note Killswitches 
 * random Note Kill Fader
 * Velocity Offset Fader
 *
 * Hardware:
 * 1stDOUTX4: 1st Voice: Pin0-3   =Velocity 0-3 (use different Resistor Values)
 * 	      2nd Voice: Pin4-7   =Velocity 0-3 (I used: 5K6,4K7,2K2,1K)
 * ....	      8th Voice: Pin28-31 =Velocity 0-3 (Connect together: all 4 Resistors @ Trig-out-side)
 * 2ndDOUTX4: Pin 32 = Kill-Button-Velocity 3
 *            Pin 33 = Kill-Button-Velocity 2
 *            Pin 34 = Kill-Button-Velocity 1
 *            Pin 35 = Kill-Button-Velocity 0
 *            Pin 36 = Kill-Button-Velo-Trigger-Indicator3 (easier find which BTNs make Effect...)
 *            Pin 37 = Kill-Button-Velo-Trigger-Indicator2 (...not all 4 Velocitys are always used...)
 *            Pin 38 = Kill-Button-Velo-Trigger-Indicator1 (...sometime you hear nothing...)
 *            Pin 39 = Kill-Button-Velo-Trigger-Indicator0 (...and thats may be not good...)
 * 3rdDOUTX4: Pin 40 = Gate Indicator 4 Random Kill > Flashes if Notes get killed          
 *            Pin 41 = Velocity Invert Button > Inverts the 4 Velocity Stages (lo=hi, hi=lo)
 *            Pin 42 = OverRoll --- Take every incoming Notes and place it on all Triggers

 * J5 of 8Bit Core: Analog Input 0: random Kill
 *                  Analog Input 1: Velocit Offset (0=-64,64=Orginal,127=+64)
 *            
 *
 * ==========================================================================
 *  Copyright - Phatline aka Crimic aka GreatFullTekk
 *  Licensed for personal non-commercial use only. All other rights reserved.
 * ==========================================================================
 */
/////////////////////////////////////////////////////////////////////////////
//Include files
#include <cmios.h>
#include <pic18fregs.h>
#include "main.h"

/////////////////////////////////////////////////////////////////////////////
// VARIABLES --- Global & Local//////////////////////////////////////////////
app_flags_t app_flags; // status of app (see bitfield declaration in main.h)

unsigned char last_ain_pin;
unsigned char last_din_pin;
unsigned char last_dout_pin;

// Midisetup
int CHON; 
int CHOF; 
int N0;
int N1;
int N2;
int N3;
int N4;
int N5;
int N6;
int N7;

// Pots
unsigned int random;
unsigned int VelOff;
unsigned int VelInvert; //Invert the Pins by Velocity spreading....
unsigned int random1;

int velocity;
int velopin;

int KillBtn1;
int KillBtn2;
int KillBtn3;
int KillBtn4;

int OverRoll;

unsigned char random_seed_l;
unsigned char random_seed_h;
unsigned int random_tmp;
unsigned int random_nr;
int rgate;

/////////////////////////////////////////////////////////////////////////////
// INITALIZE ////////////////////////////////////////////////////////////////
void Init(void) __wparam
{
  MIOS_AIN_NumberSet(7);
  MIOS_AIN_UnMuxed();
  MIOS_AIN_DeadbandSet(7);

//DIN DOUT AIN Setup
  MIOS_SRIO_UpdateFrqSet(1); //set shift register update frequency in ms
  MIOS_SRIO_NumberSet(9); // we need to set at least one IO shift register pair
  MIOS_SRIO_DebounceSet(10); //debouncing value for DINs
  MIOS_SRIO_TS_SensitivitySet(0);

// Midisetup (Channels, Note Numbers for Trigger)
CHON = 153; //Ch1:90, 2:91, 3:92, 4:93, 5:94, 6:95, 7:96, 8:97, 9:98, 10:153, 11:9A, 12:9B, 13:9C...
CHOF = 137; //Ch1:80, 2:81, 3:82, 4:83, 5:84, 6:85, 7:86, 8:87, 9:88, 10:137, 11:8A, 12:8B, 13:8C...
N0 = 48; //Note - Input Nr.
N1 = 49;
N2 = 50;
N3 = 51;
N4 = 52;
N5 = 53;
N6 = 54;
N7 = 55;

velocity = 0;
velopin = 0;
KillBtn1 = 1; MIOS_DOUT_PinSet(32, 1);
KillBtn2 = 1; MIOS_DOUT_PinSet(33, 1);
KillBtn3 = 1; MIOS_DOUT_PinSet(34, 1);
KillBtn4 = 1; MIOS_DOUT_PinSet(35, 1);
OverRoll = 0;

random = 0; //Analog In: randomly Kill Notes Events --- 0=0Kill 255=All Kill
VelOff = 64;    //Shifts Velocity Spreading for the DOUTs (where differnt Resistor Values soldered..)
VelInvert = 0;  //Invert the Pins by Velocity spreading....
random1 = 0;    //1st Kill Function (Operator only -used 4 coding)
random_seed_l = 0;
random_seed_h = 127;
rgate = 1;
random_tmp = 64;
random_nr = 127;
}

/////////////////////////////////////////////////////////////////////////////
// This function is called by MIOS in the mainloop when nothing else is to do
/////////////////////////////////////////////////////////////////////////////
void Tick(void) __wparam
{}
/////////////////////////////////////////////////////////////////////////////
// This function is periodically called by MIOS. The frequency has to be
// initialized with MIOS_Timer_Set
/////////////////////////////////////////////////////////////////////////////
void Timer(void) __wparam
{}
/////////////////////////////////////////////////////////////////////////////
// This function is called by MIOS when the display content should be 
// initialized. Thats the case during startup and after a temporary message
// has been printed on the screen
/////////////////////////////////////////////////////////////////////////////
void DISPLAY_Init(void) __wparam
{
MIOS_LCD_Clear();         // clear screen
MIOS_LCD_CursorSet(0x00); //step2 1st Line
MIOS_LCD_PrintCString("TekkStar"); //message 1st Line
MIOS_LCD_CursorSet(0x40); //step2 2nd Line
MIOS_LCD_PrintCString("GreatFullTekk");  //message 2nd Line
}

/////////////////////////////////////////////////////////////////////////////
//  This function is called in the mainloop when no temporary message is shown
//  on screen. Print the realtime messages here
/////////////////////////////////////////////////////////////////////////////
void DISPLAY_Tick(void) __wparam
{
  // do nothing if no update has been requested
  if( !app_flags.DISPLAY_UPDATE_REQ )
    return;

  // clear request
  app_flags.DISPLAY_UPDATE_REQ = 0;
}

/////////////////////////////////////////////////////////////////////////////
//  This function is called by MIOS when a complete MIDI event has been received
/////////////////////////////////////////////////////////////////////////////
void MPROC_NotifyReceivedEvnt(unsigned char evnt0, unsigned char evnt1, unsigned char evnt2) __wparam
{
if(evnt0 == CHOF) { // if note off: force evnt2 to 0 for easier handling of 'LED off'
    evnt2 = 0;
    MIOS_DOUT_PinSet(0, 0); //1st DOUT-Shift-Register --- Turn Off
    MIOS_DOUT_PinSet(1, 0); 
    MIOS_DOUT_PinSet(2, 0);
    MIOS_DOUT_PinSet(3, 0); 
    MIOS_DOUT_PinSet(4, 0);
    MIOS_DOUT_PinSet(5, 0); 
    MIOS_DOUT_PinSet(6, 0);
    MIOS_DOUT_PinSet(7, 0); 
    MIOS_DOUT_PinSet(8, 0); //2nd DOUT-Shift-Register --- Turn Off
    MIOS_DOUT_PinSet(9, 0); 
    MIOS_DOUT_PinSet(10, 0);
    MIOS_DOUT_PinSet(11, 0); 
    MIOS_DOUT_PinSet(12, 0);
    MIOS_DOUT_PinSet(13, 0); 
    MIOS_DOUT_PinSet(14, 0);
    MIOS_DOUT_PinSet(15, 0); 
    MIOS_DOUT_PinSet(16, 0); //3rd DOUT-Shift-Register --- Turn Off
    MIOS_DOUT_PinSet(17, 0); 
    MIOS_DOUT_PinSet(18, 0);
    MIOS_DOUT_PinSet(19, 0); 
    MIOS_DOUT_PinSet(20, 0);
    MIOS_DOUT_PinSet(21, 0); 
    MIOS_DOUT_PinSet(22, 0);
    MIOS_DOUT_PinSet(23, 0); 
    MIOS_DOUT_PinSet(24, 0); //4th DOUT-Shift-Register --- Turn Off
    MIOS_DOUT_PinSet(25, 0); 
    MIOS_DOUT_PinSet(26, 0);
    MIOS_DOUT_PinSet(27, 0); 
    MIOS_DOUT_PinSet(28, 0);
    MIOS_DOUT_PinSet(29, 0); 
    MIOS_DOUT_PinSet(30, 0);
    MIOS_DOUT_PinSet(31, 0); 
    MIOS_DOUT_PinSet(36, 0); //5th DOUT-Shift-Register --- Turn Off (Velo-Split-Indicator)
    MIOS_DOUT_PinSet(37, 0); //5th DOUT-Shift-Register --- Turn Off (Velo-Split-Indicator)
    MIOS_DOUT_PinSet(38, 0); //5th DOUT-Shift-Register --- Turn Off (Velo-Split-Indicator)
    MIOS_DOUT_PinSet(39, 0); //5th DOUT-Shift-Register --- Turn Off (Velo-Split-Indicator)
}

//random Number Set
if(evnt0==CHON) { 
   random_tmp = random_seed_l * random_seed_h;
   random_seed_l = TMR0L + (random_tmp & 0xff); //TMR0L = Timer
   random_seed_h = 0x69 + (random_tmp >> 8);
   random_nr = random_tmp % 127; //>> 2;       // divede by 2 > bitshifting - thx2"kpete" 
}

//random Number <= random Poti?
if( (evnt0==CHON) && (random < random_nr) ) {rgate = 1; MIOS_DOUT_PinSet(40, 0);}//Pass Notes
if( (evnt0==CHON) && (random > random_nr) ) {rgate = 0; MIOS_DOUT_PinSet(40, 1);} //Kill Notes

//velocity + velocity offset 
if(evnt0==CHON) {velocity = evnt2 + (VelOff - 64);} //@64=orginal, @0=velo-64, @127=velo+64

//velocity > spreading 2 DOUT-Pins > split in 4 velocity groups (4Dout Pins, 4 different Resistors)
//Normal
if((evnt0==CHON) && (velocity < 30) && (VelInvert==0))                     
{velopin = 0; MIOS_DOUT_PinSet(36, 1);} //1K
if((evnt0==CHON) && (velocity > 30) && (velocity < 64) && (VelInvert==0))  
{velopin = 1; MIOS_DOUT_PinSet(37, 1);} //2K2
if((evnt0==CHON) && (velocity > 64) && (velocity < 96) && (VelInvert==0))  
{velopin = 2; MIOS_DOUT_PinSet(38, 1);} //4K7
if((evnt0==CHON) && (velocity > 90) && (VelInvert==0))                     
{velopin = 3; MIOS_DOUT_PinSet(39, 1);} //5K6

//Pins Inverted / swapped
if((evnt0==CHON) && (velocity < 30) && (VelInvert==1))                     
{velopin = 3; MIOS_DOUT_PinSet(39, 1);} //LED: Indicates Trigger - easier to find Effectiv Killbutton...
if((evnt0==CHON) && (velocity > 30) && (velocity < 64) && (VelInvert==1))  
{velopin = 2; MIOS_DOUT_PinSet(38, 1);} 
if((evnt0==CHON) && (velocity > 64) && (velocity < 96) && (VelInvert==1))  
{velopin = 1; MIOS_DOUT_PinSet(37, 1);} 
if((evnt0==CHON) && (velocity > 90) && (VelInvert==1))                     
{velopin = 1; MIOS_DOUT_PinSet(36, 1);}

//Trigger1 Detection - random Gate - Velocity set - Kill Pins - Overroll
if( (evnt0==CHON) && ((evnt1==N0) || (OverRoll==1)) && (rgate==1) && (velopin==3) && (KillBtn1==1) ) 
{MIOS_DOUT_PinSet(0, 1);} //1.Trigger, 1.Velociy
if( (evnt0==CHON) && ((evnt1==N0) || (OverRoll==1)) && (rgate==1) && (velopin==2) && (KillBtn2==1) ) 
{MIOS_DOUT_PinSet(1, 1);} //1.Trigger, 2.Velociy
if( (evnt0==CHON) && ((evnt1==N0) || (OverRoll==1)) && (rgate==1) && (velopin==1) && (KillBtn3==1) ) 
{MIOS_DOUT_PinSet(2, 1);} //1.Trigger, 3.Velociy
if( (evnt0==CHON) && ((evnt1==N0) || (OverRoll==1)) && (rgate==1) && (velopin==0) && (KillBtn4==1) ) 
{MIOS_DOUT_PinSet(3, 1);} //1.Trigger, 2.Velociy

//Trigger2 Detection - random Gate - Velocity set - Kill Pins
if( (evnt0==CHON) && ((evnt1==N1) || (OverRoll==1)) && (rgate==1) && (velopin==3) && (KillBtn1==1) ) 
{MIOS_DOUT_PinSet(4, 1);} //1.Trigger, 1.Velociy
if( (evnt0==CHON) && ((evnt1==N1) || (OverRoll==1)) && (rgate==1) && (velopin==2) && (KillBtn2==1) ) 
{MIOS_DOUT_PinSet(5, 1);} //1.Trigger, 2.Velociy
if( (evnt0==CHON) && ((evnt1==N1) || (OverRoll==1)) && (rgate==1) && (velopin==1) && (KillBtn3==1) ) 
{MIOS_DOUT_PinSet(6, 1);} //1.Trigger, 3.Velociy
if( (evnt0==CHON) && ((evnt1==N1) || (OverRoll==1)) && (rgate==1) && (velopin==0) && (KillBtn4==1) ) 
{MIOS_DOUT_PinSet(7, 1);} //1.Trigger, 2.Velociy

//Trigger3 Detection - random Gate - Velocity set - Kill Pins
if( (evnt0==CHON) && ((evnt1==N2) || (OverRoll==1)) && (rgate==1) && (velopin==3) && (KillBtn1==1) ) 
{MIOS_DOUT_PinSet(8, 1);} //1.Trigger, 1.Velociy
if( (evnt0==CHON) && ((evnt1==N2) || (OverRoll==1)) && (rgate==1) && (velopin==2) && (KillBtn2==1) ) 
{MIOS_DOUT_PinSet(9, 1);} //1.Trigger, 2.Velociy
if( (evnt0==CHON) && ((evnt1==N2) || (OverRoll==1)) && (rgate==1) && (velopin==1) && (KillBtn3==1) ) 
{MIOS_DOUT_PinSet(10, 1);} //1.Trigger, 3.Velociy
if( (evnt0==CHON) && ((evnt1==N2) || (OverRoll==1)) && (rgate==1) && (velopin==0) && (KillBtn4==1) ) 
{MIOS_DOUT_PinSet(11, 1);} //1.Trigger, 2.Velociy

//Trigger4 Detection - random Gate - Velocity set - Kill Pins
if( (evnt0==CHON) && ((evnt1==N3) || (OverRoll==1)) && (rgate==1) && (velopin==3) && (KillBtn1==1) ) 
{MIOS_DOUT_PinSet(12, 1);} //1.Trigger, 1.Velociy
if( (evnt0==CHON) && ((evnt1==N3) || (OverRoll==1)) && (rgate==1) && (velopin==2) && (KillBtn2==1) ) 
{MIOS_DOUT_PinSet(13, 1);} //1.Trigger, 2.Velociy
if( (evnt0==CHON) && ((evnt1==N3) || (OverRoll==1)) && (rgate==1) && (velopin==1) && (KillBtn3==1) ) 
{MIOS_DOUT_PinSet(14, 1);} //1.Trigger, 3.Velociy
if( (evnt0==CHON) && ((evnt1==N3) || (OverRoll==1)) && (rgate==1) && (velopin==0) && (KillBtn4==1) ) 
{MIOS_DOUT_PinSet(15, 1);} //1.Trigger, 2.Velociy

//Trigger5 Detection - random Gate - Velocity set - Kill Pins
if( (evnt0==CHON) && ((evnt1==N4) || (OverRoll==1)) && (rgate==1) && (velopin==3) && (KillBtn1==1) ) 
{MIOS_DOUT_PinSet(16, 1);} //1.Trigger, 1.Velociy
if( (evnt0==CHON) && ((evnt1==N4) || (OverRoll==1)) && (rgate==1) && (velopin==2) && (KillBtn2==1) ) 
{MIOS_DOUT_PinSet(17, 1);} //1.Trigger, 2.Velociy
if( (evnt0==CHON) && ((evnt1==N4) || (OverRoll==1)) && (rgate==1) && (velopin==1) && (KillBtn3==1) ) 
{MIOS_DOUT_PinSet(18, 1);} //1.Trigger, 3.Velociy
if( (evnt0==CHON) && ((evnt1==N4) || (OverRoll==1)) && (rgate==1) && (velopin==0) && (KillBtn4==1) ) 
{MIOS_DOUT_PinSet(19, 1);} //1.Trigger, 2.Velociy

//Trigger6 Detection - random Gate - Velocity set - Kill Pins
if( (evnt0==CHON) && ((evnt1==N5) || (OverRoll==1)) && (rgate==1) && (velopin==3) && (KillBtn1==1) ) 
{MIOS_DOUT_PinSet(20, 1);} //1.Trigger, 1.Velociy
if( (evnt0==CHON) && ((evnt1==N5) || (OverRoll==1)) && (rgate==1) && (velopin==2) && (KillBtn2==1) ) 
{MIOS_DOUT_PinSet(21, 1);} //1.Trigger, 2.Velociy
if( (evnt0==CHON) && ((evnt1==N5) || (OverRoll==1)) && (rgate==1) && (velopin==1) && (KillBtn3==1) ) 
{MIOS_DOUT_PinSet(22, 1);} //1.Trigger, 3.Velociy
if( (evnt0==CHON) && ((evnt1==N5) || (OverRoll==1)) && (rgate==1) && (velopin==0) && (KillBtn4==1) ) 
{MIOS_DOUT_PinSet(23, 1);} //1.Trigger, 2.Velociy

//Trigger7 Detection - random Gate - Velocity set - Kill Pins
if( (evnt0==CHON) && ((evnt1==N6) || (OverRoll==1)) && (rgate==1) && (velopin==3) && (KillBtn1==1) ) 
{MIOS_DOUT_PinSet(24, 1);} //1.Trigger, 1.Velociy
if( (evnt0==CHON) && ((evnt1==N6) || (OverRoll==1)) && (rgate==1) && (velopin==2) && (KillBtn2==1) ) 
{MIOS_DOUT_PinSet(25, 1);} //1.Trigger, 2.Velociy
if( (evnt0==CHON) && ((evnt1==N6) || (OverRoll==1)) && (rgate==1) && (velopin==1) && (KillBtn3==1) ) 
{MIOS_DOUT_PinSet(26, 1);} //1.Trigger, 3.Velociy
if( (evnt0==CHON) && ((evnt1==N6) || (OverRoll==1)) && (rgate==1) && (velopin==0) && (KillBtn4==1) ) 
{MIOS_DOUT_PinSet(27, 1);} //1.Trigger, 2.Velociy

//Trigger8 Detection - random Gate - Velocity set - Kill Pins
if( (evnt0==CHON) && ((evnt1==N7) || (OverRoll==1)) && (rgate==1) && (velopin==3) && (KillBtn1==1) ) 
{MIOS_DOUT_PinSet(28, 1);} //1.Trigger, 1.Velociy
if( (evnt0==CHON) && ((evnt1==N7) || (OverRoll==1)) && (rgate==1) && (velopin==2) && (KillBtn2==1) ) 
{MIOS_DOUT_PinSet(29, 1);} //1.Trigger, 2.Velociy
if( (evnt0==CHON) && ((evnt1==N7) || (OverRoll==1)) && (rgate==1) && (velopin==1) && (KillBtn3==1) ) 
{MIOS_DOUT_PinSet(30, 1);} //1.Trigger, 3.Velociy
if( (evnt0==CHON) && ((evnt1==N7) || (OverRoll==1)) && (rgate==1) && (velopin==0) && (KillBtn4==1) ) 
{MIOS_DOUT_PinSet(31, 1);} //1.Trigger, 2.Velociy
}

/////////////////////////////////////////////////////////////////////////////
// This function is called by MIOS when a MIDI event has been received
// which has been specified in the MIOS_MPROC_EVENT_TABLE
/////////////////////////////////////////////////////////////////////////////
void MPROC_NotifyFoundEvent(unsigned entry, unsigned char evnt0, unsigned char evnt1, unsigned char evnt2) __wparam
{}
/////////////////////////////////////////////////////////////////////////////
// This function is called by MIOS when a MIDI event has not been completly
// received within 2 seconds
/////////////////////////////////////////////////////////////////////////////
void MPROC_NotifyTimeout(void) __wparam
{}
/////////////////////////////////////////////////////////////////////////////
// This function is called by MIOS when a MIDI byte has been received
/////////////////////////////////////////////////////////////////////////////
void MPROC_NotifyReceivedByte(unsigned char byte) __wparam
{}
/////////////////////////////////////////////////////////////////////////////
// This function is called by MIOS before the shift register are loaded
/////////////////////////////////////////////////////////////////////////////
void SR_Service_Prepare(void) __wparam
{}
/////////////////////////////////////////////////////////////////////////////
// Shiftregister has been loaded?
/////////////////////////////////////////////////////////////////////////////
void SR_Service_Finish(void) __wparam
{}
/////////////////////////////////////////////////////////////////////////////
// Buttons has toggled?
// pin_value is 1 when button released, and 0 when button pressed
/////////////////////////////////////////////////////////////////////////////
void DIN_NotifyToggle(unsigned char pin, unsigned char pin_value) __wparam
{
//Toggle Kill-Switches & Kill-LEDs
if(pin == 0 && pin_value == 0){KillBtn1 =! KillBtn1;} //toggle
if(KillBtn1 == 0){MIOS_DOUT_PinSet(32, 0);} 
if(KillBtn1 == 1){MIOS_DOUT_PinSet(32, 1);} 

if(pin == 1 && pin_value == 0){KillBtn2 =! KillBtn2;} //toggle
if(KillBtn2 == 0){MIOS_DOUT_PinSet(33, 0);} 
if(KillBtn2 == 1){MIOS_DOUT_PinSet(33, 1);} 

if(pin == 2 && pin_value == 0){KillBtn3 =! KillBtn3;} //toggle
if(KillBtn3 == 0){MIOS_DOUT_PinSet(34, 0);} 
if(KillBtn3 == 1){MIOS_DOUT_PinSet(34, 1);} 

if(pin == 3 && pin_value == 0){KillBtn4 =! KillBtn4;} //toggle
if(KillBtn4 == 0){MIOS_DOUT_PinSet(35, 0);} 
if(KillBtn4 == 1){MIOS_DOUT_PinSet(35, 1);} 

if(pin == 4 && pin_value == 0){VelInvert =! VelInvert;} //toggle
if(VelInvert == 0){MIOS_DOUT_PinSet(41, 0);} 
if(VelInvert == 1){MIOS_DOUT_PinSet(41, 1);} 

if(pin == 5 && pin_value == 1){OverRoll = 0;} //Momentary
if(OverRoll == 0){MIOS_DOUT_PinSet(42, 1);} 
if(pin == 5 && pin_value == 0){OverRoll = 1;} //Momentary
if(OverRoll == 0){MIOS_DOUT_PinSet(42, 0);} 

MIOS_LCD_Clear();         // clear screen
MIOS_LCD_CursorSet(0x00); //step2 1st Line
MIOS_LCD_PrintBCD3(pin); //message 1st Line
MIOS_LCD_CursorSet(0x40); //step2 2nd Line
MIOS_LCD_PrintBCD3(pin_value);  //message 2nd Line
}
/////////////////////////////////////////////////////////////////////////////
// Encoder has Mooved?
// incrementer is positive when encoder has been turned clockwise, else
// it is negative
/////////////////////////////////////////////////////////////////////////////
void ENC_NotifyChange(unsigned char encoder, char incrementer) __wparam
{}
/////////////////////////////////////////////////////////////////////////////
// Potentiometer has Mooved?
/////////////////////////////////////////////////////////////////////////////
void AIN_NotifyChange(unsigned char pin, unsigned int pin_value) __wparam
{ 
random = MIOS_AIN_Pin7bitGet(0); 
VelOff = MIOS_AIN_Pin7bitGet(1);  
}
Link to comment
Share on other sites

Paint it Black - to avoid reflections of the Acrylic Overlay.

 
6Ours or so later (cant say... 2 evenings)

 
I cant help - I am in love

 

The hardware for the TRIGGER-MATRIX-PART is done

 
Well a bit to big... I have to replace 2 Potentiometers of the Clap-Section to the bottum (where is place).
even if i mount it 90° there is not enoug place (because of 2Faders left and right to the Matrix)

but big is good for my big fingers :phone:
Edited by Phatline
Link to comment
Share on other sites

Wired & Programmed

if you want the stripped down 8Bit LED-8x8-Matrix Code go there:

 

but it was a long way... after days i plugged the Matrix off, and Plugged two of these on:

very good for debugging and codeing...

 

yes and then it worked!!!!!!!!!!! YEAAAAA

https://vimeo.com/114452009

(ground hum from webcam...)

Link to comment
Share on other sites

  • 2 weeks later...

need place for the midibox stuff
 

plug and play resistor socket for Matrix leds (150Ohm is to dark)
 

make a resistor plug
 

plugged in --- here 100Ohm and still to dark LED
 

hole for Trigger Matrix --- dremel died
 

lcd hole... made by hand (dremel is dead)
 

lcd, menu encoder and analog trigger led
 

the digitall inner
 

Fully digitally stuffed
Edited by Phatline
Link to comment
Share on other sites

MODs off the Analog Part
Mono-Mode (All Modules):
if you just need 1 channel, it is a good idea, to remove follwing resistors to reduce Humming(alot):
TomModule: Rm
ClapModule: R360
SynthModule: R266
Why mono? Maybe you send the main to a mono vcf and vca? thats what i do...and this mode reduce the humming by my machine about half.



SYNTH-MODULE:
OverTone 1:
solder a 470K Resistor paralell to R258(which isorginally also 470K)
that overdrives the input of IC209
Overtone/Drive 2:
R210 (200K) solder 100K parallel to > doubles the loudness and gives some overtones.
You may try a pot... but dont forget to solder a savety-Reistor (dont know 1K) in series... to avoid to much current on the ics and Resistor (but i have noticed the board is very moding save...)
Deeper Tune:
turn the R223 1K Trimpot to most left...
The Big BOOOOM:
solder a 470K Resistor in series with a switch parallel to D203

CLAP-Module:
Very long Reverb time:
Replace R306 with an 1MOhm Linear Pot
then replace the useless "Reverb-time"Pot "VR32" with fixed 2x 47K Resistors (the pot is 100K and u can use it for other mods!!!)



HiPassFilter:
Replace R342 with a 1K5 Resistor in Series with a 100K Potentiometer---- take that one that you have left from the "Very long Reverb time"-Mod!
Make Place:
Remove Plugs for Trigger, Pad, Each-out, and cut away the PCB, like in the picture, then:
solder that little bridge over that Capacitor- that you see on the picture



BASIC-Module (TOM):
Distortion:
R52 (470K)---replace it with an 470K Linear Pot.(Kick:808>909>Square)
or replace it with an 220K Linear Pot. so it overdrives all the time a bit (Kick: 909>Square)
>If you do this mod, dont change R56(10K) elswhere you will gett crackling<
 

A bit Louder:
R56(10K) parallel soldering a 6K8>8K thatdoubles the Volume, which you need if you dont have the Mixing board, that may blow up the Volume @main.... but that mode may crackle if you have made the Distortion mod... so let it be...


The Big Booooooooom:
Decay long to EVER-OPEN: by parallel soldering a 100K to D5 - it is a good idea to make switch for that (so long that it humms)



Deeper Tune:
Bridge R6!


Emphasis Filter Frequency: (or is this Resonance?)
Replace Rh by an 100K log pot in series with an 100K resistor,
with 47K you get in self resonance...also 56K is in this shitty sound... better take a 100K TrimPot!
Pinout of the Pot: when you look from the top of the 100K pot (where you turn) then take first 2 Pins (negativ log) let the 3rd Leg open
If you dontneed the Attack-Pot (what is the trigger signal, in the signal path)then take that, by isolating the pins from the pcb, and do like above...
---I noticed that the lower frequencys are cut off a bit...better take a greater Resistance 470K or 1M!
 

Changing the cap "CFm":
let em out, give some really extrem high eardammage frequencys! holy for Highats!
--let them out and solderm the 2 open leads to 2 contantacts at the frontpanel--- with your finger you can do some lopassfiltering ;)))
480p Stryflex Foil Capacitor - mid noise telephone speaker
18nf Foil-Capacitor for mid hi kick (magengrube)
10uF 36V Bipolar Elko for mid-low-kicks
100uf 35FV Bipolar Elko for sub kicks and bass
BZX85C Diode --- sweeping 303 like sawtooth screaming

LT132SBL3040- connect the 2 outerpins to get some "knackness" or any other Chip silizium germanium or  whatever

i decidet for one Switch Position- to install a socket on the frontpanel to plug in diodes or transistors directly.... holy that make fun...
 

Edited by Phatline
Link to comment
Share on other sites

its Done!!!

 
and its a mod-ing dream... so its never done...

 
the basic program is on it, now its time for more programming... bankstick, savings of routings, then routing banks for song-parts...roll routings, flame, tempo delay, mute... and at last a vca on the master...

 

Edited by Phatline
Link to comment
Share on other sites

since the 8bit core had to little  Memory, i went to a LPC core... but this core is to big for the case... so i had to do some vector board core soldering... hhhmmm one day work!!! after 12ours (with testing the resistance/debuging)...:

 
the differnt sizes of cores...:

Edited by Phatline
Link to comment
Share on other sites

  • 2 weeks later...

I use Trigger Channel 7 + 8 as "Midi-Poly-Melody - Retrigger" - Trigger -Channels

 

Connections:

Midi-In-Port1: DrumSequencer

Midi-In-Port2: Melody Source on 2 differnt Midichannel (selectable for each Channel per Button)

Midi-Out-Port1: Melody Goal on 2 differnt Midichannels

 

here a video, with some functions off the "Tekkstar" and its Brain the "Trigger Matrix"

https://vimeo.com/117018283

Link to comment
Share on other sites

  • 4 weeks later...
Here a Block-Diagram> How does the Melody Retrigger works?
Here 1 Trigger-Voice: (all that *8 and you have the trigger matrix)

 
EDIT- the Melody Retrigger now works in a ther way.... i use RTOS task for decay-time-not-off-things....
Edited by Phatline
Link to comment
Share on other sites

  • 2 months later...

After a few months of jaming testing programming and debugging...

 

now a public beta of Version V1.0, which is specialised to work with the DI-OUt modules... see Attachment!

 

there is also a hardware manual -which meens what DOUT or DIN-Pin do what,

and the code itself is documented in app.c //...and so on

there is also a midi-implementation...that is a bit "beta" - not all controlls are sent out or can be received, some make no sense via midi (trigger indicators and other midi-stream shitting flackerings...)

how ever² if somebody wants to test it without havening the hardware: if somebody want to test it via OSC and a Tablet - then he must help me to get the OSC itself running --- (i already route the CCs internally to different functions, and midi is also no problem... the OSC-i-fiying of the program is no big deal, to initialze the ip and other ethernet basic thing is the hardest-for that i need help) i already own a lemur licensce and a ethernet wired tablet...

 

the manual and project describtion is deep beta...

 

Hm the future of the TM-CODE?

 

the Project-"TEKKSTAR" is done - except the OSC

A Triggermatrix-standalone-UI-PCB? maybe...but since i dont need that @ the moment, this will have to wait...but i must say - i like the idea of a handy 8x8 matrix and a lot of buttons, with triggerouts at the back... in the other hand - its a bit to small for a crown setup with synths, drummachines filters and so on...on the other side ... i thinked so much, and have a so "ready" concept/picture of this in my head - even i dont need it, even it is to small for my setup --- even off all - it could be a really cool midi-desktop tool that would make me happy to own it...just to say - no its not the Tekkstar --- yess thats the TRIGGER MATRIX! (without the analog drum-voices arround!)

 

the next extendet triggerMatrix -Code should work on the BLM-16x16 Matrix that a other user design @the moment..switchable from simple stepsequencer to TM-Mode

- on the code side a 16x16 matrix for trigger is no problem... just add more lines from the same code...replace some [1-8] to [1-16]

polyphone melodys are limited by ram and my code skills 6 channels i think are max...

@the moment:MidiChannel 4 5 6 7 and 8 are 128xPolyphonic Retrigger-channels for synth using --of course at the same time also Drumtrigger on the DOUT-Modules

how ever that could work:

Trigger 1-16 - DOUT Trigger

Trigger 1-10  -  Midi-Mono-Retrigger

Trigger 10-16 - Midi-Poly-Retrigger

- thats big enough for everything i have and can think of....ok ok...8 polyphonic retrigger channels would be kick ass, by using 8 polyphonic synths that are exactly tuned-and are fitting together (change the master tuning > change the mood > make healing music and so on)

 

how ever here in action:

https://vimeo.com/127922356

TriggerMatrix-V1.0beta.zip

Edited by Phatline
Link to comment
Share on other sites

  • 7 months later...

A Triggermatrix-standalone-UI-PCB? ... but i must say - i like the idea of a handy 8x8 matrix and a lot of buttons, with triggerouts at the back ... it could be a really cool midi-desktop tool that would make me happy to own it...just to say - no its not the Tekkstar --- yess thats the TRIGGER MATRIX!

This interests me very much.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...