• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Plattformübergreifende Sounds

OP
austriaka

austriaka

Geocacher
Sabeta schrieb:
Wegen dem überlappenden Sound ist es erst mal nur so ein Gedanke, ich schreibe ein Adventuregame, kenntzeichnend war bei solchen PC-Spielen immer, das ein deine Hintergrundmusik gibt die die jeweilige Stimmung transportierte und dann gibt es die Sound-Effekte bei bestimmten Aktionen. Bei den Garmin-Geräte gehts eh nicht, weil das gepeiepe sicher nerven würde.
Ich kann mir nicht vorstellen wie eine durchgehende Hintergrundmusik funktionieren soll. Aber ok, ich habe nur 3 recht kurze Sounds, ich kann es nicht wirklich sagen
Ich nutze das Tool von GS (SystemBeepRecorder), am Anfang stehen MIDI-Sounddateien die mit MID2RTTL in Text umgewandelt werden, die Noten lassen sich dann in xml umwandeln, das macht ein Excel-Macro, dann nur xml -> fdl und der Oregon rockt.
Coole Idee :)
Ich hab von Hand am Recorder gespielt und mit den Tempi variiert, bis es gepasst hat...
 

jonny65

Geomaster
Muss den Thread nochmal beleben. Hat jemand eine kleine Sammlung fertiger FDL Files ?
Im SystemBeepRecorder (unten bei http://www.earwigo.net/WWB/wiki/doku.php?id=tips_and_tricks&DokuWiki=4af7c4ae3eaf67e50a54444215e5921e#wherigo_sound ) sind schon paar XMLs die man umwandeln kann, aber nur wenige sind zu gebrauchen. Die meisten klingen beknackt.
Vielleicht hat jemand schon paar kreirt und man muss das Rad nicht nochmal neu erfinden.
Passend wären "Sounds" die zu bestimmten Events passen, z.b wenn die Antwort richtig oder falsch ist, man eine Zone betritt, den WIG abgeschlossen hat usw.
 

Sabeta

Geocacher
Ich habe schon ein paar spezielle für mich selbst erstellt, natürlich veröffentliche ich diese Sounds eher
ungern vor dem Start meines Wherigos für die ich sie erstellt habe.

Ein Beispiel kann ich dennoch geben.

Ausgangsmaterial eine Midi-Datei von hier
http://www.midishrine.com/index.php?console=n64
http://www.midishrine.com/ostepop/n64/Zelda_64_-_The_Ocarina_of_Time.zip

Das Game kenne ich nicht aber die Midi-Datei Z64LOSTW.MID klingt recht charakteristisch bzw. hat
einen recht hohen Wiedererkennungswert.

Nun kann man natürlich nur einstimmig den Sound auf dem Garmin ausgeben und dafür eignet sich die
Spur "Ocarina". Im Midi Sheet Musik Programm ist es Track 5, dort kann man auch gleich die anderen
Track ausschalten und mal reinhören wie der Sound klingt wenn die anderen Stimmen aus sind,
außerdem lassen sich die Notenwerte anzeigen was hilft den richtigen Channel zu finden.
http://midisheetmusic.sourceforge.net/index.html
http://sourceforge.net/projects/midisheetmusic/files/midisheetmusic/2.2/MidiSheetMusic-2.2.exe/download

Ich habe nun ein Programmchen in VB.net gezimmert um eine xml-Dtaei zu generieren.
Zuvor wird die Midi-Datei in ein Ringtones gewandelt, die Spur "Ocarina" ist hier Channel 6, keine
Ahnung warum, ist halt so.
http://www.gnmidi.com/gnfreeen.htm
http://www.gnmidi.com/utils/mid2rttl.zip

Das Tool MID2RTTL.EXE läuft leider nicht unter Win7 64, daher läuft das bei mir in der DOSBOX

MID2RTTL.EXE -channel 6 Z64LOSTTW.MID DEMO.TXT

Ergebnis ist:
Code:
mid2rtti:d=4,o=5,b=120:1p,16f.6,32p,16a.6,32p,4b6,16f.6,32p,16a.6,32p,4b6,16f.6,32p,16a.6,32p,16b.6,32p,16e.7,32p,4d7,16b.6,32p,16c.7,32p,8b6,16g.6,32p,2e6,8p,8d6,16e.6,32p,16g.6,32p,2e.6,16f.6,32p,16a.6,32p,4b6,16f.6,32p,16a.6,32p,4b6,16f.6,32p,16a.6,32p,16b.6,32p,16e.7,32p,4d7,16b.6,32p,16c.7,32p,8e7,16b.6,32p,2g6,8p,16b.6,32p,8g6,16d.6,32p,2e.6,1p,1p,8f6,16g.6,32p,4a6,8b6,16c.7,32p,4d7,8e7,16f.7,32p,2g.7,1p,1p,8f6,16e.6,32p,8a6,16g.6,32p,8b6,16a.6,32p,8c7,16b.6,32p,8d7,16c.7,32p,8e7,16d.7,32p,8f7,16e.7,32p,16b6,16c.7,32p,16a6,1b6,1p,16f.6,32p,16a.6,32p,4b6,16f.6,32p,16a.6,32p,4b6,16f.6,32p,16a.6,32p,16b.6,32p,16e.7,32p,4d7,16b.6,32p,16c.7,32p,8b6,16g.6,32p,2e6,8p,8d6,16e.6,32p,16g.6,32p,2e.6,16f.6,32p,16a.6,32p,4b6,16f.6,32p,16a.6,32p,4b6,16f.6,32p,16a.6,32p,16b.6,32p,16e.7,32p,4d7,16b.6,32p,16c.7,32p,8e7,16b.6,32p,2g6,8p,16b.6,32p,8g6,16d.6,32p,2e.6,1p,1p,8f6,16g.6,32p,4a6,8b6,16c.7,32p,4d7,8e7,16f.7,32p,2g.7,1p,1p,8f6,16e.6,32p,8a6,16g.6,32p,8b6,16a.6,32p,8c7,16b.6,32p,8d7,16c.7,32p,8e7,16d.7,32p,8f7,16e.7,32p,16b6,16c.7,32p,16a6,1b6,1p,16f.6,32p,16a.6,32p,4b6,16f.6,32p,16a.6,32p,4b6,16f.6,32p,16a.6,32p,16b.6,32p,16e.7,32p,4d7,16b.6,32p,16c.7,32p,8b6,16g.6,32p,2e6,8p,8d6,16e.6,32p,16g.6,32p,2e.6,16f.6,32p,16a.6,32p,4b6,16f.6,32p,16a.6,32p,4b6,16f.6,32p,16a.6,32p,16b.6,32p,16e.7,32p,4d7,16b.6,32p,16c.7,32p,8e7,16b.6,32p,2g6,8p,16b.6,32p,8g6,16d.6,32p,2e.6

mid2rtti:d=4,o=5,b=120: sind MIDI-Einstellungen danach gehts los mit Noten und Pausen, Pausen am
Anfang kann man gleich weglassen, hier im Beispiel nur 1p

Was danach kommt wandle ich dann per VB.NET um, den Text kopiere ich in eine Textbox und weise ihn
XX zu, die XML-Datei schreibe ich auf D:, ist alles sehr einfach gehalten, darum auch ein weig Handarbeit,
ich bin aber auch kein Programmierer und auch kein Musiker und Noten konnte ich bis vor kurzen auch
nicht lesen.

Code:
Imports System.Xml
Imports System.Text.RegularExpressions

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim XX As Array = Split(TextBox1.Text, ",")
        Dim Dauer As Long
        Dim Typ As String
        Dim Frequenz As Long
        Dim d As String
        Dim Ring As Array = {"p", "c8", "b7", "a#7", "a7", "g#7", "g7", "f#7", "f7", "e7", "d#7", "d7", "c#7", "c7", "b6", "a#6", "a6", "g#6", "g6", "f#6", "f6", "e6", "d#6", "d6", "c#6", "c6", "b", "a#", "a", "g#", "g", "f#", "f", "e", "d#", "d", "c#", "c", "b4", "a#4", "a4", "g#4", "g4", "f#4", "f4", "e4", "d#4", "d4", "c#4", "c4", "b3", "a#3", "a3", "g#3", "g3", "f#3", "f3", "e3", "d#3", "d3", "c#3", "c3", "b2", "a#2", "a2", "g#2", "g2", "f#2", "f2", "e2", "d#2", "d2", "c#2", "c2", "b1", "a#1", "a1", "g#1", "g1", "f#1", "f1", "e1", "d#1", "d1", "c#1", "c1", "b0"}
        Dim Tone As Array = {"REST", "C8", "B7", "A7Sharp", "A7", "G7Sharp", "G7", "F7Sharp", "F7", "E7", "D7Sharp", "D7", "C7Sharp", "C7", "B6", "A6Sharp", "A6", "G6Sharp", "G6", "F6Sharp", "F6", "E6", "D6Sharp", "D6", "C6Sharp", "C6", "B5", "A5Sharp", "A5", "G5Sharp", "G5", "F5Sharp", "F5", "E5", "D5Sharp", "D5", "C5Sharp", "C5", "B4", "A4Sharp", "A4", "G4Sharp", "G4", "F4Sharp", "F4", "E4", "D4Sharp", "D4", "C4Sharp", "C4", "B3", "A3Sharp", "A3", "G3Sharp", "G3", "F3Sharp", "F3", "E3", "D3Sharp", "D3", "C3Sharp", "C3", "B2", "A2Sharp", "A2", "G2Sharp", "G2", "F2Sharp", "F2", "E2", "D2Sharp", "D2", "C2Sharp", "C2", "B1", "A1Sharp", "A1", "G1Sharp", "G1", "F1Sharp", "F1", "E1", "D1Sharp", "D1", "C1Sharp", "C1", "B0"}
        Dim Frequency As Array = {0, 4186.01, 3951.07, 3729.31, 3520, 3322.44, 3135.96, 2959.96, 2793.83, 2637.02, 2489.02, 2349.32, 2217.46, 2093, 1975.53, 1864.66, 1760, 1661.22, 1567.98, 1479.98, 1396.91, 1318.51, 1244.51, 1174.66, 1108.73, 1046.5, 987.767, 932.328, 880, 830.609, 783.991, 739.989, 698.456, 659.255, 622.254, 587.33, 554.365, 523.251, 493.883, 466.164, 440, 415.305, 391.995, 369.994, 349.228, 329.628, 311.127, 293.665, 277.183, 261.626, 246.942, 233.082, 220, 207.652, 195.998, 184.997, 174.614, 164.814, 155.563, 146.832, 138.591, 130.813, 123.471, 116.541, 110, 103.826, 97.9989, 92.4986, 87.3071, 82.4069, 77.7817, 73.4162, 69.2957, 65.4064, 61.7354, 58.2705, 55, 51.913, 48.9995, 46.2493, 43.6536, 41.2035, 38.8909, 36.7081, 34.6479, 32.7032, 30.8677}
        Dim XmlDoc As New XmlDocument
        Dim XmlDeclaration As XmlDeclaration = XmlDoc.CreateXmlDeclaration("1.0", Nothing, Nothing)
        Dim RootNode As XmlElement = XmlDoc.CreateElement("MusicSheet")
        RootNode.SetAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance")
        RootNode.SetAttribute("xmlns:xsd", "http://www.w3.org/2001/XMLSchema")
        XmlDoc.InsertBefore(XmlDeclaration, XmlDoc.DocumentElement)
        XmlDoc.AppendChild(RootNode)
        XmlDoc.DocumentElement. _
                AppendChild(XmlDoc.CreateElement("Tilte")). _
                AppendChild(XmlDoc.CreateTextNode("Garmin"))
        Dim match As Match
        For Each x In XX
            match = Regex.Match(x, "(^[0-9]{0,2})([a-z]{1}#{0,1})(\.{0,1})([0-9]{0,1}$)")
            d = match.Groups(1).ToString
            If d = "" Then d = 128
            Dauer = 1600 / d * (1 + 0.5 * match.Groups(3).Length)
            Typ = Tone(Array.IndexOf(Ring, match.Groups(2).ToString + match.Groups(4).ToString))
            Frequenz = Int(Frequency(Array.IndexOf(Ring, match.Groups(2).ToString + match.Groups(4).ToString)))
            Dim ParentNode As XmlElement = XmlDoc.CreateElement("Note")
            Dim FirstElement As XmlElement = XmlDoc.CreateElement("Tone")
            Dim SecondElement As XmlElement = XmlDoc.CreateElement("Frequency")
            Dim ThirdElement As XmlElement = XmlDoc.CreateElement("Duration")
            XmlDoc.DocumentElement.AppendChild(ParentNode)
            Dim FirstTextElement As XmlText = XmlDoc.CreateTextNode(Typ)
            Dim SecondTextElement As XmlText = XmlDoc.CreateTextNode(Frequenz)
            Dim ThirdTextElement As XmlText = XmlDoc.CreateTextNode(Dauer)
            ParentNode.AppendChild(FirstElement)
            ParentNode.AppendChild(SecondElement)
            ParentNode.AppendChild(ThirdElement)
            FirstElement.AppendChild(FirstTextElement)
            SecondElement.AppendChild(SecondTextElement)
            ThirdElement.AppendChild(ThirdTextElement)
        Next
        XmlDoc.Save("d:\demo.xml")
    End Sub
End Class

Die demo.xml kann man nun noch kürzen, ich habe das im zweiten Fall gemacht. Hier ist es ganz gut das
die Notenwerte im Midi Sheet Musik angezeigt werden, den Schnitt mache ich nach dem siebten E, also
das siebten E in der xml suchen und Schnitt.

Im System Beep Builder kann man nun schon mal seinen Erfolg oder Mießerfolg anhören, als FDL
abspeichern und ab auf den Oregon.
http://static.groundspeak.com/installs/SystemBeepRecorder.zip

Die Schwierigkeit besteht nun darin, geeignet Sound-Beispiele zu finden die einstimmig gut klingen.
Klatschten, eine Fahrradklingel, Explosion usw. sind zu komplex und lassen sich nicht wiedergeben, man
muß sich auf melodische Beep'ser beschränken.
 

Anhänge

  • demo.zip
    816 Bytes · Aufrufe: 19
  • demokurz(XML+FDL).zip
    661 Bytes · Aufrufe: 21
  • noten.jpg
    noten.jpg
    80,3 KB · Aufrufe: 634

Sabeta

Geocacher
Geeignetes Soundmaterial zu finden dürfte die größte Schwierigkeit sein, es sei denn man kann Sounds per Synthesiser einspielen, wenn man hat und kann, ich habe keinen noch kann ich spielen.

Mögliche Quellen, und da bin ich auch noch am suchen, sind PC-Spiele, Ringtones (von früher als die Handys keine polymorphen Sounds oder gar MP3 wiedergeben konnten), PC-Speaker-Beeps.

Sabeta
 

jonny65

Geomaster
Daaaaaaaaaaaanke für die megaausführliche Erklärung aber ich wollte doch nur ein piep oder vielleicht ein möööp. Das ist mir dann doch zu heavy. Ich dacht wirklich auch eher nur an 1 maximal 2 Sekunden lange "Töne". Um aufmerksam zu machen, daß man eine Zone betreten hat, eben ein *Diiiiing* nur bissl aufgepeppter. Zu lange Sequenzen würden auch eher nerven. Also entgegen dein Mega Manual bin ich toooootal anspruchlos ;)
 

