itunes, applescript, mixage de piste

boutemy

Membre confirmé
19 Août 2004
12
0
45
Bonjour!

Un gros manque d'iTunes est l'impossibilité de pouvoir enchainer en fondu le morceau que l'on écoute avec le suivant au moment ou on le désire (sans atendre la fin). bref, faire un crossfading au moment ou on le veut...

je me suis dit: tien, changeons la variable définissant la fin d'un morceau (finish of track) en la définissant a la position du player (player position) plus une dizaine de seconde et paf, iTunes va enchainer sur le morceau suivant..!

Hors, je me trouve confronter a un probléme: ce changement de variable (finish) ne prend effet que si l'on redémarre le morceau. sinon, itunes continue a lire le morceau au dela de finish comme si de rien n'était...

débutant depuis 24heure en Applescript, je me suis dit que de vieux routards pourraient peut etre m'apporter la solution?

voila mon script (très simple.... mais c'est un début!)

tell application "iTunes"
set track_1 to current track
set player_pos to player position + 15
set the finish of track_1 to player_pos

end tell

Que pourrais je modifier?

Merci de votre aide experimentée!

JohnB
 
heu...
iTunes > Préférences > Lecture > Lecture en fondu :siffle:

itunes_pref.png



EDIT : je n'avais pas compris ce que tu voulais, tu veux pouvoir enchaîner en fondu à n'importe quelle moment de la chanson. Alors désolé je ne peu pas te venir en aide :zen:
 
oui, exactement...
bien sur j'ai activé la lecture en fondu, mais, comme tu l'as dit, ca ne fonctionne que pour la fin du morceau...

mais en detournant son utilisation,c'est a dire en avancant la fin du morceau par la variable 'finish', on devrait pouvoir faire quelque chose, non?

O, vous, Applescripteurs! qu'en pensez vous?

JohnB
 
boutemy a dit:
oui, exactement...
bien sur j'ai activé la lecture en fondu, mais, comme tu l'as dit, ca ne fonctionne que pour la fin du morceau...

mais en detournant son utilisation,c'est a dire en avancant la fin du morceau par la variable 'finish', on devrait pouvoir faire quelque chose, non?

O, vous, Applescripteurs! qu'en pensez vous?

JohnB

A priori je ne saurais pas t'aider, mais c'est vraiment intéressant comme function !:up: :up:
Un mode shuffle tout en finesse! ;) :up:
 
Je pense qu'il y a moyen de moyenner :

tell application "iTunes"

set track_1 to current track
set player_pos to (player position + 15)
set the finish of track_1 to player_pos
stop
play track_1
set player position to (player_pos - 15)

end tell

ce que j'essaye de faire, et je ne suis aps sûr du tout que ça marche , c'est de stoper la lecture puis de la reprendre au même point (et du coup ça prendrait en compte la nouvelle fin).

Si ça peut aider :zen:

#PIAF : je viens d'essayer ça marche !!!!!!!!!! youpitralala :p
 
Bloc de code:
tell application "iTunes"
	
	set track_1 to current track
	set original_finish to the finish of track_1
	set player_pos to (player position + 15)
	set the finish of track_1 to player_pos
	stop
	play track_1
	set player position to (player_pos - 15)
	set the finish of track_1 to the original_finish
	
end tell

Comme ça il remet la fin de la chanson normalement pour les prochaines fois :zen:

Il n'y a plus qu'a mettre un raccourci clavier vers le script si on l'utilise souvent, et à régler la lecture en fondu dans les préférences d'iTunes.

