Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ENHANCEMENT] Tracks automatisch anlegen anhand des Input-Levels des Interfaces #441

Open
mespotine opened this issue Apr 9, 2023 · 1 comment
Labels
enhancement New feature or request

Comments

@mespotine
Copy link
Contributor

Mit hilfe eines Assistants die zu verwendenden Tracks im Projekt automatisch anlegen.

Grundlage hierfür ist die Aktivität der verwendeten Inputs. Sprich: wenn an Input 1 und 3 ein Mikrofon hängt, so wird die Lautstärke höchstwahrscheinlich nicht 0 sein, weil immer irgendwelche Hintergrundgeräusche existieren.
Man definiert also einen Treshhold, ab dem der Input als "den nehmen wir" genommen werden soll und legt entsprechend Tracks an.

Beispiel könnte ein Assistent sein, bei dem alle Beteiligten mal kurz was in ihr Mikrofon sprechen müssen und wenn der Assistent Pegel erkennt, wird der Input als grün markiert angezeigt, während alle anderen Inputs als rot markiert werden.
So sieht man auch sofort, ob die Mikrofone korrekt angeschlossen sind.

Man könnte sowas auch in den Soundcheck einbauen: man checkt(wenn keine Aufnahme läuft), ob die Inputs, die im Projekt verwendet werden, Pegel haben und warnt, wenn irgendein Input auf -144dB liegt(sprich leise ist) um so sofort technische Problemen zu erkennen mit nicht funktionierenden Mikrofonen.

@mespotine mespotine added the enhancement New feature or request label Apr 9, 2023
@mespotine
Copy link
Contributor Author

mespotine commented Apr 9, 2023

Reaper hat dafür die Funktion GetInputActivityLevel, die für den ausgewählten Input des Interfaces die derzeitige Lautstärke zurück gibt.

Hier ist Democode, der anzeigt, wie die Inputlevel von input 1 und 2 aussehen:

gfx.init()
gfx.setfont(1, "Arial", 20, 0)
Atab={} -- levels of input 1
Atab2={} -- levels of input 2
i=0
i2=0

function main()
  if i<100 then i=i+1 else table.remove(Atab, 1) end
  
  --[[ Input 1 ]]
  
  -- Get Input Activity-Level of input 1
  Atab[i]=reaper.GetInputActivityLevel(0)

  -- draw input activity level input 1
  for a=1, #Atab do
    gfx.set((Atab[a]/100)+1, (Atab[a]/70)+1, (Atab[a]/30)+5)
    gfx.line(a,(-Atab[a]), a, 150)
    gfx.set(1)
    gfx.line(1, 150, a, 150)
    if a==#Atab then
      gfx.line(a,(-Atab[a]), a+40, (-Atab[a]))
      gfx.x=a+9
      gfx.y=-Atab[a]+9
      gfx.set(1)
      gfx.drawstr(math.floor(Atab[a]).." dB - Input 1 Activity")
    end
  end
  
  if i2<100 then i2=i2+1 else table.remove(Atab2, 1) end
  
  
  --[[ Input 2 ]]
  
  -- Get Input Activity-Level of input 2
  Atab2[i2]=reaper.GetInputActivityLevel(1)
  
  -- draw input activity level input 2
  for a=1, #Atab2 do
    gfx.set((Atab2[a]/100)+1, (Atab2[a]/70)+1, (Atab2[a]/30)+5)
    gfx.line(a,(-Atab2[a]+160), a, 150+160)
    gfx.set(1)
    gfx.line(1, 150+160, a, 150+160)
    if a==#Atab2 then
      gfx.line(a,(-Atab2[a])+160, a+40, (-Atab2[a])+160)
      gfx.x=a+9
      gfx.y=-Atab2[a]+160
      gfx.drawstr(math.floor(Atab2[a]).." dB - Input 2 Activity")
    end
  end
  reaper.defer(main)
end


main()

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant