Jump to content

Traktorizer - Blog


MTE

Recommended Posts

Hi

also

du benutzt einen ganz normalen encoder für die wheels, oder ?

ich habe mir diese gekauft --> http://www.pollin.de/shop/detail.php?pg=NQ==&a=Njg2OTU3OTk=

und die Rasterung entfernt --> http://www.midibox.org/forum/index.php?topic=6693.0

ist es nicht eigentlich egal, an welche SR man die encoder anschliesst ?

in meiner Firmware, welche Wild Weasel erstellt hat sind die encoder auf die ersten 2 SRs definiert, also hab ich indemfall auf diese auch gelötet...is ja Jacke wie Hose eigentlich....  ;D

ich habe ein jog dial ( typ Alps ) aus einem doppel-dvd- player und möchte das innere rad und den äusseren shuttle ring benutzen, um durch das menü im traktor zu wandern, ist dies auch schon realisiert ?

dürfte vermutlich dieses Jog-Wheel hier sein, hab hier auch noch eins rumliegen das verbau ich in meinen MB-SEQ ;)    http://www3.alps.co.jp/WebObjects/catalog.woa/PDF/E/Switch/Encoder/SRGP/SRGP.PDF

realisiert hat es auch Wild Weasel eben,,,guggst du hier  --> http://www.midibox.org/forum/index.php?topic=3852.0

da hat er auch die gleichen ALPS Jog-Shuttles verbaut :)

Wild Weasel ist einfach unser Mann  ;D  ;D

  oder Frau  ???  ;D  :o  ::) 

Greetz

MTE

Link to comment
Share on other sites

  • Replies 231
  • Created
  • Last Reply

Top Posters In This Topic

Hi,

danke für deine Rückmeldung, bin hald immernoch mit dem hardware- design beschäftigt,

( siehe Traktor controller design unter der rubrik design concept )

mit der Software habe ich mich bislang noch nicht wirklich befasst, habe aber schon einen 8051 mit C programmiert,

ein wenig assembler sollte auch gehen,

mfg

ranger930

ps.: bin schon ganz heiss auf deine bilder !

Link to comment
Share on other sites

lol,

die deutschen haben gewonnen,

is aber ein anderes thema,

kontrol dj, ein super geiles pult mit unwiderstehlichen wheels ist bekannt ? , das problem ist die herstellung,

meine idee war ursprünglich diese wheels aus alu zu fertigen, habe aber selbst keine drehbank,

zurück zu kontrol dj,

hab ein video gesehen, scratch und pitch bend, nur geil, auf eine antwort von hersteller des kontrol dj warte ich leider noch vergebens, 108mm alps encoder,

hast du alle module zusammengelötetet ?

mfg ranger930

Link to comment
Share on other sites

LöhöL, hier war auch Mega-Fussballer-Gezeter *kalaschnikovpackdurchdiestrasserenn

Jo das Video zu KDJ hab ich auch gesehen....sehr sehr geiles Teil, die Scratch Function will ich auch unbedingt haben....ist sicher auch nur ne kleine Programmierung, aber da bn ich noch weit entfernt.

hast du alle module zusammengelötetet ?

bezieht sich die Frage aufs WARUM, oder SCHON FERTIG  ??? *g

Ich hab sie alle gelötet weil ich vergaß Buchsenleisten zu bestellen....hält eh besser wenn man sie lötet ;)

Fertig isse soweit....fehlt nur noch die Button On/Off und Scratch-Geschichte...LEDs noch verlöten....Wheel Räder bauen...Tutti  :)

Sollte bis zum 30. fertig werden, da machen wir ne Outdoor-Psy-Party *Rummsschebber

Grüße

MTE

Link to comment
Share on other sites

Meinte "Transpose" ;)

ich habe kein display gesehen, hast du keins benutzt, zb. zur programmierung und kontrolle ?

Doch ich benutze immer ein LCD zum debuggen, geht ja gar net ohne eigentlich...

Grüße

MTE

Link to comment
Share on other sites

Aargh  *Kopfrauch

Ich versuch nun seit 2 Tagen die Buttons zu Programmieren, aber ohne deutsche Anleitung sehe ich da schwarz

void DIN_NotifyToggle(unsigned char pin, unsigned char pin_value) __wparam

dort stelle ich vermutlich die Parameter ein....nur wie  ???

mit if und else hab ich schon rumgespielt, aber bisher ohne Erfolg