Problème : il y a un petit temps (moins d'une seconde) ou la musique s'arrête.
 
Bloc de code:
tell application "iTunes"
	set player_state to the player state
	if (player_state as string) = "playing" then
		set track_1 to current track
		set original_finish to the finish of track_1
		set player_pos to (player position + 10)
		set the finish of track_1 to player_pos
		stop
		play track_1
		set player position to (player_pos - 10)
		set the finish of track_1 to the original_finish
	end if
end tell
Comme ça On regarde si iTunes est en train de jouer quelque chose avant. (ça évite un bug).
 
bravo! :up: et merci pour votre aide!

c'est pas mal du tout...

pour restituer le finish du premier morceau, on peut le mettre à la valeur 0, ca le remet à sa valeur par défaut, c'est a dire la fin réelle du morceau.

j'ai trouvé un moyen de racourcir un peu la pause mais ca serait bien si on pouvait la faire diparaitre completement!
Connaitriez vous la commande "refresh" dans iTunes? peut etre qu'elle pourrait resoudre le probléme, mais je ne comprens pas bien la syntaxe...

Bloc de code:
tell application "iTunes"
	set player_state to the player state
	if (player_state as string) = "playing" then
		set track_1 to current track
		set player_pos to (player position + 10)
		set the finish of track_1 to player_pos
		playpause
		playpause
		set the finish of track_1 to 0
	end if
end tell

merci pour votre aide :zen:
JohnB
 
Je n'arrive vraiment pas a utiliser "refresh". :hein:

pourtant il me semble que ca permettrai d'eviter d'utiliser cette astuce de "playpause playpause" qui me parait qd meme bien grossière pour un programme applescript!
(et pourtant seul moyen trouvé de remettre a jour de facon efficace la variable "finish" du morceau...)

des idées? :confused:

johnb
 
boutemy a dit:
Je n'arrive vraiment pas a utiliser "refresh". :hein:

pourtant il me semble que ca permettrai d'eviter d'utiliser cette astuce de "playpause playpause" qui me parait qd meme bien grossière pour un programme applescript!
(et pourtant seul moyen trouvé de remettre a jour de facon efficace la variable "finish" du morceau...)

des idées? :confused:

johnb
normalement ça devrait donner quelque chose comme ça :
Bloc de code:
tell application "iTunes"
	set player_state to the player state
	if (player_state as string) = "playing" then
		set track_1 to current track
		set player_pos to (player position + 5)
		set the finish of track_1 to player_pos
		refresh track_1
		set the finish of track_1 to 0
	end if
end tell

Sauf que ça ne marche pas : le refresh n'a aucun effet !

je comprends pas...
 
boutemy a dit:
Bonjour!

Un gros manque d'iTunes est l'impossibilité de pouvoir enchainer en fondu le morceau que l'on écoute avec le suivant au moment ou on le désire (sans atendre la fin). bref, faire un crossfading au moment ou on le veut...

JohnB

Ah ! je ne suis pas tout seul à vouloir cette fonction ! :rolleyes:
 
  • J’aime
Réactions: Tucpasquic
oui! Je crois que c'est une fonction en fait assez demandée et il est curieux qu'apple n'est pas intégré ca dans son logiciel. Ca ferait d'iTunes une veritable petite station de DJeeing rapide et simple.

Je connais la plupart des soft que l'on t'a proposé sur ton post, mais aucun n'a la souplesse d'utilisation des dernières versions d'iTunes...

d'ou l'utilité de ce petit programme qui peut avoir de l'avenir!!

Je rappelle le principe, pour ceux qui n'ont pas (ou ne désirent pas :-) lire tout le topic:

permettre d'enchainer en fondu 2 morceau dans iTunes, au moment ou on le désire (et pas obligatoirement à la fin). L'idée étant d'utiliser la variable "finish" of "track" pour avancer virtuellement la fin du morceau et forcer iTunes à faire un crossfading (l'option crossfading étant bien évidement coché dans les préférences de l'application).

Le probléme actuel (cf le script ci dessus) est que pour qu'iTunes prenne en compte ce changement de variable, on est obligé de passer par un arret et une reprise du morceau (ici la commande playpause répétée 2 fois...). Ce qui est très disgracieux puisqu'il provoque une pause dans le morceau!

Une idée d'un Applescripteur? :heu:

JohnB
 
boutemy a dit:
oui! Je crois que c'est une fonction en fait assez demandée et il est curieux qu'apple n'est pas intégré ca dans son logiciel. Ca ferait d'iTunes une veritable petite station de DJeeing rapide et simple.

Je connais la plupart des soft que l'on t'a proposé sur ton post, mais aucun n'a la souplesse d'utilisation des dernières versions d'iTunes...

d'ou l'utilité de ce petit programme qui peut avoir de l'avenir!!

Je rappelle le principe, pour ceux qui n'ont pas (ou ne désirent pas :-) lire tout le topic:

permettre d'enchainer en fondu 2 morceau dans iTunes, au moment ou on le désire (et pas obligatoirement à la fin). L'idée étant d'utiliser la variable "finish" of "track" pour avancer virtuellement la fin du morceau et forcer iTunes à faire un crossfading (l'option crossfading étant bien évidement coché dans les préférences de l'application).

Le probléme actuel (cf le script ci dessus) est que pour qu'iTunes prenne en compte ce changement de variable, on est obligé de passer par un arret et une reprise du morceau (ici la commande playpause répétée 2 fois...). Ce qui est très disgracieux puisqu'il provoque une pause dans le morceau!

Une idée d'un Applescripteur? :heu:

JohnB
Si on lis le topic, on voit que l'on a réussi à le faire ...


Le seule petit problème et que le son se coupe pendant une petite periode (moins d'une seconde). mais ça marche très bien !
 
super le script juste ce qu'il me manquait...
depuis le dernier post (30 / 05 / 06) personne n'a trouvé le moyen d'eviter le double playpause?
 
super le script juste ce qu'il me manquait...
depuis le dernier post (30 / 05 / 06) personne n'a trouvé le moyen d'eviter le double playpause?
j'avais continué à chercher mais j'ai pas trouvé... peut-être que le refresh marche dans iTunes 7, faudrait essayer, mais ça m'étonnerais que cette version d'iTunes corrige des bug, vu qu'elle en a plutôt amené :D

;)
 
non j'ai essayé avec le refresh et j'ai du le remplacer par un double playpause
c'est vrai que la pause est assez discrète mais cela serait encore mieux sans...
j'ai remplacé le double playpaue par un pause suivi d'un play : cela raccourcit encore un peu la pause car le script n'a pas a vérifier l'état du lecteur entre le pause et le play (et cela ne pose pas de problème car l'état de ce même lecteur avait été vérifié un peu plus tôt)
 
ben finalement y'a quand même un souci avec itunes 7 : le script fonctionne sans problème quand il est exécuté par l'éditeur de script mais ne donne rien quand il est exécuté par itunes:confused:

pour info le code que j'utilise
tell application "iTunes"
set player_state to the player state
if (player_state as string) = "playing" then
set track_1 to current track
set player_pos to (player position + 10)
set original_finish to the finish of track_1
set the finish of track_1 to player_pos
pause
play
set the finish of track_1 to original_finish
end if
end tell
 
oui il y avait le même problème avant, mais à mon avis c'est à cause du "tell application..." il faudrait plutôt mettre "on run" ou "on event xxx" avec xxx un truc spéciale pour iTunes.

Faudrait trouver la doc quelque part...
Je veux bien mais alors dis moi pourquoi sur la dizaine de scripts que j'ai pour itunes ( démarrant tous par tell application "itunes") c'est le seul à planter... ? tu n'es pas sur que cela vienne d'ailleurs?