30

Mais ça risque de fouttre en l'air complètement certains sons çà, non ? Si tu as CDCD tu le transformes en CD
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

31

Pas vraiment, puisque c'est paramètrable tout ça.

Bref je décompose par exemple ceci:

_c5,50
_f4,50


En une série de _c5 et _f4 alternée de 0.5 en durée car 2 notes. Ceci pour éviter un débordement du temps intial.

Le but serait d'arriver à un temps minimum de 1 mais pour ça faut effacer des notes et je trouve pas une méthode rapide.

PS: Mon exemple est simple mais ça représente un peu le type de liste, bien sûr une série de notes n'on pas une durée de 1.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

32

Je comprends de moins en moins, dsl
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

33

Je résume:

Je veux jouer rapidement des notes en alternance, problème comme je ne peux les jouer en même temps, je les joue une part une avec une durée très faible ici 1.

Dans l'exemple:
_c5,50
_f4,50

Signifie quelle démarre en même temps et que je doit jouer au totale 50 durée, le problème c'est que je ne peux les jouer en alternance et donc je divise la durée par 2. Donc _c5 sera joué 25 durée et _f4 aussi, au lieu de 50.

Par conséquent les notes devienderont:
_c5,1
_f4,1
...

Je répète ce bloc 25 fois.

Maius entre temps j'obtient une liste de ce genre:
_c5,0.5
_f4,0.5
.. Bloc répèté 50 fois.

Il faudrait que je transforme cette liste, car je ne peux avoir minimum que 1 en durée et pas 0.5...
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

34

hmm, je pense que je vois. wink
Un truc que je voulais te demander depuis longtemps: tu les traîtes comment tes données ?
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

35

hmm, je pense que je vois.


J'ai réflechie à des solutions mais bien trop complexe, je pense qu'il y a plus simple, or je ne voit pas

Un truc que je voulais te demander depuis longtemps: tu les traîtes comment tes données ?


Au départ j'obtient un fichier qui contient plein d'infos sur le MIDI, je récupére dans celui-ci les tracks que j'ai besoins, les notes, les durée et les variations de tempo. Je trie tout ça pour avoir les tracks et les divers infos dans leurs ordre de passage dans le temps.

Après j'analyse les données et je récupére ce qui m'intresse, pour ça je créer une autre liste, elle s'occupe de la variation de tempo, des octaves, des durées correctes pour PolySnd...

Une fois ses étapes de faite, je m'occupe de créer une autre liste, qui à pour but de dérouler dans le temps les notes... Cette liste s'appuye sur une autre liste qui elle contient les notes qui ce déroule en même temps (il y a 4 modes de traitement pouyr ça, note moyenne, première note de la liste ou dernière note, ou encore alternance rapide de ses notes).

Après avoir fait ça j'optmise tout ça et je regroupe les durées de note identique qui n'on pas besoin de traitement spécial.

Et une fois ça, j'enregistre au format de polySnd (C, ASM)...

avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

36

Tu utilises les classes ? ça peut grandement simplifier la vie
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

37

Je programme en VB. Mais je vais pas changer tout ça quand même.

Il faut juste que je trouve la fonction pour gérer lmes alternance de notes correctement sans dépassement de durées.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

38

Pas d'idées pour transformer une série du genre d'alternance de notes correctement. J'ai essayé un truc mais ça bug horriblement.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

39