Sabeta

Geocacher
Probiere es mal hiermit (als xml-Datei abspeichern und im System Beep Builder laden)
Code:
<?xml version="1.0"?>
<MusicSheet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Tilte>Garmin</Tilte>
  <Note>
    <Tone>G6</Tone>
    <Frequency>1567</Frequency>
    <Duration>400</Duration>
  </Note>
  <Note>
    <Tone>F6Sharp</Tone>
    <Frequency>1479</Frequency>
    <Duration>100</Duration>
  </Note>
  <Note>
    <Tone>REST</Tone>
    <Frequency>0</Frequency>
    <Duration>100</Duration>
  </Note>
  <Note>
    <Tone>C6</Tone>
    <Frequency>1046</Frequency>
    <Duration>100</Duration>
  </Note>
  <Note>
    <Tone>D6</Tone>
    <Frequency>1174</Frequency>
    <Duration>100</Duration>
  </Note>
  <Note>
    <Tone>B5</Tone>
    <Frequency>987</Frequency>
    <Duration>200</Duration>
  </Note>
  <Note>
    <Tone>B5</Tone>
    <Frequency>987</Frequency>
    <Duration>200</Duration>
  </Note>
</MusicSheet>

Dies ist eine ganz kurze Melodie aus "Yehi Meri Zindagi" von hier http://fultoomobile.com/ringtones/midi/dev_d_polyphonic_ringtones.php