ich möchte einfach folgendes machen ....

Beispiel:

wenn Taster 5 gedrückt wird soll er an bleiben...wieder gedrückt soll er ausgehen

wenn Taster 6 gedrückt wird soll er an bleiben aber T5 ausgehen....das gleiche soll mit den dazugehörigen LEDs natürlich geschehen.

kann mir jemand kurz eine Zeile und die Parameter erklären....den Rest dürfte ich dann selbst erkennen.

Please HELP  :-[

Grüße

MTE

P.S.:Ich bin nicht dumm, stelle mich nur manchmal dumm an  ;D

Link to comment
Share on other sites

Das die Taste "kleben"  bleibt kannst du in Traktor einstellen -> control type: hold oder toggle.

Du musst hold nehmen.

Das mit den Leds ist ein schwierigeres unterfangen.

http://www.ucapps.de/mios_c_set_dout.html

Das steht eh alles drinnen. Speziell halt das hier

// Note Off

      MIOS_DOUT_PinSet(pin, 0);

    } else {

      // Note On

      MIOS_DOUT_PinSet(pin, 1);

Wobei die variable pin halt von dem Taster übernommen werden muss.

m.

Link to comment
Share on other sites

Hi

weiss schon das man das im Traktor einstellen kann, nur was bringts mir wenns im Traktor geholdet ist und in der Box nicht, dann leuchtet ja die LED in der Box nicht...

es sollte ja sozusagen 1:1 mit der Boxeinstellung sein, damit man nicht die ganze Zeit auf den Bildschirm schauen muss, ob der Taster nun an ist oder net :)

Grüße

MTE

Link to comment
Share on other sites

Das Toggeln von Parameterwerten ist ziemlich trivial: erstelle eine Variable, die den Toggle-Status enthaelt, und aendere den Wert nur dann, wenn die entspr. Taste gedrueckt wurde. Die Variable kann auch von mehreren Tastern modifiziert werden... ich denke, wenn Du einfach mal in diese Richtung weiterprogrammierst, kommst Du schon sehr schnell dahinter

Gruss,

        Thorsten.

Link to comment
Share on other sites

hehe

ihr macht es mir nicht einfach, aber das ist ganz gut so.... :)

Ich steig da schon noch dahinter, um UCapps zu kapieren hab ich mit Duden aufm Schoß auch nur 2 Monate gebraucht *g

Grüße

MTE

Link to comment
Share on other sites

Moin,

leider nicht, schweigen im Walde,

wahrscheinlich will er keine jogwheels verkaufen,

denn er kennt bestimmt auch dieses forum, möchte aber seinen Controller verkaufen, kann ich ja verstehen, aber antworten könnte er trotzdem.

ich versuche jetzt jemanden zu finden, der mir aus Alu- Rundmaterial so etwas drehen kann, dort kommt dann ein encoder rein, ich bestelle mir für meinen Controller jetzt aber erstmal die Teile, löte alles zusammen, habe Reverse für encoder eingeplant,

Ach ja, spannend wird auch die Frontplatte, kaufen ist sehr teuer, deshalb habe ich mir aus dem Baumarkt eine 3mm Hartschaumplatte geholt ( ca 5 Euro ),

mal sehen wie ich dort die Faderschlitze und eckigen Auschnitte hinein bekomme,

gibt es auch mit einer dünnen aluschicht bei (x)bay, heisst dann dort "Dibond",

zeitweise recht günstig erhältlich,

wie weit bist Du mit Deiner Programmierung ?

Mfg ranger930

ps.: ( Timmendorfer Strand, Wasser 16 Grad, Luft 28 Grad, Sonne satt )

Link to comment
Share on other sites

Hi

Als Jogwheels hab ich nun 6 CDs aneinander geklebt, darauf kleb ich dann noch ne Gummimatte....ich lass das mal mit der Beleuchtung...

Mit der Programmierung komme ich nur träge voran, das Grundkonzept hab ich nu mal studiert und soweit verstanden, nur wie man diverse Zeilen definiert....kommt noch :)

Dibond......sehr interessantes Material...werf ich mal in die Testliste hier....werde in ferner Zukunft mit nem Kollegen ein Frontplattengeschäft aufziehen...aber wir sind noch ebbes in der Forschung...kann noch ne weile dauern.....

Hier Bodensee....Luft - zu stickig....Wassertemp - warm und Titten satt :P

Grüße

MTE

Link to comment
Share on other sites

