Collection of tools useful for audio production
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
2.4KB

  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. # Imports (Global)
  4. import os
  5. from PyQt4.QtCore import QProcess, QSettings
  6. from time import sleep
  7. # Imports (Custom Stuff)
  8. from shared import *
  9. # Default Plugin PATHs
  10. DEFAULT_LADSPA_PATH = [
  11. os.path.join(HOME, ".ladspa"),
  12. os.path.join("/", "usr", "lib", "ladspa"),
  13. os.path.join("/", "usr", "local", "lib", "ladspa")
  14. ]
  15. DEFAULT_DSSI_PATH = [
  16. os.path.join(HOME, ".dssi"),
  17. os.path.join("/", "usr", "lib", "dssi"),
  18. os.path.join("/", "usr", "local", "lib", "dssi")
  19. ]
  20. DEFAULT_LV2_PATH = [
  21. os.path.join(HOME, ".lv2"),
  22. os.path.join("/", "usr", "lib", "lv2"),
  23. os.path.join("/", "usr", "local", "lib", "lv2")
  24. ]
  25. DEFAULT_VST_PATH = [
  26. os.path.join(HOME, ".vst"),
  27. os.path.join("/", "usr", "lib", "vst"),
  28. os.path.join("/", "usr", "local", "lib", "vst")
  29. ]
  30. # ALSA file-type indexes
  31. iAlsaFileNone = 0
  32. iAlsaFileLoop = 1
  33. iAlsaFileJACK = 2
  34. iAlsaFilePulse = 3
  35. iAlsaFileMax = 4
  36. # Global Settings
  37. GlobalSettings = QSettings("Cadence", "GlobalSettings")
  38. # Get Process list
  39. # TODO - Windows support, others
  40. def getProcList():
  41. retProcs = []
  42. process = QProcess()
  43. process.start("ps", ["-e"])
  44. process.waitForFinished()
  45. processDump = process.readAllStandardOutput().split("\n")
  46. for i in range(len(processDump)):
  47. if (i == 0): continue
  48. dumpTest = str(processDump[i], encoding="utf-8").rsplit(":", 1)[-1].split(" ")
  49. if len(dumpTest) > 1 and dumpTest[1]:
  50. retProcs.append(dumpTest[1])
  51. return retProcs
  52. def stopAllAudioProcesses():
  53. process = QProcess()
  54. procsTerm = ["a2j", "a2jmidid", "artsd", "jackd", "jackdmp", "knotify4", "lash", "ladishd", "ladiappd", "ladiconfd", "jmcore"]
  55. procsKill = ["jackdbus", "pulseaudio"]
  56. tries = 20
  57. process.start("killall", procsTerm)
  58. process.waitForFinished()
  59. for x in range(tries):
  60. procsList = getProcList()
  61. for term in range(len(procsTerm)):
  62. if term in procsList:
  63. break
  64. else:
  65. sleep(0.1)
  66. else:
  67. break
  68. process.start("killall", ["-KILL"] + procsKill)
  69. process.waitForFinished()
  70. for x in range(tries):
  71. procsList = getProcList()
  72. for kill in range(len(procsKill)):
  73. if kill in procsList:
  74. break
  75. else:
  76. sleep(0.1)
  77. else:
  78. break