View Single Post
si du har en kommaseparert liste med linjebrudd på slutten, slik:

Kode

1,2
6,1
7,1
8,1
osv,osv....
les hele filen inn i minne. Deretter splitter du opp hver enkelt linje i et array. Splitt deretter hvert element i arrayet etter komma, så sitter du igjen med et 2 dimensjonalt array, som ser litt mer slik ut (visuelt):

Kode

notes = [
  [1,2]
  [6,1],
  [7,1],
  [8,1],
];
deretter kjører du gjennom arrayet ditt som om det var en sang:

Kode

foreach(var note in notes) {
  let note = note[0];
  let length = note[1];
  play(note, length);
}
fordelen med denne løsningen blir jo at du ikke lenger har hardkodet sangene inn i koden din, og det blir enklere å legge til nye sanger, kun ved å legge til nye filer.

Obs. jeg har tatt utgangspunkt i at tX og vX begge hører sammen, men mulig jeg har misforstått deg her. Hvis du har flere noter som skal spilles samtidig, kan du jo bare gruppere dem sammen og splitte opp etter komma verdi videre. altså slik:

Kode

notes = [
  [1,2,3,4,8,12]
];
Nå har vel ikke alle sanger noter som varer like lenge, så her ville jeg løst det ved å splitte det opp i sine egne objekter, og behandle disse asynkront. Fordelen med denne løsningen er da at hver note nå har fått sin egen lengde, levetid og er helt uavhengig av andre noter som spilles på pianoet. Har dog dessverre ingen erfaring med asynkron programmering i objective C.
Sist endret av Patrick; 15. april 2019 kl. 22:45.