Argh ich spring gleich ausm Kellerfenster

MIOS_SRIO_NumberSet(16);

Wenn ich die Douts alle aktiviert haben will muss das dann auf 16 stehen ?

das hiese dort sind DINs und DOUTs zusammengefasst ??

Wenn ich also Bsp. Wert 12 nehme wären 8 DIN-SRs und 4 DOUT-SRs aktiv ?

Link to comment
Share on other sites

Checkt mal bitte meinen code,irgendwo is der Wurm drin, kriege die DOUTs net zum laufen, mit "MidiIO" hab ich die module alle mitm Multimeter durchgeprüft....funzen

aber hier gehen sie komischerweise net

MAIN.C

#include "cmios.h"

#include "pic18f452.h"

unsigned char shuttle_1_alt;

unsigned char shuttle_2_alt;

void Init(void) __wparam

{

// define number of shift registers

MIOS_SRIO_NumberSet(16); 

MIOS_AIN_Muxed();

MIOS_AIN_NumberSet(25);

MIOS_AIN_DeadbandSet(7); // update frequency of SRIO chain

MIOS_SRIO_UpdateFrqSet(1); // ms

}

void Tick(void) __wparam

void Timer(void) __wparam

void DISPLAY_Init(void) __wparam

{

MIOS_LCD_Clear();

MIOS_LCD_CursorSet(0x00);   

MIOS_LCD_PrintCString("   Traktorizer");

MIOS_LCD_CursorSet(0x40);   

MIOS_LCD_PrintCString("     by MTE");

}

void DISPLAY_Tick(void) __wparam

void MPROC_NotifyReceivedEvnt(unsigned char evnt0, unsigned char evnt1, unsigned char evnt2) __wparam

{

   MIOS_LCD_Clear();

   MIOS_LCD_PrintCString("Received:");

   MIOS_LCD_CursorSet(0x40);

   MIOS_LCD_PrintHex2(evnt0);

   MIOS_LCD_PrintHex2(evnt1);

   MIOS_LCD_PrintHex2(evnt2);

}

void MPROC_NotifyFoundEvent(unsigned entry, unsigned char evnt0, unsigned char evnt1, unsigned char evnt2) __wparam

void MPROC_NotifyTimeout(void) __wparam

void MPROC_NotifyReceivedByte(unsigned char byte) __wparam

void SR_Service_Prepare(void) __wparam

void SR_Service_Finish(void) __wparam

void DIN_NotifyToggle(unsigned char pin, unsigned char pin_value) __wparam

                         MIOS_MIDI_BeginStream();           

             MIOS_MIDI_TxBufferPut(0x90);

  MIOS_MIDI_TxBufferPut(pin);

  MIOS_MIDI_TxBufferPut(pin_value ? 0x00 : 0x7f);

  MIOS_MIDI_EndStream();           

                          MIOS_LCD_Clear();

MIOS_LCD_PrintCString("Button ");

                          MIOS_LCD_PrintBCD4(pin);

}

void ENC_NotifyChange(unsigned char encoder, char incrementer) __wparam

