Welcome!
This is the community forum for my apps Pythonista and Editorial.
For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.
How to add image(s) from iPad camera roll to Pythonista image library
-
@Karina you can search mp3 in Google, import them in Pythonista and play them.
Or even play them as url. Try to search mp3 in the Pythonista forum -
@Karina just for the fun
import tempfile import sound import requests import ui def play(url): with tempfile.NamedTemporaryFile(suffix='.caf') as fp: r = requests.get(url) r.raise_for_status() fp.write(r.content) sound.play_effect(fp.name) v = ui.View() v.background_color = 'white' b_piano = ui.ButtonItem() b_piano.title = '🎹' def b_piano_action(sender): play('https://ccrma.stanford.edu/~jos/mp3/pno-cs.mp3') b_piano.action = b_piano_action b_violon = ui.ButtonItem() b_violon.title = '🎻' def b_violon_action(sender): play('https://ccrma.stanford.edu/~jos/mp3/violin.mp3') b_violon.action = b_violon_action v.right_button_items = (b_piano,b_violon) v.present('fullscreen')
-
I didn't understood how it should work)
This is what I have nowimport scene import sound import random import objc_util sw = scene.get_screen_size()[0] sh = scene.get_screen_size()[1] piano_sounds = ['piano:A3', 'piano:C3', 'piano:C4#', 'piano:D4', 'piano:E4', 'piano:F4', 'piano:G3#'] guitar_sounds = ['8ve:8ve-beep-warmguitar'] drum_sounds = ['drums:Drums_01', 'drums:Drums_04', 'drums:Drums_07', 'drums:Drums_10', 'drums:Drums_13', 'drums:Drums_16'] class ButtonNode(scene.ShapeNode): def __init__(self, action, icon, text_color, sounds, corner_radius=8, border_size=20, text='', name=f'ButtonNode', bg_color='white', anchor_point=(0.5, 0.5), borderColor=None, parent=None, position=(0, 0), size=(120, 45), enabled=True, animated_icon=False, icon_animation=None, *args, **kwargs): # these mainly for call to super() self.x, self.y = position self.w, self.h = size super().__init__( path=scene.ui.Path.rounded_rect(self.x, self.y, self.w, self.h, corner_radius), fill_color=bg_color, stroke_color=borderColor, shadow=None, parent=parent, *args, **kwargs) # Normal Properties for Instance() self.sounds=sounds self.enabled=enabled self.button_action=action self.name=name self.position=position self.size=size self.anchor_point=anchor_point # for border self.border_size=border_size self.borderColor=bg_color self.corner_radius=corner_radius # for icon self.icon_animation=icon_animation self.animated_icon=animated_icon self.icon=self._init_textures(icon) # for Label self.text=text self.text_color=text_color # Container to hold each component. # is just a dict version of self.children but specific. self.components=dict({ 'icon':None, 'label':None}) self._setup(self.icon, self.components) # Type Check to make sure img is a string or ui.Image def _init_textures(self, img): if type(img) == str or type(img) == scene.ui.Image: return scene.Texture(img) else: return None # setup our Components def _setup(self, i, c): if i != None: # button image c['icon']=scene.SpriteNode( texture=i, size=scene.Size(self.size[1]/100*80, self.size[1]/100*80), position=scene.Point(0, 0), parent=self, anchor_point=(0.5, 0.5), z_position=9) if self.text: # button text.. c['label']=scene.LabelNode( text=self.text, position=scene.Point(0 , 0), anchor_point=(0.5, 0.5), color=self.text_color, parent=self, z_position=10) # called when you tap the button def Button_Tapped(self): if self.components['icon']: if self.animated_icon and self.icon_animation: self.components['icon'].run_action(self.icon_animation()) if self.enabled: self.button_action(self) # custom action def my_button_action(sender): random_tone=random.choice(piano_sounds) play = random.choice(sender.sounds) if sender.sounds == piano_sounds: sound.set_volume(0.3) elif sender.sounds == guitar_sounds: sound.set_volume(1) sound.play_effect(play) sound.set_volume(0.5) return def Animation_Shake(duration=1.5): action_list=[] action_list.append( scene.Action.rotate_to(0.25, duration/10/2)) action_list.append( scene.Action.sequence( scene.Action.rotate_to(-0.5, duration/50), scene.Action.rotate_to(0.5, duration/50))) action_list.append( scene.Action.group( scene.Action.scale_to(1.0, duration/10/2), scene.Action.rotate_to(0.0, duration/10/2))) return scene.Action.sequence(action_list) def Animation_Pulse(duration=1.5): action_list=[] action_list.append( scene.Action.sequence( scene.Action.scale_to(1.2, duration/10/2), scene.Action.scale_to(0.5, duration/10/2))) action_list.append( scene.Action.scale_to(1.2, duration/50)) action_list.append( scene.Action.group( scene.Action.scale_to(1.0, duration/10/2))) return scene.Action.sequence(action_list) def Animation_Jump(duration=1.5): action_list=[] action_list.append( scene.Action.sequence( scene.Action.move_by(0, 20, duration/20), scene.Action.move_to(0, 0, duration/20))) return scene.Action.sequence(action_list) class main(scene.Scene): def setup(self): self.buttons=list([]) self.background_color='white' self.guitar=ButtonNode(size=scene.Size(160, 112), icon='emj:Guitar', text=None, text_color=self.background_color, parent=self, action=my_button_action, sounds=guitar_sounds, position=scene.Point(sw/6*1.5, sh/3), animated_icon=True, icon_animation=Animation_Shake) self.buttons.append(self.guitar) self.drum=ButtonNode(size=scene.Size(160, 112), icon='IMG_0098.JPG', sounds=drum_sounds, text=None, text_color=self.background_color, parent=self, action=my_button_action, position=scene.Point(sw/6*3, sh/2), animated_icon=True, icon_animation=Animation_Pulse) self.buttons.append(self.drum) self.piano=ButtonNode(size=scene.Size(100, 70), icon='emj:Musical_Keyboard', text=None, text_color=self.background_color, parent=self, action=my_button_action, sounds=piano_sounds, position=scene.Point(sw/6*5, sh/2), animated_icon=True, icon_animation=Animation_Jump) self.buttons.append(self.piano) self.quiter=ButtonNode(size=scene.Size(32, 32), text='X', text_color='black', parent=self, action=self.quit, sounds=None, position=scene.Point(sw-50, sh-50), borderColor='black', icon=None) self.buttons.append(self.quiter) def quit(self, sender): self.view.close() def touch_began(self, touch): for btn in self.buttons: if self.point_from_scene(touch.location) in btn.frame: btn.Button_Tapped() scene.run(main())
-
@Karina Sorry, I didn't understand your request. What I show is how to play an entire mp3, not a sound like standard ones. Sincerely sorry, forget my post.
-
@Karina you can download a mp3 file and store it in your folders, like an image.
And then, play it like a standard Pythonista file. -
@Karina run this little script once to download a mp3 as a Pythonista file
import requests url = 'https://ccrma.stanford.edu/~jos/mp3/pno-cs.mp3' with open('mypiano.mp3',mode='wb') as fil: r = requests.get(url) fil.write(r.content)
then run your script with this little modif
piano_sounds = ['mypiano.mp3']#piano:A3', 'piano:C3', 'piano:C4#', 'piano:D4', 'piano:E4', 'piano:F4', 'piano:G3#']
-
@cvp thanks, I'll try
-
@cvp Hi, I tried your approach: +, import, files, Browse, and pick an image file, say, abc.jpg. It imported the file into the current directory, say, /Examples/abc.jpg and the image of abc. But when I checked the + at the lower right corner of the script editor, then clicked open files. There is neither image of abc nor abc.jpg file. I would like to import an image file into + / images/files, so that I can easily enter the image using ui.Imag e.named().I did try many times and some how I did succeed once,but I couldn’t repeat. Please help. Thanks a lot.
-
@PinhoBD strange. In + / images / files, I see my thousands images, after some time, I agree
-
Thank you. I finally saw the file I imported a few hours before. Now I believe I did the right things. If I can repeat it the second time, I should be able to repeat it again and again. I appreciate your help!!