scripting : print "Hello world!" ect...
  • User avatar
    Vincent-Pimousse
    super8 member
    Posts: 131
    Joined: Tue Oct 09, 2007 8:50 pm
    Location: Toulouse, FR

    scripting : print "Hello world!" ect...

    by Vincent-Pimousse » Wed Feb 13, 2008 11:48 pm

    Bonjour,
    j'aimerais modifier quelques modules mais les début sont difficiles.
    je veux reproduire l'exemple de la doc, en faisant dans un nouveau module, partie init() :

    Code: Select all

    print "hello"
    #ou
    #print  “hello”

    La seconde syntaxe pour les guillemets produit une erreur.
    Avec la premiere syntaxe pas d'erreur mais je ne vois pas où s'affiche hello. Il me semble que ça devrait s'afficher proche de l'ecriture MODUL8V254 mais je n'observe aucun changement.
    Avez-vous une idée du problème ?
  • User avatar
    sigmasix
    master
    Posts: 1224
    Joined: Thu Dec 02, 2004 2:12 pm
    Location: gva | switzerland
    Contact:

    by sigmasix » Thu Feb 14, 2008 10:01 am

    Dans le menu modules tu as un sous menu script et la tu as "Show script output" c'est la que tout les print seront affichés. pour les guillemets, a mon avis c'est normal que ca marche pas avec la 2e syntaxe, si t'as pioché ca dans la doc ca doit être une erreur... ya pas de guillemets typographiques en programmation :roll:
  • User avatar
    Vincent-Pimousse
    super8 member
    Posts: 131
    Joined: Tue Oct 09, 2007 8:50 pm
    Location: Toulouse, FR

    by Vincent-Pimousse » Fri Feb 15, 2008 11:53 pm

    Merci pour ta réponse sigma6.
    J'aimerais faire une légère modif du module RANDOM CROP (LAYER).
    Actuellement on règle la vitesse manuellement et je voudrais plutôt qu'elle soit définit suivant le bpm du module BPM GLOBAL.
    J'ai essayé quelque chose sans succès, modifier cette dernière ligne de la partie Periodicalevent(elapsed) :

    Code: Select all

    #ligne de code originale :
    count -= elapsed * ctrl_speed * masterSpeed * 30
    #j'ai essayé en vain :
    #count -= elapsed * sharedDict['BMP_POSITION'] / 60  * masterSpeed * 30

    Je crois que le problème est que sharedDict['BMP_POSITION'] n'est pas une variable 'constante', elle évolue régulièrement suivant le temps, mais à quoi correspond t-elle exactement ?
    Aussi y a t-il une doc sur le dictionnaire global ?
  • User avatar
    sigmasix
    master
    Posts: 1224
    Joined: Thu Dec 02, 2004 2:12 pm
    Location: gva | switzerland
    Contact:

    by sigmasix » Sat Feb 16, 2008 6:02 pm

    il faut que tu définisse ton BPM en utilisant le module BPM. essaie de printer la valeur du bpm dans ton module? peut-être que ton module ne reçoit pas les valeurs du bpm... Tu peux aussi regarder les module BPM router pour voir comment a valeur du BPM est récupérée.
    A part le pdf filé avec modul8, il n'y a pas d'autre documentation à propos des modules...
  • User avatar
    Vincent-Pimousse
    super8 member
    Posts: 131
    Joined: Tue Oct 09, 2007 8:50 pm
    Location: Toulouse, FR

    by Vincent-Pimousse » Sat Feb 16, 2008 7:34 pm

    En fait sharedDict['BMP_POSITION'] ne correspond pas à la valeur du bpm divisée par 60 mais une sorte de compteur de 0 à 100 nombres rééls où l'apparition de chaque entier correspond au bpm. Bref il faut utiliser sharedDict['BPM_SPEED'] ainsi que le dernier module BPM GLOBAL de (vs).

    Pour régler l'effet du module RANDOM CROP suivant le bpm, modifier la dernière ligne de la partie Periodicalevent(elapsed) :

    Code: Select all

    #ligne de code originale :
    #count -= elapsed * ctrl_speed * masterSpeed * 30
    #nouvelle ligne de code :
    count -= elapsed * sharedDict['BPM_SPEED'] * masterSpeed
    #test au besoin pour vérifier que la valeur du bpm est bien récupérée au niveau du module :
    #print sharedDict['BPM_SPEED'] * 60
    #penser à bien indenter par rapport au else
    #sharedDict['BPM_SPEED'] n'existe pas avec le module BPM GLOBAL original, utiliser celui de (vs)

    Ajouter dans init() :

    Code: Select all

    sharedDict = module.getSharedDictionary()



    Je vais de ce pas faire la même chose pour le module slide show...
    Donc suivant le même principe :

    Code: Select all

    count += 4*1/sharedDict['BPM_SPEED']
    #au lieu de
    #count += (ctrl_deltaSpeed- ctrl_speed * ctrl_deltaSpeed)

    On a ainsi un changement de média tous les 4 temps. Pour l'interface graphique, on verra plus tard :P
    Edit : Une interface graphique est opérationnelle, voir ce sujet
    Last edited by Vincent-Pimousse on Sun Mar 09, 2008 4:04 pm, edited 1 time in total.
  • User avatar
    Vincent-Pimousse
    super8 member
    Posts: 131
    Joined: Tue Oct 09, 2007 8:50 pm
    Location: Toulouse, FR

    by Vincent-Pimousse » Sun Feb 17, 2008 12:47 pm

    Bonjour,
    je voudrais savoir comment ajouter des bibliotheques.pi ?
    quelque chose du genre import truc.pi mais comment écrire un chemin absolu ou existe t-il un répertoire de travail par défaut dans mac os x ?

    Aussi quel est le mot clé correspond au volume sonore de l'entrée micro ? j'ai tenté un print sharedDict mais j'ai l'impression que je n'obtiens pas tous les termes du dictionnaire.
  • User avatar
    sigmasix
    master
    Posts: 1224
    Joined: Thu Dec 02, 2004 2:12 pm
    Location: gva | switzerland
    Contact:

    by sigmasix » Sun Feb 17, 2008 7:35 pm

    le volume du micro est un mot clé de modul8. Il change entre la 2.5.4 et la 2.5.5 beta. dans la 2.5.5 beta, tu peux faire modul8.getValue('direct_soundInputLevel',0)
    Sinon, le keyword browser est la pour t'aider, c'est la qu'il y a tout les mots clés.

    Pour ce qui est des librairie externes, je sais pas trop, il y en a déjà pleins de pré installées, je ne sais pas trop si ca peut marcher d'importer un .py maison dans modul8
  • User avatar
    Vincent-Pimousse
    super8 member
    Posts: 131
    Joined: Tue Oct 09, 2007 8:50 pm
    Location: Toulouse, FR

    by Vincent-Pimousse » Sun Feb 17, 2008 9:00 pm

    Je voudrais simplement importer les bibliothèques corresppndantes à numpy et scipy permettant l'utilisation d'outils scientifiques comme l'analyse spectrale (fft ou fast fourier transform). L'idée serait alors de différencier chaque gamme de fréquence de l'entrée sound in.

    Je suis au début de mes recherches , je n'ai pas encore mis la main sur les fichiers.py mais cela semble très interressant :
    http://numpy.scipy.org/
    http://ftp.traduc.org/doc-vf/gazette-linux/html/2005/115/lg115-A.html
    http://charleshebert.info/files/python/tp_sujet.pdf

    Donc peut-importer des fichiers.py dans un répertoire particulier de mac os x ou existe t-il une syntaxe en python pour désigner l'import depuis un répertoire particulier ?
  • User avatar
    sigmasix
    master
    Posts: 1224
    Joined: Thu Dec 02, 2004 2:12 pm
    Location: gva | switzerland
    Contact:

    by sigmasix » Sun Feb 17, 2008 9:51 pm

    je ne pense tout simplement pas que tu puisse importer un fichier .py en tant que librairie...
    Pire encore, pour le moment il n'es pas possible de récupérer la courbe FFT du son dans modul8, le keyword ne te donne qu'une valeur de volume comprise entre 0.0 et 0.1
    A moins que tu trouve un moyen d'importer l'entrée son de l'ordinateur directement dans python, sans passer par le keyword modul8, mais je suis pas sur que python soit capable de faire ca ni que les performances soient aussi bonnes que modul8...
  • User avatar
    Vincent-Pimousse
    super8 member
    Posts: 131
    Joined: Tue Oct 09, 2007 8:50 pm
    Location: Toulouse, FR

    by Vincent-Pimousse » Mon Feb 18, 2008 12:28 am

    Je ne pensais pas que le signal 'sound in' ne correspondait pas directement à l'entrée micro. J'ai fais quelques test avec des sons et c'est marrant (ou frustrant) de voir que le signal réagit moins bien qu'avec du bruit et qu'il n'y a pas de grosses différences entre LA grave et LA aigue et une différence importante entre SOL et LA. J'entends par bruit un simple jet d'air (avec un mouvement rapide de la main ou en toussant) à hauteur du micro de l'imac.

    Tout bien considéré j'aurais plus rapidement réalisé un filtre hardware et je pourrais filtrer un minimum le bruit (y'a plus qu'à récupérer un micro...) Par contre ce sera à optimiser en live. Pour n'avoir fait qu'une soirée je n'ai pas trop l'expérience des gros sound system mais j'avais un peu de mal à utiliser l'entrée sound in :
    Etant arrosé par les enceintes, le micro saturait (même en diminuant un max le SOUND LEVEL IN). J'avais du alors mettre de la patte à fixe sur le micro, ça marchait alors à peu près mais avec un temps de latence plus important que d'habitude. Comme si le volume d'air emprisonné par la patte à fixe faisait tampon. heu c'est vrai que c'était un peu le but mais sans vouloir ralentir la chaîne :P
  • User avatar
    sigmasix
    master
    Posts: 1224
    Joined: Thu Dec 02, 2004 2:12 pm
    Location: gva | switzerland
    Contact:

    by sigmasix » Mon Feb 18, 2008 1:20 am

    l'idéal c'est d'avoir une sortie jack de la table son, tu peux mieux gérer le niveau. sinon, il faut régler les préférences système son le plus faible possible, sinon le micro sature et le niveau sonore est bloqué au max, même si dans modul8 tu est au plus bas... en généralca passe, a moins d'avoir l'ordi dans les hp, mais à ce niveau la tu mets un peu ta santé en danger, vaut mieux éviter :lol:
  • User avatar
    Vincent-Pimousse
    super8 member
    Posts: 131
    Joined: Tue Oct 09, 2007 8:50 pm
    Location: Toulouse, FR

    by Vincent-Pimousse » Mon Feb 18, 2008 1:28 am

    Ah bon, j'aurais mis ma santé en danger :lol: c'est vrai que c'est plus propre en récupérant le son de la table de mix... mais un ptit filtre à portée de main ça pourrait être sympa

    pfff ça aide de se faire conseiller !
    merci encore

    :arrow: Pour conclure sur l'utilisation de codes sources permettant une analyse spectrale, le plus simple serait peut-être de traiter cela en dehors de modul8 et de lui communiquer un signal par midi.
    Pas forcément beaucoup de prog mais vu qu'on peut s'en passer...

    :idea: Je viens de trouver ce dont j'imaginais mais valable seulement pour les power pc faute de moyens : KTDrumTrigger Audio plugin
    Grossièrement, il s'agit de trois filtres qui génèrent chacun un signal midi cc.
    D'autres projets, ENV2MIDI et FFTtools de mdsp
    Il sont d'après le site midiplugins compatibles OS X mais pour intel je ne sais pas. (notez également le site audiomastermind bien placé dans le référencement des plugins).
    ENV2MIDI et FFTtools sont des .VST savez-vous ce que cela implique ?
    Edit : :arrow: Visiblement les .VST sont des plugins d'effet audio donc faudrait trouver un programme sous mac qui interprète les .VST, supporte l'entrée ligne et génère des signaux midi (ou autre chose pour faire un lien avec m8 ) pour avoir une chance de détecter le tempo. A quand la v3 (!)
    Last edited by Vincent-Pimousse on Sun Mar 09, 2008 1:32 am, edited 1 time in total.
  • User avatar
    Vincent-Pimousse
    super8 member
    Posts: 131
    Joined: Tue Oct 09, 2007 8:50 pm
    Location: Toulouse, FR

    by Vincent-Pimousse » Wed Mar 05, 2008 7:15 pm

    Bonjour,
    comment est-il possible de récupérer le nom du média source actif sur un calque ?
  • User avatar
    sigmasix
    master
    Posts: 1224
    Joined: Thu Dec 02, 2004 2:12 pm
    Location: gva | switzerland
    Contact:

    by sigmasix » Wed Mar 05, 2008 9:00 pm

    Code: Select all

    nom = modul8.getValue('info_layer_media_name',0)



    n'oublie pas qu'il y a un keyword browser dans le menu modules
  • User avatar
    Vincent-Pimousse
    super8 member
    Posts: 131
    Joined: Tue Oct 09, 2007 8:50 pm
    Location: Toulouse, FR

    by Vincent-Pimousse » Wed Mar 05, 2008 9:58 pm

    oups désolé j'avais un peu zappé pour le keyboard browser :oops:

    J'ai un petit soucis : je voudrais saisir un code couleur en hexa mais le champ de texte que j'utilise renvoi une variable de type unicode. Du coup je ne peux pas effectuer de comparaison bit à bit (masquer des bits) ou de décalages.
    Est-il possible de convertir la valeur unicode représentant le code héxa en entier ?
    Le seul truc encore très brouillon que j'ai réussi à faire pour passer d'une chaine de caractère à un nombre c'est

    Code: Select all

    print maSaisie.encode("hexa")

    mais on est d'accord c'est à priori bidon : Si je saisi 0 j'obtiens 30 soit le numéro de caractère dans la table unicode/ascii. Je peux alors tester tous les caractères qui m'intéresses mais dois y avoir une fonction qui fait ça, non ?
    Edit : J'y ai repensé et finalement c'est pas si "bidon" que ça : Je peux faire très simplement la conversion code du caractère unicode vers sa valeur en hexa, il suffit de tester. Par exemple je sais que 0 vaut 30 en unicode, 1 => 31, 2 => 32...

Who is online

Users browsing this forum: No registered users and 16 guests