Generell muß man sich von dem Gedanken lösen, ein Oregon könnte atmosphärische Sound abspielen, so etwas wie der typische "Zonk", das ist nur ein Takt und die Töne liegen alle zeitlich übereinander, also mehrstimmig, geht nicht. Auch eine Fanfare dö dö dööö wäre reduziert nur dreimal die gleiche Tonhöhe und der letzte Ton etwas länger und würde langweilig klingen und überhaupt keine Ähnlichkeit mit einer Fanfare haben.

Man muß mit einer Melodie arbeiten, also mindestens 3 Takte mit je einen Ton, optional Pausen, hinzu kommt nun aber auch, das so ein Oregon nicht sehr laut ist und man drausen schnell das gepiepse überhört, besonders wenn die Melodie sehr kurz ist. Als Beispiel sei NannyNannyBooBoo.xml genannt was beim System Beep Builder dabei ist, meiner Tester wussten nicht wann es kommt (es kündigt eine versteckte Zone an) und haben es promt überhört.

Sabeta
 
OP
austriaka

austriaka

Geocacher
hier habe ich zwei oder drei einfache "miep und mööps" hochgeladen:
http://www.geoclub.de/viewtopic.php?p=925509#p925509
 

jonny65

Geomaster
Soundeffects.zip bei http://forums.groundspeak.com/GC/index.php?showtopic=195491 hat 3 für mich ganz brauchbare drin :
quickalert.fdl
phaser.fdl
slowhiwhoop.fdl
 