{

if (shuttle_2_alt == 1 && incrementer < 0 && encoder == 0)

{

MIOS_MIDI_TxBufferPut(0x94);   

MIOS_MIDI_TxBufferPut(0x70);

MIOS_MIDI_TxBufferPut(0x7f);

MIOS_LCD_Clear();

MIOS_LCD_PrintCString("Jog Wheel ");

MIOS_LCD_PrintBCD4(encoder);

MIOS_LCD_CursorSet(0x40);

MIOS_LCD_PrintCString("Rueckwaerts");

MIOS_Delay(25);

MIOS_MIDI_TxBufferPut(0x94);

MIOS_MIDI_TxBufferPut(0x70);

MIOS_MIDI_TxBufferPut(0x00);

}              if (shuttle_2_alt == 1 && incrementer > 0 && encoder == 0)

{

MIOS_MIDI_TxBufferPut(0x94);

MIOS_MIDI_TxBufferPut(0x71);

MIOS_MIDI_TxBufferPut(0x7f); 

MIOS_LCD_Clear();

MIOS_LCD_PrintCString("Jog Wheel ");

MIOS_LCD_PrintBCD4(encoder);

MIOS_LCD_CursorSet(0x40);

MIOS_LCD_PrintCString("Vorwaerts");

MIOS_Delay(25);

MIOS_MIDI_TxBufferPut(0x94);

MIOS_MIDI_TxBufferPut(0x71);

MIOS_MIDI_TxBufferPut(0x00);

}

if (shuttle_2_alt == 0 && incrementer < 0 && encoder == 0)

{

MIOS_MIDI_TxBufferPut(0x94);   

MIOS_MIDI_TxBufferPut(0x72);

MIOS_MIDI_TxBufferPut(0x7f);

MIOS_LCD_Clear();

MIOS_LCD_PrintCString("Jog Wheel: ");

MIOS_LCD_PrintBCD4(encoder);

MIOS_LCD_CursorSet(0x40);

MIOS_LCD_PrintCString("Rueckwaerts");

MIOS_Delay(50);

MIOS_MIDI_TxBufferPut(0x94);

MIOS_MIDI_TxBufferPut(0x72);

MIOS_MIDI_TxBufferPut(0x00);

}

if (shuttle_2_alt == 0 && incrementer > 0 && encoder == 0)

{

MIOS_MIDI_TxBufferPut(0x94);

MIOS_MIDI_TxBufferPut(0x73);

MIOS_MIDI_TxBufferPut(0x7f); 

MIOS_LCD_Clear();

MIOS_LCD_PrintCString("Jog Wheel: ");

MIOS_LCD_PrintBCD4(encoder);

MIOS_LCD_CursorSet(0x40);

MIOS_LCD_PrintCString("Vorwaerts");

MIOS_Delay(50);

MIOS_MIDI_TxBufferPut(0x94);

MIOS_MIDI_TxBufferPut(0x73);

MIOS_MIDI_TxBufferPut(0x00);

}

if (shuttle_1_alt == 1 && incrementer < 0 && encoder == 1)

{

MIOS_MIDI_TxBufferPut(0x94);   

MIOS_MIDI_TxBufferPut(0x04);

MIOS_MIDI_TxBufferPut(0x7f);

MIOS_LCD_Clear();

MIOS_LCD_PrintCString("Jog Wheel ");

MIOS_LCD_PrintBCD4(encoder);

MIOS_LCD_CursorSet(0x40);

MIOS_LCD_PrintCString("Rueckwaerts");

MIOS_Delay(25);

MIOS_MIDI_TxBufferPut(0x94);

MIOS_MIDI_TxBufferPut(0x04);

MIOS_MIDI_TxBufferPut(0x00);

}

if (shuttle_1_alt == 1 && incrementer > 0 && encoder == 1)

{

MIOS_MIDI_TxBufferPut(0x94);

MIOS_MIDI_TxBufferPut(0x05);

MIOS_MIDI_TxBufferPut(0x7f); 

MIOS_LCD_Clear();

MIOS_LCD_PrintCString("Jog Wheel ");

MIOS_LCD_PrintBCD4(encoder);

MIOS_LCD_CursorSet(0x40);

MIOS_LCD_PrintCString("Vorwaerts");

MIOS_Delay(25);

MIOS_MIDI_TxBufferPut(0x94);

MIOS_MIDI_TxBufferPut(0x05);

MIOS_MIDI_TxBufferPut(0x00);

}

if (shuttle_1_alt == 0 && incrementer < 0 && encoder == 1)

{

MIOS_MIDI_TxBufferPut(0x94);   

MIOS_MIDI_TxBufferPut(0x06);

MIOS_MIDI_TxBufferPut(0x7f);

MIOS_LCD_Clear();

MIOS_LCD_PrintCString("Jog Wheel: ");

MIOS_LCD_PrintBCD4(encoder);

MIOS_LCD_CursorSet(0x40);

MIOS_LCD_PrintCString("Rueckwaerts");

MIOS_Delay(50);

MIOS_MIDI_TxBufferPut(0x94);

MIOS_MIDI_TxBufferPut(0x06);

MIOS_MIDI_TxBufferPut(0x00);

}

if (shuttle_1_alt == 0 && incrementer > 0 && encoder == 1)

{

              MIOS_MIDI_TxBufferPut(0x94);

             MIOS_MIDI_TxBufferPut(0x07); MIOS_MIDI_TxBufferPut(0x7f); 

MIOS_LCD_Clear();

MIOS_LCD_PrintCString("Jog Wheel: ");

MIOS_LCD_PrintBCD4(encoder);

MIOS_LCD_CursorSet(0x40);

MIOS_LCD_PrintCString("Vorwaerts");

MIOS_Delay(50);

MIOS_MIDI_TxBufferPut(0x94);

MIOS_MIDI_TxBufferPut(0x07);

MIOS_MIDI_TxBufferPut(0x00);

}

}

