Direkt zum Inhalt

Willkommen auf meiner Seite kruegermark.de.

Du bist also damit einverstanden, dass diese Seite Daten für Statistiken, Analysen, personalisierte Inhalte und Werbung (natürlich innerhalb der Datenschutzrichtlinien), verwendet.

(¯`·.¸.wav¸.·´¯)

XML for Lenovo Snowflake Piano

Alle .wav - Dateien in einer XML-Datein auflisten. Diese .wav Dateien können in C:\Program Files (x86)\Lenovo\Touch Game\Snowflake Suite\bin\applications\Piano\data\tones\[MeineWavs]\[MeineWavs] als neue Verzeichnis angelegt werden.

In C:\Program Files (x86)\Lenovo\Touch Game\Snowflake Suite\bin\applications\Piano\data\tones\[MeineWavs] noch eine icon.png (200x200) anlegen + die generierte .xml Datei in keys.xml umbennen.

Nach dem Start von Piano ist dann die neue Klaviatur auswählbar.

Hier das Script, um die .wav Dateien in eine XML-Datei zu schreiben:

... einfach als makeXML.vbs speichern und starten.


'* Author        * Me
'* Email_Address * me@home.com
'* Script_Type   * Vbscript
'* Sub_Type      * Files/FileSystem
'* Keywords      * XML, drives, folder, FileSystemObject

'Kommentar
'Ein Verzeichnis wird abgefragt und eine XML-Datei listet die Inhalte auf

'~~Script~~.

'**************************************************************
'* Verzeichnislistenscript für XML
'* Design und Code von Mark Krüger
'*
'* Stand: 1. Mai. 2015
'*
'* Hinweis
'*
'* 1)   Die Source- u. Ziel-Verzeichnisse werden abgefragt und eine XML-Datei listet die
'*      Dateinamen aller enthaltenen WAV-Dateien auf
'*
'* 2)   Der Benutzer wird durch die Umgebungsvariable "USERNAME"
'*      festgestellt und ist als Author in der XML-Datei 
'*
'* 3)   Die Datei wird als [Titel].xml erstellt + im Browser gestartet
'*
'**************************************************************
Option Explicit
Public WSHShell, fso, fh1, fh2, fh3, fh4, fh5
Dim intIndex,replTxt,regExpr,replStr,prvTxt,strEnv,netzname
Set regExpr = New RegExp
Public Dir, filcnt
Public strDirDoneTxt
Public strMsgTitle, doktitel, wavdir
Public strInput, strRunit
Public IExec, strTarget
Public AnzFiles, sumFileSize, author
Public oFolder,oFolders,oFiles,item,Item2,Tastenfarbe,intCounter

'Ersteller feststellen
 Set WSHShell = WScript.CreateObject("WScript.Shell")
 For Each strEnv In WshShell.Environment("PROCESS")
   intIndex = intIndex + 1
   If left(strEnv,8)="USERNAME" Then
     author=right(strEnv,len(strEnv)-9)
   End if
 Next

'*** Erstellt das FileSystem Object 
Set fso = CreateObject("Scripting.FileSystemObject")

 strInput= InputBox("Verzeichnis der .wav Dateien:", "Directory-Liste als XML-Datei",fso.GetAbsolutePathName("."))
 dir = strInput

if fso.FolderExists(dir) = False then
   strDirDoneTxt = dir & vbcr & "Verzeichnis existiert nicht!"
   strMsgTitle = "Eingabefehler"
   prvTxt = MsgBox(strDirDoneTxt, vbOKOnly + vbCritical, strMsgTitle )
   WScript.Quit
end if

' === DOKUMENTENTITEL festlegen ==========================
wavdir = fso.GetAbsolutePathName(".")
wavdir = fso.GetFileName(wavdir)
doktitel = InputBox("Kategorie der .wav Dateien:", "Name (Titel)",wavdir)

' Zieldatei -- wird mit Name(Titel) Kategorie - Abfrage erweitert
strTarget = ".xml"

' ============================================================================================

' === SUBROUTINE starten, um Dateianzahl zu ermitteln !==========================
  GetFiles dir
  AnzFiles = filcnt-1
    filcnt = 0
' ============================================================================================

set fh1=fso.createTextFile(strInput & strTarget)

fh1.WriteLine("<?xml version=""1.0"" ?>")
fh1.close

strDirDoneTxt ="XML Liste fertig!"
strMsgTitle = "XML Verzeichnis Liste."

' === HAUPT-SUBROUTINE ==========================
GetDir dir
' ===============================================



set fh5=fso.openTextFile(strInput & strTarget,8)
fh5.WriteLine("</keys>")
fh5.WriteLine("<author=""" & author & """>")
fh5.WriteLine("<folder = " & chr(34) & ofolder & chr(34) & " />")
fh5.WriteLine("<files=""" &  filcnt-1 & """ />")
fh5.close	

'*** Internet Explorer startet mit Zieldatei
 Set IExec = CreateObject("InternetExplorer.Application")
 strRunit = strInput & strTarget
 IExec.navigate strRunit
 IExec.visible=1

'*** Ende des Scripts
WScript.Quit  


' === SUBROUTINES FOLLOW ==========================
'----------------------
sub GetFiles(dir)

  set oFolder=fso.GetFolder(dir)
  set oFolders=oFolder.SubFolders
  set oFiles=oFolder.Files
  
  '*** Für alle Unterverzeichnisse des angegebenen Ordners
  For each item in oFolders
    'go to each one
    GetFiles(item)
  Next
  filcnt = filcnt +1
  item2=0
  For each item2 in oFiles
    filcnt = filcnt +1
  next
end sub
'----------------------
sub GetDir(dir)

  set oFolder=fso.GetFolder(dir)
  set oFolders=oFolder.SubFolders
  set oFiles=oFolder.Files
  
  '*** Für alle Unterverzeichnisse des angegebenen Ordners
  'For each item in oFolders '*** go to each one
  '  GetDir(item)
  'Next
  '*** Zieldatei öffnen
  set fh4=fso.openTextFile(strInput & strTarget,8)
  
  '*** Kopf 
  fh4.WriteLine("<keys name=""" & doktitel & """>")
  
  '*** Basisverz. vom Ordnernamen abschneiden
  fh4.WriteLine(right(ofolder,len(ofolder)-len(strInput)))   
  
  fh4.close
  filcnt = filcnt +1
  item2=0

  '*** Anzahl der .wav Files feststellen, da letzte Taste nicht schwarz sein soll
  For each item2 in oFiles
  	If UCase(fso.GetExtensionName(item2.name)) = "WAV" Then intCounter = intCounter + 1
  next

 '*** Um keine Dateien aufzulisten Kommentar vor (fh3.WritLine...) setzen!
 '*** und bei der if Schleife Kommentar entfernen! 
  For each item2 in oFiles
	If UCase(fso.GetExtensionName(item2.name)) = "WAV" Then
	    set fh3=fso.openTextFile(strInput & strTarget,8)
	    
	    '*** Summe für abweichende Durchschnitte
	    sumFileSize = sumFileSize + item2.size
	    '----------------------
	    'Tastenfarbe festlegen
	    if Tastenfarbe = "black"  or  item2.size < (sumFileSize / filcnt +1)  or  filcnt = intCounter then
	    	'*** ZEILE schreiben
	    	Tastenfarbe = "white" 'Tastenfarbe im Piano
	    	fh3.Write("  <white label=" & chr(34))  '&  item2.size & " < " & (sumFileSize / filcnt +1) & "  " & filcnt & "=" & intCounter
	    else
	    	'*** ZEILE schreiben
	    	Tastenfarbe = "black" 'Tastenfarbe im Piano
	    	fh3.Write("  <black label=" & chr(34))  '&  item2.size & " < " & (sumFileSize / filcnt +1) & "  " & filcnt & "=" & intCounter
	    end if
	    
	    '*** Sonderzeichen in Beschriftung entfernen
	    replStr = ""
	    regExpr.IgnoreCase = True
	    regExpr.Global = True
	    regExpr.Pattern = "[^0-9A-z]" '*** NUR Buchstaben + Zahlen
	    replTxt = regExpr.Replace(left(item2.Name,5), replStr)
	    'msgbox chr(34) & mid(replTxt,5,1) & chr(34),vbokonly,filcnt & replTxt & chr(34) & " len=" & len(replTxt)
	    if len(replTxt) < 5 then replTxt = left(replTxt & replTxt,5)
	    if replTxt = prvTxt then replTxt = left(replTxt,4) & chr(asc(mid(replTxt,5,1))+1)
	    
	    fh3.Write(replTxt & chr(34)) 'Tastenbeschriftung im Piano
	    fh3.WriteLine(" music=""" & wavdir & "\" & item2.Name & chr(34) & "/>") 'Verzeichnis + Dateiname 
	    
	    'if left(item2.Name,1) = "." then
	    '   fh3.WriteLine(item2.Name)
	    'end if
	    fh3.close	
	    filcnt = filcnt +1
	    prvTxt = replTxt
	End If
  next
  '*** Zeile abschliessen
  set fh4=fso.openTextFile(strInput & strTarget,8)
  'fh4.WriteLine("
") fh4.close end sub '***---------------------- Sub CreateIE(sOpenPage, pLeft,pTop, pWidth,pHeight) Set IExec = CreateObject("InternetExplorer.Application") IExec.left = pLeft IExec.top = pTop IExec.height = pHeight IExec.width = pWidth IExec.menubar = 0 IExec.toolbar = 0 IExec.statusbar = 0 IExec.navigate sOpenPage IExec.visible=1 ' wait for page to load while IExec.Busy: WScript.Sleep(50): wend End Sub
<canvas id="special-effects-container" style="position: fixed; inset: 0px; width: 1386px; height: 243px; pointer-events: none; z-index: 100;" width="1386" height="243"> </canvas>