jonny65

Geomaster
Wer mal Zeit hat, könnte bitte mal was testen. Im Zip sind 2 GWC's, jeweils bei wherigo.com kompiliert. Eine für Garmins (Soundchecker_Garmin.gwc), eine für mobiles Zeugs (Soundchecker_PC.gwc). Also je nach verwendetem Gerät die entsprechende Cartridge verwenden. Es werden hier nach unterschiedlichen Methoden FDL und MP3 abgespielt. Meine Erwartung : Alle Geräte spielen 4 der 5 Methoden ab, wobei die einzige die nicht funktioniert jeweils die ist, die das Gerät nicht versteht. Also bei Garmin das Kommando "Nur MP3" und bei den andren Geräten "Nur FDL".
Das Kommando "Plattformkennung" spielt je nach Plattform FDL oder MP3. Dabei wär auch interessant ob wirklich alle Garmins (vielleicht hat jemand ein Oregon 300 ?) die Kennung "Vendor 1 ARM9" zurückgeben.

Hab noch einen Negativtest durchgeführt. Lade ich auf den Oregon die "PC Version", so wird NIE ein Sound gespielt. Umgekehrt wirds auch so sein (?)
Würde die Theorie von austriaka bestätigen, daß bei der Kompilierung bei wherigo.com je nach gewähltem Device übersetzt wird und dann die Sounds rausfallen, die nicht für diesen Typ Gerät sind (FDL bei Mobilzeugs, MP3 bei Garmin)
 

Anhänge

  • soundchecker.zip
    37,3 KB · Aufrufe: 18

jonny65

Geomaster
Haben alle nur Oregons und keiner Eifön oder sonstiges zum testen ? :hilfe:
Kann wenigstens jemand sagen ob MP3 und Wav gleichermaßen gehen oder das eine oder andre besser/sicherer ist ?
 

xxmurdockxx

Geomaster
ok, getestet...

Iphone 3GS geht alles außer "nur FDL" :D

Ob WAV oder MP3 besser ist, kann ich nicht sagen.
Bei meinem WIG hab ich nur FDL bzw. MP3 verwendet.

Und die Sounds werden auch nicht über eine Plattformabfrage gespielt.
Bis jetzt hat dies gut funktioniert. Sowohl Garmin, als auch Smartphones spielen den
spezifischen Sound ab.
 
Oben