void AIN_NotifyChange(unsigned char pin, unsigned int pin_value) __wparam

{

MIOS_LCD_Clear();

MIOS_LCD_CursorSet(0x00);

             MIOS_LCD_PrintCString("Fader / Pot");

MIOS_LCD_CursorSet(0x40);

MIOS_LCD_PrintBCD4(pin);

MIOS_LCD_PrintBCD4(MIOS_AIN_Pin7bitGet(pin));

MIOS_MIDI_BeginStream(); 

MIOS_MIDI_TxBufferPut(0xb0);

MIOS_MIDI_TxBufferPut(pin);

MIOS_MIDI_TxBufferPut(MIOS_AIN_Pin7bitGet(pin));

MIOS_MIDI_EndStream();   

}

mios_tables.inc

;

;; MIDI Trigger entry structure

MT_ENTRY MACRO event_0, event_1

dw (event_1 << 8) | event_0

ENDM

MT_EOT MACRO

dw 0xffff

ENDM

global _MIOS_MPROC_EVENT_TABLE

_MIOS_MPROC_EVENT_TABLE

MIOS_MPROC_EVENT_TABLE

;; entry 0x00-0x0f

MT_EOT

MT_EOT

.....

;; --------------------------------------------------------------------------

;; In this table DIN pins have to be assigned to rotary encoders for the

ENC_ENTRY MACRO sr, din_0, mode

dw (mode << 8) | (din_0 + 8*(sr-1))

ENDM

ENC_EOT MACRO

dw 0xffff

ENDM

global _MIOS_ENC_PIN_TABLE

_MIOS_ENC_PIN_TABLE

MIOS_ENC_PIN_TABLE

;; encoders 1-16

;;        SR  Pin  Mode

ENC_ENTRY  1,  0,  MIOS_ENC_MODE_NON_DETENTED    ;

ENC_ENTRY  1,  2,  MIOS_ENC_MODE_NON_DETENTED    ;

ENC_EOT

ENC_EOT

......

org 0x3300 ; never change the origin!

Grüße

MTE

Link to comment
Share on other sites

doch :)

MIOS_DOUT_PinGet

MIOS_DOUT_PinSet

MIOS_DOUT_PinSet0

MIOS_DOUT_PinSet1

MIOS_DOUT_SRGet

MIOS_DOUT_SRSet

Entweder du nimmst [tt]void MIOS_DOUT_PinSet(unsigned char pin, unsigned char value)[/tt], wobei value 1 (an) oder 0 (aus) ist, oder aber:

[tt]void MIOS_DOUT_PinSet1(unsigned char pin)[/tt] für einschalten und [tt]void MIOS_DOUT_PinSet0(unsigned char pin)[/tt] für's ausschalten :)

Grüße,

Michael

Link to comment
Share on other sites

naja, mehr als oben kann ich leider auch nicht schreiben, das DOUT_Set() war nur als allgemeiner "Bezeichner" gemeint für MIOS_DOUT_PinEinschalten()...sozusagen.

In deinem Code wird nirgendswo diese Zeile aufgerufen:

MIOS_DOUT_PinSet1(0); // schaltet pin1 am DOUT board einschalten

MIOS_DOUT_PinSet1(2); // schaltet pin3 am DOUT board ein

MIOS_DOUT_PinSet0(5); // schaltet pin6 am DOUT board aus

mehr isses wirklich nicht. Aber wenn du die Funktion nicht aufrufst, dann ist es irgendwie klar, dass sich nix schaltet...

In der Funktionsreferenz muss du auch unter C-IN und C-OUT schauen, da wird genauer erklärt, welche Werte du hinschicken musst und welche die Funktion zurückgibt...

Link to comment
Share on other sites

Jo mächtigen Dank mal für die viele Hilfe, ich hoffe ich geh euch net aufn Sack mit meinen Noob-Fragen...komme mittlerweile schon um einiges besser voran :)

mein Fehler war ich schrieb die Klammern falsch ( anstelle von {  ::)

Hab grad in der Wiki die Code:Blocks-Geschichte entdeckt....werd mich da mal reinarbeiten...

Langsam machts richtig Laune damit rumzuhacken :)

Grüße

MTE

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...

×
×
  • Create New...