Ben c'est assez complexe ton truc. Si tu as
_c5,50
_f4,50
tu peux pas directement le transformer en
_c5,1
_f4,1
25 fois ?
Si tu as deux notes qui se superposent -> Tu calcules (durée/nombre de notes) qui te donnera le nombre de répétitions (25 dans l'exemple) avec une durée de 1 par note.
ça sera plus simple qu'avec une étape intermédiaire qui produit des données inutilisables.
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

40

Si tu as deux notes qui se superposent -> Tu calcules (durée/nombre de notes) qui te donnera le nombre de répétitions (25 dans l'exemple) avec une durée de 1 par note. ça sera plus simple qu'avec une étape intermédiaire qui produit des données inutilisables.


J'ai déjà fait ça, durée/nombre de note mais je ne peux en aucun cas appliquer les répétitions de celle-ci.
Je suis obligé de passer par une étape intermédiaire. sad

J'ai essayé en regardant la durée, qui détermine le nombre de notes joué en même temps, par exemple 0.5 signifie 2 notes en même temps et je prend 2 notes, je saute les 2 autres, jusqu'à tomber sur une durée de 1 ou différent produit un autre saut.

Le problème avec cette méthode c'est que je suis pas sûr que ça fonctionne dans tout les cas, le cas sûr et certain c'est si une durée est égale à 1...

i = 1
'Jusqu'à fin de la liste
While i <= listnotes.ListItems.Count
  DoEvents
  
  'Calule le saut à effectuer suivant la durée
  saute = Int(1 / listnotes.ListItems.Item(i).SubItems(1))
  
  If (saute <> 1) Then
    'Saute et conserve
    i = i + saute
    
    'Efface
    For j = 1 To saute
      If (Val(listnotes.ListItems.Item(i - 1).SubItems(1)) = 1) Then
        'i = i + 1
      Exit For
      End If
      
      listnotes.ListItems.Remove (i - 1)
    Next j
  Else
  
  i = i + 1
  End If
 
Wend
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

41

J'ai déjà fait ça, durée/nombre de note mais je ne peux en aucun cas appliquer les répétitions de celle-ci. Je suis obligé de passer par une étape intermédiaire.

Pourquoi est-ce que c'est obligé ? Je vois vraiment aucune raison.
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

42

Je ne peux faire ça dans la routine qui s'occupe de voir si il y a des PolyNotes..., je voudrais bien mais c'est pas possible.

list4.ListItems.Clear
listnotes.ListItems.Clear

Dim i As Long
Dim i2 As Long
Dim DebutList As Long

Dim k As Long

Dim txt As String

Dim CounterTime As Long
Dim CounterNote As Integer

Dim MaxTime As Long
MaxTime = Val(list2.ListItems.Item(list2.ListItems.Count).SubItems(5))

DebutList = 1

CounterTime = 0

frm_dialog.ProgressBar.Max = MaxTime
frm_dialog.ProgressBar.Min = 0
frm_dialog.Show

i = 0
While i <= MaxTime
    
  'Incrémentation des counter
  For i2 = 1 To list4.ListItems.Count
    list4.ListItems.Item(i2).SubItems(1) = Val(list4.ListItems.Item(i2).SubItems(1)) + 1 + (1 / list4.ListItems.Count)
    
    'DoEvents
  Next i2
  
  'Suppresion des notes inutile
  i2 = 1
  While i2 <= list4.ListItems.Count
   If (Val(list4.ListItems.Item(i2).SubItems(1)) > Int(Val(list2.ListItems.Item(Val(list4.ListItems.Item(i2))).SubItems(2)))) Then
     list4.ListItems.Remove (i2)
   Else
     i2 = i2 + 1
   End If
  Wend
  
  'Ecriture du fichier
  If (i <> 0) Then
    
    'PAUSE
    If (list4.ListItems.Count = 0) Then
      listnotes.ListItems.Add = "pause"
      listnotes.ListItems.Item(listnotes.ListItems.Count).SubItems(1) = "1"
      
      'DoEvents
    'NOTE
    Else
    
      '-- Alternance
      If (opt1.Value = True) Then
      'TOUTE NOTES AVEC DUREE DE 1
      For i2 = 1 To list4.ListItems.Count
        'Ajoute note, ne pas oublier octave
        listnotes.ListItems.Add = list2.ListItems.Item(Val(list4.ListItems.Item(i2))).SubItems(3) & Val(Val(list2.ListItems.Item(Val(list4.ListItems.Item(i2))).SubItems(4)) + Val(txtoct.text))
      
        listnotes.ListItems.Item(listnotes.ListItems.Count).SubItems(1) = (1 / list4.ListItems.Count)
      Next i2
      
      '-- Note moyenne
      ElseIf (opt2.Value = True) Then
        i2 = Int(list4.ListItems.Count / 2)
        
        If (i2 = 0) Then i2 = 1
        listnotes.ListItems.Add = list2.ListItems.Item(Val(list4.ListItems.Item(i2))).SubItems(3) & Val(Val(list2.ListItems.Item(Val(list4.ListItems.Item(i2))).SubItems(4)) + Val(txtoct.text))
        listnotes.ListItems.Item(listnotes.ListItems.Count).SubItems(1) = "1"
      
      
      '-- Première note
      ElseIf (opt3.Value = True) Then
        listnotes.ListItems.Add = list2.ListItems.Item(Val(list4.ListItems.Item(1))).SubItems(3) & Val(Val(list2.ListItems.Item(Val(list4.ListItems.Item(1))).SubItems(4)) + Val(txtoct.text))
        listnotes.ListItems.Item(listnotes.ListItems.Count).SubItems(1) = "1"
        
        
      'Dernière note
      Else
        listnotes.ListItems.Add = list2.ListItems.Item(Val(list4.ListItems.Item(list4.ListItems.Count))).SubItems(3) & Val(Val(list2.ListItems.Item(Val(list4.ListItems.Item(list4.ListItems.Count))).SubItems(4)) + Val(txtoct.text))
        listnotes.ListItems.Item(listnotes.ListItems.Count).SubItems(1) = "1"
      End If
    End If
  End If
    
  'Recherche note
  CounterNote = 0
  For i2 = DebutList To list2.ListItems.Count
    'Parcours list2 et recherche i=Début Temps
    If (i = Val(list2.ListItems.Item(i2).SubItems(1))) Then
      
      If (list2.ListItems.Item(i2) = "N") Then
        CounterNote = CounterNote + 1
        list4.ListItems.Add = i2
        list4.ListItems.Item(list4.ListItems.Count).SubItems(1) = 0
      End If
    
    Else
      Exit For
    End If
  Next i2
  
DebutList = i2
  
frm_dialog.ProgressBar.Value = i

CounterTime = CounterTime + 1

DoEvents
'For k = 0 To 100000000: Next k

i = i + 1
Wend

frm_dialog.Hide


Dans la fonction alternance comment veut-tu déterminer les répétitions alors que tu ne sais même quelles notes suivents et combien il y en a?
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

43

Je comprends pas trop ce que tu veux dire. Si tu transformes tes polynotes en 50 alternances de durée 0.5, qu'est ce qui t'empêche de directement les mettre en 25 alternances de durée 1 ?
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

44

J'ai trouvé une solution qui fonctionne mieux et bien plus rapide. wink
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.