2017-11-08 1 views
0

Ich baue eine Audioaufnahme-App, bei der der Benutzer einen Hintergrundton für seine Aufnahme auswählen kann und ein Voice-Changer-Effekt dann den aufgezeichneten Sound entsprechend der Auswahl abspielt.Was ist der optimale Weg, um 64 verschiedene verfügbare Wahrscheinlichkeiten einzuschalten?

Die Hintergrundgeräusche & Voice-Wechsler sind jeweils in einem anderen scrollbaren wählbaren . Wenn der Benutzer eine Stimme Hintergrund wählt oder einen Voice Changer Effekt i indexPath.row diese Art und Weise in einem Tupel ihre speichern var effect = (0,0)

Weil ich 8 verschiedene Hintergrundgeräusche & 8 verschiedene Sprachwechsler so sind die Wahrscheinlichkeiten 8 x 8 = 64 Fälle so hinzugefügt sie zu einem Schalterfall, der dieses Tupel benutzt, aber natürlich ist der Schalterkasten so groß.

Ich wollte nur wissen, ob es eine effizientere Möglichkeit gibt, diesen Fall zu lösen.

switch effect { 
      //NO BG ONLY EFFECTS 
     case let (bg,effect) where (bg == 0 && effect == 0): 
      print(" NO BG & none") 
     case let (bg,effect) where (bg == 0 && effect == 1): 
      print(" NO BG & robot") 
     case let (bg,effect) where (bg == 0 && effect == 2): 
      print(" NO BG & monkey") 
     case let (bg,effect) where (bg == 0 && effect == 3): 
      print(" NO BG & bee") 
     case let (bg,effect) where (bg == 0 && effect == 4): 
      print(" NO BG & elephant") 
     case let (bg,effect) where (bg == 0 && effect == 5): 
      print(" NO BG & mask") 
     case let (bg,effect) where (bg == 0 && effect == 6): 
      print(" NO BG & ghost") 
     case let (bg,effect) where (bg == 0 && effect == 7): 
      print(" NO BG & speed") 

      //BG WIND & EFFECT CHANGED 
     case let (bg,effect) where (bg == 1 && effect == 0): 
      print("wind & none") 
     case let (bg,effect) where (bg == 1 && effect == 1): 
      print("wind & robot") 
     case let (bg,effect) where (bg == 1 && effect == 2): 
      print("wind & monkey") 
     case let (bg,effect) where (bg == 1 && effect == 3): 
      print("wind & bee") 
     case let (bg,effect) where (bg == 1 && effect == 4): 
      print("wind & elephant") 
     case let (bg,effect) where (bg == 1 && effect == 5): 
      print("wind & mask") 
     case let (bg,effect) where (bg == 1 && effect == 6): 
      print("wind & ghost") 
     case let (bg,effect) where (bg == 1 && effect == 7): 
      print("wind & speed") 

      //BG CITY & EFFECT CHANGED 
     case let (bg,effect) where (bg == 2 && effect == 0): 
      print("city & none") 
     case let (bg,effect) where (bg == 2 && effect == 1): 
      print("city & robot") 
     case let (bg,effect) where (bg == 2 && effect == 2): 
      print("city & monkey") 
     case let (bg,effect) where (bg == 2 && effect == 3): 
      print("city & bee") 
     case let (bg,effect) where (bg == 2 && effect == 4): 
      print("city & elephant") 
     case let (bg,effect) where (bg == 2 && effect == 5): 
      print("city & mask") 
     case let (bg,effect) where (bg == 2 && effect == 6): 
      print("city & ghost") 
     case let (bg,effect) where (bg == 2 && effect == 7): 
      print("city & speed") 

      // AND THE LIST CONTINUES... 
+1

Hat eine bestimmte Wirkung verhalten sich unterschiedlich, je nachdem, ob es einen Hintergrund-Sound oder nicht? Mit anderen Worten, können Sie Hintergrund und Effekt separat einschalten? –

+0

@ DavidRönnqvist no Der Hintergrund spielt nur eine weitere Instanz der AudioPlayer-Klasse mit vorbereiteten Audiodateien ab, die in der App gespeichert wurden. Der Voice-Changer-Effekt fügt der aufgezeichneten Audiodatei mit der AVAudioPlayerNode-Klasse Effekte hinzu. –

+0

Warum genau brauchst du einen so großen Schalter? Müssen Sie etwas speziell für jeden einzelnen Fall tun (d. H. Der Code kann nicht verallgemeinert werden, denn wenn es dann möglich ist, ist wahrscheinlich eine bessere Lösung verfügbar)? Wenn ich nur den obigen Code sehe, frage ich mich, warum ein Wörterbuch nicht verwendet werden kann. Hoffentlich habe ich die Frage richtig verstanden – TNguyen

Antwort

1

Sie könnten die möglichen Werte mit ihren angepassten Werten abbilden (in Ihrem Beispiel, wie es scheint also zu sein), in einer statischen Art und Weise, wenn möglich, dann können Sie den Betrieb anpassen nennen.

zB mit Arrays

# pseudo-code 
BG_REG = [ "wind", "city", "foo", "bar", "baz", "42", "84", "1337" ] 
EFFECT_REG = [ "none", "robot", "monkey", ... ] 
(...) 
print(BG_REG[bg] + " & " + EFFECT_REG[effect]) 

Die angepassten Werte können etwas anderes sein (zB Rückruf/Lambda func ...)

Verwandte Themen