Home | History | Annotate | Download | only in tools
      1 #!/usr/bin/python
      2 #
      3 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
      4 # Use of this source code is governed by a BSD-style license that can be
      5 # found in the LICENSE file.
      6 
      7 import sys
      8 
      9 def GenerateSimpleStep(name, max_volume, step_size):
     10   print '[%s]' % name
     11   print '  ; Generated by create_volume_curve.py'
     12   print '  ; simple_step curve, max %d, step %d' % (max_volume, step_size)
     13   print '  volume_curve = simple_step'
     14   print '  volume_step = %d' % step_size
     15   print '  max_volume = %d' % max_volume
     16 
     17 def WriteExplicitCurveVal(step, value):
     18   print '  db_at_%d = %d' % (step, value)
     19 
     20 def GenerateExplicit(name):
     21   print '[%s]' % name
     22   print '  ; Generated by create_volume_curve.py'
     23   print '  ; explicit curve'
     24   print '  volume_curve = explicit'
     25   for i in range(100):
     26     print 'Level at step %d:' % (100 - i)
     27     level = int(raw_input(">"))
     28     WriteExplicitCurveVal(100 - i, level)
     29   print 'Level at step 0:'
     30   level = int(raw_input(">"))
     31   WriteExplicitCurveVal(0, level)
     32 
     33 def GenerateTwoSlope(name, max_volume, step_1, step_2, pivot_point):
     34   print '[%s]' % name
     35   print '  ; Generated by create_volume_curve.py'
     36   print ('  ; two_slope, max = %d, pivot = %d, steps %d, %d' %
     37          (max_volume, pivot_point, step_1, step_2))
     38   print '  volume_curve = explicit'
     39   for i in range(0, (100 - pivot_point)):
     40     WriteExplicitCurveVal(100 - i, max_volume - step_1 * i)
     41   pivot_dB_val = max_volume - step_1 * (100 - pivot_point)
     42   WriteExplicitCurveVal(pivot_point, max_volume - step_1 * (100 - pivot_point))
     43   for i in range(1, pivot_point):
     44     WriteExplicitCurveVal(pivot_point - i,  pivot_dB_val - step_2 * i)
     45   WriteExplicitCurveVal(0, pivot_dB_val - pivot_point * step_2)
     46 
     47 def main():
     48   print 'What is the name of the jack or output to generate a curve for?'
     49   jack_name = raw_input(">");
     50   print 'Which type of curve? (simple_step, explicit, two_slope): '
     51   curve_type = raw_input(">");
     52   if curve_type == 'simple_step':
     53     print 'max volume (dBFS * 100):'
     54     max_volume = int(raw_input(">"))
     55     print 'step size (in dBFS * 100)'
     56     step_size = int(raw_input(">"))
     57     GenerateSimpleStep(jack_name, max_volume, step_size)
     58   elif curve_type == 'explicit':
     59     GenerateExplicit(jack_name)
     60   elif curve_type == 'two_slope':
     61     print 'max volume (dBFS * 100):'
     62     max_volume = int(raw_input(">"))
     63     print 'Volume step where slope changes:'
     64     pivot_point = int(raw_input(">"))
     65     print 'step size 100 to %d(in dBFS * 100)' % pivot_point
     66     step_1 = int(raw_input(">"))
     67     print 'step size %d to 0(in dBFS * 100)' % pivot_point
     68     step_2 = int(raw_input(">"))
     69     GenerateTwoSlope(jack_name, max_volume, step_1, step_2, pivot_point)
     70 
     71 if __name__ == '__main__':
     72   main()
     73