Tastatur

Danke Peter,

ich denke wir müssen das noch etwas diskutieren, vieleicht kommen dann noch weitere “Erleuchtungen” ;D

Also die LED Ansteuerung soll über einen ULN2803 gemacht werden. Das ist ein TTL auf open-collector Wandler im DIP18 Gehäuse und kann pro Ausgang bis zu 500mA. Also mehr als ausreichend für diese Applikation.

Das Interface soll über eine Datei oder Dateien funktionnieren wo mAirList den jeweiligen Status des Players reinschreibt. (Das soll ähnlich funtionnieren wie früher die Mailboxen auf den Vaxrechnern, einfach und zuverlässig und protokollunabhängig)

Also meine Applikation scannt die File(s) im 100ms Interval und gibt den Inhalt der Files als Byte auf den Parallelport aus.
Jede Sekunde wird des weiteren der Status von mAirList gecheckt, also einfach geschaut ob der mAirList Process noch läuft.
Falls nicht wird 0 auf die Ausgänge des Ports gegeben um eventuelle noch anstehende LEDs zu löschen.
Das ist soweit schon alles vom Programm her.

Was ich jetzt benötige ist dass wenn Player Start/Stop/Fadeout, Cart Start/Stop/Fadeout oder Cart Loop On/Off der entsprechende Zustand in eine File geschrieben wird.
Der Zustand kann entweder in einzelne Files (sind ja nur maximal 10) geschrieben werden oder an eine definierte Stelle in der File (Array)

So, dein Script wäre ja dann direkt brauchbar für den CartPlayerStatus.
Wie sieht denn der Befehl aus um den CartPlayerLoopStatus abzufragen?

Gruss:
-Serge-

Also ich habe jetzt mal Peter’s Script so umgeändert dass ich den Status in eine File schreibe.

[code]procedure OnCartPlayerStateChange(PlayerIndex: integer; OldState: TPlayerState; NewState: TPlayerState);

var
sl: TStringList;

begin

if (PlayerIndex = 0) then begin

	sl := TStringList.Create;
	Case Newstate Of	
    	psEmpty:    ;
    	psLoading:  ;	
    	psLoaded:   ;
    	psPlaying:  sl.Add('1');
    	psFading:   ;
    	psEOF:      ;
    	psError:    ;
    	psPaused:   sl.Add('2');
    	psStopped:  sl.Add('0');
    	psPFL:      ;
    	psFlashEOF: ;
    	psNext:     ;
    	else        ;
	end;

	sl.SaveToFile('C:\LPT_Out\DF_0.txt');
	sl.Free;

end;

end;

begin
end.[/code]

funzt für psPaused und psPlaying.
leider nicht für psStopped

Jemand ne Idee?

Gruss:
-Serge-

OK, hab’s jetzt rausgefunden.

psStopped scheint nix zu machen ???

Für meine Anwendung brauche ich
psLoaded und psEmpty wo “0” geschrieben werden muss.

Torben, kannst du das mal mit dem psStopped nachschauen?
Ach ja, ich bräuchte auch Zugriff auf den Player Loop Mode. Wie lautet da die Syntax? psLoop?

Gruss:
-Serge-

Hiho,
das mit dem psStopped wundert mich, aber vielleicht auch nicht.
Gucken wir uns einen Ablauf im Player an…
Start-> Player läuft
Pause->Player hält an der aktuellen Posiition an
Stopp->Player wird gestoppt, entladen und nächster Titel geladen

Sprich das Bit für den Stop dürfte im normalen Ablauf nur ganz kurz auftauchen.
Ich hatte es bei mir am Anfang so gelöst das ein Player empty den Button blinken ließ. Aber das macht krank, daher habe ich Player leer = Button aus gemacht ist Augenschonender.

Jetzt noch zu deinem 1 Sekunden Scan ob MaL läuft. Lasse den Scan weg und nehme aus den Notification Scripts das Script “OnShutDown” oder so ähnlich. Dort einfach die Datei mit Null beschreiben.
Alle möglichen Notification scripts findest du unter Notification Scripts, das ist so eine sehr schöne Beispieldatei von Torben.

Willst du eigentlich einfarbige oder mehrfarbige LED’s einsetzten? Boar, jetzt krame ich sogar meine alten CMOS Datenlexika wieder raus…wusste doch das ich die mal irngedwann wieder brauche lach
Bei mehrfarbigen LED’s würde ich die Signale kodieren mit einem 74154 (4 Bit Demux) alternativ den 4067 aus der CMOS Reihe. Dahinter einfach ein paar Open Collector Treiber und eine kleine Widerstnadskaskade um die verschiedenen Spannungen für die Farben der LED’s zu erreichen (oder Multipin LEDs) Dann köntnest du mit 8 Bit acht Player darstellen. Kehrseite… das Script wird etwas heftiger um die Codierung zu erstellen gg was aber händelbar ist wenn du dir eine globale Hilfsvariable baust wo du die einzelnen Playerstatis binär ablegst.

Och, mir fallen grade ein paar Lösungen ein wie man das machen könnte lach. Erinnert mich irgendwie grade an mein altes Abschlussprojekt, aber da es ja auch günstig und einfach bleiben soll ist die Sache mit dem ULN am einfachsten.
Wenn du allerdings Zugang zu einem GAL Prommer hast so könnte ich dir nur empfehlen einen GAL zu programmieren… aber GAL’s kosten natürlich ein wenig mehr…

Grüße

Peter

Hi Peter,

das Script ist nun so belegt:
(Schnipp)

Case Newstate Of psEmpty: sl.Add('0'); psLoading: sl.Add('0'); psLoaded: sl.Add('0'); psPlaying: sl.Add('1'); psFading: sl.Add('2'); psEOF: sl.Add('0'); psError: sl.Add('0'); psPaused: sl.Add('2'); psStopped: sl.Add('0'); psPFL: sl.Add('2'); psFlashEOF: ; psNext: ; else sl.Add('-1'); end;
(Schnapp)

Die ‘2’ benutze ich dann um die LED blinken zu lassen.
Nee, also das mit den Multicolor LEDs tu’ ich mir nicht an ;D vielleicht in einem späteren Projekt…
Das mit dem “OnShutDown” habe ich vorhin auch gefunden. Werde das auch so handhaben.

Soweit wären die PlayerStatus mal abgedeckt.
Das einzige was ich nicht finde ist wie ich den Loopbutton von den Cartplayer abfragen kann.
Ich denke da muss ich mich an Torben wenden.

Die Tastatur soll 4x Cart-Start 4x Cart-Looptoggle und 2x Playerstart haben.

Letztlich bleibt jetzt nur noch die Suche nach flachen beleuchteten Tastern. Am besten wären Folientaster oder so. Bin aber noch ncht fündig geworden.

Gruss:
-Serge-

Hi Serge,
schaue mal bei der Firma “Rafi”. Die haben Kurzhub und Langhub Drucktaster auch mit LED punkt/flächen beleuchtend.
Ich denke aber das die Langhubtaster für dich interessanter sein dürften da der Einbau unproblematischer ist.
Da musst du dich mal durch den Online katalog wälzen.
Auf jeden Fall sind die biester gut stabil. Wir setzten die auch schon mal in Speziallösungen ein :slight_smile:

Viel Spaß beim gucken gg

Grüße

Peter

Ich hab’ mir schon einen Wolf gesucht.
Bei Rafi gibt’s schon was passendes. Leider sind die Preise jenseits von gut und böse.
Einen 20 Teuro Schalter da reinzusetzen ist leider nicht zu rechtfertigen.

Ich bleibe bei den Schurter Folientaster. Die sind im Preis unschlagbar. Habe oben in der Ecke eine LED eingefasst.
Das braucht zwar etwas Geschick geht aber recht unproblematisch und sieht sogar gut aus. Die zu beschriften ist auch kein Problem.
Ausserdem brauchen die meisten Kurzhubtaster einen quadratischen Ausschnitt. Mann hätte das ein Gefeile gegeben :stuck_out_tongue:

Morgen säble ich die Gamepad Platine zurecht und fange dann mal mit dem Einbau an. Hier beim ersten Versuch wird es eine kompakte 6er Tastatur mit Beleuchtung werden. Die werden wir später in unserer Produktionszelle einsetzen. Die wird nächstes Jahr aufgebaut.

Das Interface Programm ist auch sogut wie fertig. Habe es jetzt so gemacht dass im Playmodus die LED auf Dauerlicht ist, bei Pause die LED im Sekundentakt blinkt und bei Fadeout mit 0,2 Sekunden.
Muss nur noch den Check reinsetzen ob mAirList läuft. Wird mAirList gestoppt, stoppt auch automatisch das LPT-Interface.

Ach ja, ich suche noch einen Script welches eine Applikation aus mAirList raus starten kann. Mit mAirList soll automatisch das LPT-Interface gestartet werden. Ich denke das müsste irgendwie machbar sein.

Mit dem CartPlayer Loopstatus abfragen hast du auch keine Lösung? Torben hat sich dazu noch nicht geäussert. Denke der ist momentan mit andern Sachen beschäftigt. Hat ja auch noch etwas Zeit. Bei dieser Tastatur werden die eh nicht gebraucht.

Gruss:
-Serge-

Edit: OnStartup und ShellExecute war das was ich gesucht habe um eine externe Applikation zu starten.

Es gibt noch ShellExecuteHidden kuckst Du hier:
http://forum.mairlist.com/index.php/topic,3042.msg19896.html#msg19896

Zum Thema “beleuchtbare Taster” verweise ich gerne noch auf diesen Eintrag hier:

http://forum.mairlist.com/index.php/topic,833.msg4545.html#msg4545

Bei Bedarf…einfach PN :wink:

So, hier schon mal was zum lesen.
Ist noch nicht fertig, am Wochenende gehts weiter mit dem Zusammenbau

http://sites.internet.lu/folders/radiorom/Cartwall.pdf

Gruss:
-Serge-

Bin zwar nicht soweit gekommen wie ich vorhatte, aber immerhin…

(Wen’s interessiert)
Das updated Dokument ist online:
http://sites.internet.lu/folders/radiorom/Cartwall.pdf

Gruss:
-Serge-

Habe noch nicht den letzten Stand gelesen, aber das sah doch alles schon ganz gut aus.
Mit dem Loop Button…siehe englisches Forum von dir… ein Workaround der vielleicht klappen könnte.
Stelle sicher über ein Script das beim Start von MaL alle Loops aus sind. Du kannst, wenn ich das richtig verstanden habe aus der Konfig über die GUI Option bei Fernsteuerung den Loop ein/ausschalten. Das würde von extern her schon mal gehen.
Wenn man einen Weg findet um bei gleicher Aktion ein Script zu starten so könnte man darüber auch wieder die LED steuern.
Frage ist nur ob es eine Möglichkeit gibt diesen Button zu deaktivieren damit man ihn nicht mittels Maus klicken kann, sondenr nur über die Tastatur…
da muss ich mal in Ruhe drüber brüten. Bin nur leider im Mom auf Firma sehr eingespannt und meistens so wie jetzt eben erst wieder zu Hause…

Grüße

Peter

Danke für deinen Input, Peter.
Es müsste aber schon so sein dass die LED aufleuchtet wenn per Maus Loop aktiviert wird.
Aber ich verstehe schon wie du das lösen willst.

Gruss:
-Serge-

So, die Beschriftung der Tasten ist fertig.
Es kommen noch 2 LEDs hinzu welche OnAir- und Automationstatus anzeigen.
Das komplette Schema wurde erstellt.

Nachzulesen hier im update:
http://sites.internet.lu/folders/radiorom/Cartwall.pdf

Gruss:
-Serge-

Hi,
ich habe noch eine Idee die man ganz vielleicht erstellen könnte wenn wir mal ganz lieb den Torben fragen (oder vielleicht gibt es ja sowas schon)…
Wäre es möglich ein Script durch einen Timer zu starten.
Beispiel: Zeit wird gesetzt auf 100 Millisekunden und jedes mal wenn die Zeit rum ist würde das Script angestoßen.
Also ein Notification Script was auf einen Taktgenerator reagiert… nur wieder so ne fixe Idee, aber vielleicht lässt sich ja in diese Richtung was machen…

Oder ein Script “OnMouseKlickRelease”…wäre auch was feines. Ok, würde zwar bei jedem Klick starten aber ich denke mal das man a.) nicht wie ein Hardcore Gamer seine Maus vergewaltigt und b.) diese Scripte dadrin ja auch net wirklich groß sein sollten

Grüße

Peter

Hi Peter,

das mit dem Timer wurde schon im englischen Forum besprochen. Der OnTimer ist momentan nicht brauchbar, wird aber denke ich mal irgendwann wieder gefixed.

Guggst du hier:
http://forum.mairlist.com/index.php/topic,4168.msg29269.html#msg29269

Grus:
-Serge-

Hatte diese Woche wieder etwas Zeit abends daran weiter zu arbeiten.
Wurde noch einiges umgeändert und hinzugefügt.

Das Gehäuse ist jetzt gut gefüllt ;D
Passt aber alles noch locker rein.

Bleibt noch einige Kabel anzuschliessen dann ist alles fertig.
Scripte laufen schon und warten nur noch auf die Hardware.

Ist alles jetzt schon recht komplett dokumentiert
http://sites.internet.lu/folders/radiorom/Cartwall.pdf

Gruss:
-Serge-

Den Drumcomputer hatte ich auch schon in den Fingern.
Was mir daran persönlich nicht gefallen hat, aber eben bei DC’s unersetzlich ist, ist die Tatsache das es Pads und keine richtigen Knöpfe sind.
Klar zum drummen würden Knöpfe nicht wirklich ansprechend sein…
aber vom System her wird der DC genauso programmiert wie die APC. Nur nicht so aufwendig da keine beleuchteten Tasten. Und das ist ja das wir uns am meisten mit wünschen.
Aber da war noch das Novation. ist auch sehr gut im Preis und hat all die schönen Dinge die wir wollen. Nur man programmiert sich einen Wolf :smiley:

Genau,

beleuchtete Tasten sollten es sein.

Gruss:
-Serge-

Ich würde an dieser Stelle mal wieder auf das Forum rund um das MidiBox Projekt verwesien:
http://www.ucapps.de/

Da gibt’s einige Beispiele auch zum Frontplattendesign usw. Nette Projekte dabei.
Ich hab auch schonmal bei Youtube einige DIY Videos gefunden, wo jemand beleuchtete Taster komplett selber gebaut hat.
Hab aber grade keinen Link parat. ging glaube ich u.a. um Ableton, und dafür dann DIY Controller.

Vielleicht wird da jemand fündig.
Greetz
Malte

EDIT: könnte auch Traktor gewesen sein